冲突解决

This commit is contained in:
glj 2023-04-17 09:33:40 +08:00
commit 2a40e0d3b2
30 changed files with 452 additions and 166 deletions

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

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
/**
@ -11,6 +13,7 @@ import java.io.Serializable;
* @TableName contact
*/
@TableName(value ="contact")
@Data
public class Contact implements Serializable {
/**
* 用户姓名
@ -37,123 +40,28 @@ public class Contact implements Serializable {
*/
private Long id;
/**
* 留言时间
*/
private String contactDate;
/**
* 回复时间
*/
private String replyDate;
/**
* 状态
*/
private int status;
/**
* 回复内容
*/
private String text;
/**
* 回复主题
*/
private String subject;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/**
* 用户姓名
*/
public String getUserName() {
return userName;
}
/**
* 用户姓名
*/
public void setUserName(String userName) {
this.userName = userName;
}
/**
* 电子邮件
*/
public String getEmail() {
return email;
}
/**
* 电子邮件
*/
public void setEmail(String email) {
this.email = email;
}
/**
* 组织
*/
public String getOrganization() {
return organization;
}
/**
* 组织
*/
public void setOrganization(String organization) {
this.organization = organization;
}
/**
* 意见建议
*/
public String getMessage() {
return message;
}
/**
* 意见建议
*/
public void setMessage(String message) {
this.message = message;
}
/**
* 数据自增列
*/
public Long getId() {
return id;
}
/**
* 数据自增列
*/
public void setId(Long id) {
this.id = id;
}
@Override
public boolean equals(Object that) {
if (this == that) {
return true;
}
if (that == null) {
return false;
}
if (getClass() != that.getClass()) {
return false;
}
Contact other = (Contact) that;
return (this.getUserName() == null ? other.getUserName() == null : this.getUserName().equals(other.getUserName()))
&& (this.getEmail() == null ? other.getEmail() == null : this.getEmail().equals(other.getEmail()))
&& (this.getOrganization() == null ? other.getOrganization() == null : this.getOrganization().equals(other.getOrganization()))
&& (this.getMessage() == null ? other.getMessage() == null : this.getMessage().equals(other.getMessage()))
&& (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()));
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((getUserName() == null) ? 0 : getUserName().hashCode());
result = prime * result + ((getEmail() == null) ? 0 : getEmail().hashCode());
result = prime * result + ((getOrganization() == null) ? 0 : getOrganization().hashCode());
result = prime * result + ((getMessage() == null) ? 0 : getMessage().hashCode());
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
return result;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", userName=").append(userName);
sb.append(", email=").append(email);
sb.append(", organization=").append(organization);
sb.append(", message=").append(message);
sb.append(", id=").append(id);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();
}
}

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

@ -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

@ -12,6 +12,5 @@ import org.springframework.cloud.client.SpringCloudApplication;
public class VoRdmApplication {
public static void main(String[] args) {
BladeApplication.run("glj-"+CommonConstant.KN_VORDM_MODULE_NAME, VoRdmApplication.class, args);
// BladeApplication.run("zqq-" + 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

@ -3,7 +3,9 @@ package com.kening.vordm.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.kening.vordm.entity.Email;
import com.kening.vordm.service.ContactService;
import com.kening.vordm.service.EmailService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@ -11,6 +13,7 @@ import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springblade.core.mp.support.Query;
@ -18,6 +21,7 @@ import org.springframework.web.bind.annotation.*;
import com.kening.vordm.entity.Contact;
import java.util.Arrays;
import java.util.Date;
@RestController
@AllArgsConstructor
@ -32,6 +36,8 @@ public class ContactController{
})
@GetMapping("/list")
public R<IPage<Contact>> list(Contact contact, Query query) {
QueryWrapper<Contact> queryWrapper = Condition.getQueryWrapper(contact);
queryWrapper.orderByDesc("contact_date");
IPage<Contact> pages = contactService.page(Condition.getPage(query), Condition.getQueryWrapper(contact));
return R.data(pages);
}
@ -64,7 +70,37 @@ public class ContactController{
@ApiOperation(value = "提交", notes = "传入Contact")
@PostMapping("/submit")
public R submit(@ApiParam(value = "Contact对象", required = true) @RequestBody Contact contact) {
contact.setContactDate(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
return R.status(contactService.saveOrUpdate(contact));
}
private final EmailService emailService;
@ApiOperationSupport(order = 6)
@ApiOperation(value = "提交", notes = "传入Contact")
@PostMapping("/sendEmail")
public R sendEmail(@ApiParam(value = "Contact对象", required = true) @RequestBody Contact contact) {
contact.setReplyDate(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
contact.setStatus(1);
Email email = new Email();
email.setSubject(contact.getSubject());
email.setText(contact.getText());
String [] to = new String[]{contact.getEmail()};
email.setTos(to);
email.setHtmlText(true);
try {
emailService.sendMimeMessage(email);
return R.status(contactService.saveOrUpdate(contact));
} catch (Exception e) {
return R.fail("发送失败");
}
}
@ApiOperationSupport(order = 8)
@ApiOperation(value = "详情", notes = "传入id")
@GetMapping("/observed")
public R<String> observed(@ApiParam(value = "主键", required = true) @RequestParam String id) {
Contact contact = new Contact();
contact.setId(Long.valueOf(id));
contact.setStatus(2);
return R.data(contactService.updateById(contact)? "ok" : "false");
}
}

View File

@ -329,4 +329,13 @@ public class DisasterInfoController {
Boolean flag=disasterInfoService.updateById(disasterInfo);
return R.data(flag);
}
/**
* 后台管理系统-控制台灾害各项统计
* @return
*/
@GetMapping("/statistics")
public R statistics(){
return R.data(disasterInfoService.statistics());
}
}

View File

@ -4,8 +4,10 @@ import com.kening.vordm.entity.Email;
import com.kening.vordm.service.EmailService;
import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -15,13 +17,15 @@ import javax.mail.MessagingException;
@RequestMapping("/ui/email")
@RequiredArgsConstructor
@Api(value = "邮箱发送", tags = "邮箱发送")
@Slf4j
public class EmailController {
private final EmailService emailService;
@PostMapping("/emailSend")
public R emailSend(Email email) {
public R emailSend(@RequestBody Email email) {
try {
log.info("email:{}", email.getText());
emailService.sendMimeMessage(email);
return R.success("OK");
} catch (MessagingException e) {

View File

@ -1,8 +1,16 @@
package com.kening.vordm.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.kening.vordm.entity.Contact;
import com.kening.vordm.entity.DisasterInfo;
import com.kening.vordm.entity.News;
import com.kening.vordm.service.NewsService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
@ -48,4 +56,31 @@ public class NewsController {
public void export(Long disasterId,Integer type,HttpServletRequest request, HttpServletResponse response){
newsService.export(disasterId,type,request,response);
}
@ApiOperationSupport(order = 1)
@ApiOperation(value = "分页", notes = "News")
@ApiImplicitParams({
@ApiImplicitParam(name = "current", value = "当前页", paramType = "query", dataType = "int"),
@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query", dataType = "int")
})
@GetMapping("/list")
public R<IPage<News>> list(News news, Query query) {
QueryWrapper<News> queryWrapper = Condition.getQueryWrapper(news);
queryWrapper.orderByDesc("contact_date");
IPage<News> pages = newsService.page(Condition.getPage(query), Condition.getQueryWrapper(news));
return R.data(pages);
}
@PostMapping("review")
public R<Boolean> review(String ids ,Integer status){
UpdateWrapper<News> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("status",status);
String [] id = ids.split(",");
//将id String 数组转为Long数组
Long [] idLong = new Long[id.length];
for (int i = 0; i < id.length; i++) {
idLong[i] = Long.parseLong(id[i]);
}
updateWrapper.in("id",idLong);
Boolean flag=newsService.update(updateWrapper);
return R.data(flag);
}
}

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

@ -2,6 +2,7 @@ package com.kening.vordm.controller;
import cn.hutool.core.convert.Convert;
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,6 +12,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;
@ -43,20 +45,27 @@ public class PictureInfoController {
* @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,6 +1,9 @@
package com.kening.vordm.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kening.vordm.entity.News;
import com.kening.vordm.entity.SocialMedia;
import com.kening.vordm.entity.Tweets;
import com.kening.vordm.service.SocialMediaService;
@ -8,10 +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.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -61,4 +61,23 @@ public class SocialMediaController {
public void export(Long disasterId, HttpServletRequest request, HttpServletResponse response){
service.export(disasterId,request,response);
}
@GetMapping("/list")
public R<IPage<SocialMedia>> list(SocialMedia socialMedia, Query query) {
IPage<SocialMedia> pages = service.page(Condition.getPage(query), Condition.getQueryWrapper(socialMedia));
return R.data(pages);
}
@PostMapping("review")
public R<Boolean> review(String ids ,Integer status){
UpdateWrapper<SocialMedia> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("status",status);
String [] id = ids.split(",");
//将id String 数组转为Long数组
Long [] idLong = new Long[id.length];
for (int i = 0; i < id.length; i++) {
idLong[i] = Long.parseLong(id[i]);
}
updateWrapper.in("id",idLong);
Boolean flag=service.update(updateWrapper);
return R.data(flag);
}
}

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

@ -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

@ -10,6 +10,7 @@ import org.apache.poi.ss.formula.functions.T;
import org.springblade.core.secure.BladeUser;
import java.util.List;
import java.util.Map;
/**
* @author G1393
@ -53,4 +54,16 @@ public interface DisasterInfoMapper extends BaseMapper<DisasterInfo> {
Integer saveUserData(@Param("userVo") UserVo userVo);
UserVo getUserByEmail(String email);
/**
* 获取灾害数据 关联字典项
* @return
*/
List<DisasterInfo> getAllData();
/**
* 查询每个月响应的灾害
* @return
*/
List<Map<String, Object>> getDisasterInfoByMouth(@Param("start") String start,@Param("end") String end,@Param("type") Integer type);
}

View File

@ -156,9 +156,12 @@
<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'" >
<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>
</where>
order by d.upload_time desc
</select>
@ -181,4 +184,31 @@
</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
</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>
GROUP BY date
</select>
</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

@ -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

@ -8,6 +8,7 @@ import com.kening.vordm.vo.*;
import org.springblade.core.tool.api.R;
import java.util.List;
import java.util.Map;
/**
* @author G1393
@ -55,4 +56,9 @@ public interface DisasterInfoService extends IService<DisasterInfo> {
IPage<CallForHelpVo> page(IPage<CallForHelpVo> page, CallForHelpVo callForHelpVo);
R saveUserData(UserVo userVo);
/**
* 后台管理系统-控制台灾害各项统计
* @return
*/
Map<String,Object> statistics();
}

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

@ -3,23 +3,27 @@ package com.kening.vordm.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.mapper.DisasterInfoMapper;
import com.kening.vordm.service.DisasterInfoService;
import com.kening.vordm.service.EmailService;
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.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.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
@ -33,6 +37,8 @@ public class DisasterInfoServiceImpl extends ServiceImpl<DisasterInfoMapper, Dis
private final BladeRedis bladeRedis;
private final GuestManageDisasterRefService guestManageDisasterRefService;
/**
* 返回指定的灾害条目
*
@ -163,5 +169,109 @@ public class DisasterInfoServiceImpl extends ServiceImpl<DisasterInfoMapper, Dis
}
/**
* 后台管理系统-控制台灾害各项统计
* @description 暂时没有条件查询 所有统计都暂时写在一个查询里面
* @return
*/
@Override
public Map<String, Object> statistics() {
Map<String,Object> resultMap = Maps.newHashMap();
//查询灾害表全部数据数据tip:暂时没有条件 需要的话后期改
List<DisasterInfo> disasterInfoList = list();
//统计head头部的数据
Map<String,Object> headMap = headData(disasterInfoList);
//统计灾害发生区域占比
Map<String,Long> countryData = disasterCountryProportion(disasterInfoList);
//统计当年的灾害申请次数 按月查询
List<Map<String,Object>> applyMonth = getDisasterReponseByMouth(1);
//统计灾害数量占比
Map<String,Long> disasterNum = disasterNumProportion();
//统计当年的灾害响应次数 按月查询
List<Map<String,Object>> responseMonth = getDisasterReponseByMouth(2);
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().collect(Collectors.groupingBy(DisasterInfo::getDisasterCountry,Collectors.counting()));
return proportionMap;
}
/**
* 计算每个灾害发生的次数
* @return
*/
private Map<String,Long> disasterNumProportion(){
List<DisasterInfo> disasterInfoList = baseMapper.getAllData();
Map<String,Long> proportionMap = disasterInfoList.stream().collect(Collectors.groupingBy(DisasterInfo::getDictValue,Collectors.counting()));
return proportionMap;
}
/**
* 按月统计当年每个月的响应或者申请量
* @return
*/
private List<Map<String, Object>> getDisasterReponseByMouth(Integer type){
//统计每个月的个数
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);
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

@ -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

@ -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>