优化
This commit is contained in:
parent
9537954d7d
commit
70605e2fe0
@ -12,14 +12,6 @@ import java.util.Map;
|
||||
@Component
|
||||
public interface FirePointDao extends JpaRepository<FirePointEntity, Long>, JpaSpecificationExecutor<FirePointEntity> {
|
||||
|
||||
/**
|
||||
* 根据火点编码查询火点信息
|
||||
*/
|
||||
FirePointEntity findByFireCode(String fireCode);
|
||||
|
||||
@Query(value = "SELECT * FROM fire_point WHERE longitude = ?1 AND latitude = ?2 AND street_code = ?3 AND satellite_time = ?4 AND satellite_type = ?5 AND land_type = ?6", nativeQuery = true)
|
||||
List<FirePointEntity> findDuplicatedData(double longitude, double latitude, String streetCode, String satelliteTime, String satelliteType, String landType);
|
||||
|
||||
@Query(value = "select a.really_name 姓名, a.county_name 所在市, a.telephone 手机号, a.vip_level vip, b.satellite_time 扫描时间, " + "round(cast(b.longitude as numeric) ,6) 经度, round(cast(b.latitude as numeric) ,6) 纬度, b.fire_point_address 详细地址 from sys_user a left join fire_point b on " + "case when left(a.county_code, 4) = '0000' then left(b.county_code, 4) = left(a.county_code, 4) " + "when left(a.county_code, 2) = '00' then left(b.county_code, 2) = left(a.county_code, 2) " + "else left(b.county_code, 2) = left(a.county_code, 2) end where a.vip_level > 0 and satellite_time > ?1", nativeQuery = true)
|
||||
List<Map<String, String>> downloadFirePointByVip(String yesterday);
|
||||
|
||||
|
@ -1,7 +1,5 @@
|
||||
package com.xkrs.service;
|
||||
|
||||
import com.xkrs.model.qo.FirePointQo;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
@ -10,19 +8,8 @@ import javax.servlet.http.HttpServletResponse;
|
||||
*/
|
||||
public interface FirePointService {
|
||||
|
||||
/**
|
||||
* 添加火点信息
|
||||
*
|
||||
* @param firePointQo
|
||||
* @return
|
||||
*/
|
||||
boolean insertFirePoint(FirePointQo firePointQo);
|
||||
|
||||
/**
|
||||
* download vip user's fire point
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
*/
|
||||
String downloadVipUserFilePoint(HttpServletRequest request, HttpServletResponse response);
|
||||
|
||||
|
@ -4,10 +4,7 @@ import com.xkrs.common.encapsulation.PromptMessageEnum;
|
||||
import com.xkrs.dao.CountyCodeWeiXinDao;
|
||||
import com.xkrs.dao.FirePointDao;
|
||||
import com.xkrs.dao.StreetDao;
|
||||
import com.xkrs.model.entity.CountyCodeWeiXinEntity;
|
||||
import com.xkrs.model.entity.FirePointEntity;
|
||||
import com.xkrs.model.qo.FirePointQo;
|
||||
import com.xkrs.model.vo.GaoDeIgGeocodeVo;
|
||||
import com.xkrs.service.FirePointService;
|
||||
import com.xkrs.service.StreetService;
|
||||
import com.xkrs.straw.dao.FirePointOrdinaryDao;
|
||||
@ -20,12 +17,14 @@ import com.xkrs.straw.model.helper.SMSHelper;
|
||||
import com.xkrs.straw.model.vo.AllFirePointVo;
|
||||
import com.xkrs.straw.utils.FirePointConvertUtils;
|
||||
import com.xkrs.straw.utils.FirePointQueryManager;
|
||||
import com.xkrs.utils.*;
|
||||
import com.xkrs.utils.DateTimeUtils;
|
||||
import com.xkrs.utils.FirePointQueryHelper;
|
||||
import com.xkrs.utils.ListUtils;
|
||||
import com.xkrs.utils.TokenUtil;
|
||||
import org.apache.hc.core5.util.TextUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.cache.annotation.CacheConfig;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
@ -38,7 +37,6 @@ import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
@ -89,147 +87,6 @@ public class FirePointServiceImpl implements FirePointService {
|
||||
@Resource
|
||||
private FirePointOrdinaryDao firePointOrdinaryDao;
|
||||
|
||||
/**
|
||||
* 添加火点信息
|
||||
*/
|
||||
@CacheEvict(value = "FirePointServiceCache", allEntries = true)
|
||||
@Override
|
||||
public boolean insertFirePoint(FirePointQo firePointQo) {
|
||||
if ("水体".equals(firePointQo.getLandtype())) {
|
||||
return false;
|
||||
}
|
||||
if ("Himawari 8".equals(firePointQo.getSatelliteType())) {
|
||||
if ("N".equals(firePointQo.getConfidence()) || "L".equals(firePointQo.getConfidence())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
FirePointEntity firePointEntity = new FirePointEntity();
|
||||
firePointEntity.setFireCode(firePointQo.getFireCode());
|
||||
firePointEntity.setCountyCode(firePointQo.getCountyCode().toString());
|
||||
firePointEntity.setCountyName(firePointQo.getCountyName());
|
||||
firePointEntity.setSatelliteTime(DateTimeUtil.timeMillisToString(firePointQo.getSatelliteTimeTs().longValue()));
|
||||
firePointEntity.setLongitude(firePointQo.getLongitude());
|
||||
firePointEntity.setLatitude(firePointQo.getLatitude());
|
||||
firePointEntity.setSatelliteType(firePointQo.getSatelliteType());
|
||||
firePointEntity.setLandType(firePointQo.getLandtype());
|
||||
firePointEntity.setConfidence(firePointQo.getConfidence());
|
||||
firePointEntity.setAddTime(dateTimeToString(LocalDateTime.now()));
|
||||
firePointEntity.setFireType("0");
|
||||
firePointEntity.setFireImage(firePointQo.getFireImage());
|
||||
firePointEntity.setSatelliteImage(firePointQo.getSatelliteImage());
|
||||
firePointEntity.setAuditFireType("0");//初始化火点为未审核状态
|
||||
bindAddress(firePointEntity);
|
||||
if (checkDuplicatedData(firePointEntity)) {
|
||||
log.info("-------该火点和历史火点重复,不入库");
|
||||
return false;
|
||||
}
|
||||
log.info("-------发现新火点");
|
||||
firePointDao.save(firePointEntity);
|
||||
//发送消息通知
|
||||
sendBroadcast(firePointEntity);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查重复数据
|
||||
*
|
||||
* @param firePointEntity 待入库实体类
|
||||
* @return true-是重复数据,拒绝入库;false-不是重复数据,可以入库
|
||||
*/
|
||||
private boolean checkDuplicatedData(FirePointEntity firePointEntity) {
|
||||
List<FirePointEntity> duplicatedDataList = firePointDao.findDuplicatedData(firePointEntity.getLongitude(), firePointEntity.getLatitude(), firePointEntity.getStreetCode(), firePointEntity.getSatelliteTime(), firePointEntity.getSatelliteType(), firePointEntity.getLandType());
|
||||
return duplicatedDataList != null && duplicatedDataList.size() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 为实体类绑定地址、编号、名称
|
||||
*/
|
||||
private void bindAddress(FirePointEntity firePointEntity) {
|
||||
List<String> locationList = new ArrayList<>();
|
||||
locationList.add(firePointEntity.getLongitude() + "," + firePointEntity.getLatitude());
|
||||
GaoDeIgGeocodeVo geocode = GaoDeApiUtil.geocode(locationList);
|
||||
GaoDeIgGeocodeVo.Regeocode reGeoCode = geocode.getRegeocodes().get(0);
|
||||
String formattedAddress = reGeoCode.getFormatted_address();
|
||||
firePointEntity.setFirePointAddress(formattedAddress);
|
||||
GaoDeIgGeocodeVo.AddressComponent addressComponent = reGeoCode.getAddressComponent().get(0);
|
||||
firePointEntity.setCountyCode(addressComponent.getAdcode());
|
||||
firePointEntity.setCountyName(addressComponent.getDistrict());
|
||||
String townCode = addressComponent.getTowncode();
|
||||
String fixedTownCode = townCode.length() > 9 ? townCode.substring(0, 9) : townCode;
|
||||
firePointEntity.setStreetCode(fixedTownCode);
|
||||
firePointEntity.setStreetName(addressComponent.getTownship());
|
||||
}
|
||||
|
||||
private void sendBroadcast(FirePointEntity firePointEntity) {
|
||||
//发送微信群聊消息
|
||||
sendWeChatGroupMessage(firePointEntity);
|
||||
|
||||
if ("耕地".equals(firePointEntity.getLandType())) {
|
||||
//过滤短信通知收件人
|
||||
List<SysUserEntity> sysUserList = sysUserDao.findAll();
|
||||
List<SysUserEntity> smsReceiverList = FirePointCodeUtils.filterSmsReceiver(firePointEntity.getStreetCode(), sysUserList);
|
||||
// //推送
|
||||
// try {
|
||||
// List<String> userAccountList = pushHelper.obtainUserAccountList(smsReceiverList);
|
||||
// pushHelper.dispatchPushMessage(userAccountList, firePointEntity);
|
||||
// } catch (Exception e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
//分发短信通知
|
||||
smsHelper.dispatchSMSMessage(smsReceiverList, new String[]{firePointEntity.getFirePointAddress()}, new FirePointEntity[]{firePointEntity});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送微信消息
|
||||
*
|
||||
* @param firePointEntity
|
||||
*/
|
||||
private void sendWeChatGroupMessage(FirePointEntity firePointEntity) {
|
||||
List<CountyCodeWeiXinEntity> countyCodeWeiXinList = countyCodeWeiXinDao.findAll();
|
||||
if (countyCodeWeiXinList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
List<String> weixinIdList = new ArrayList<>();
|
||||
for (CountyCodeWeiXinEntity countyCodeWeiXin : countyCodeWeiXinList) {
|
||||
try {
|
||||
if ((countyCodeWeiXin.getSendState() != null) && (countyCodeWeiXin.getSendState() != 0)) {
|
||||
String formatCutCode = FirePointCodeUtils.getFormatCutCode(countyCodeWeiXin.getCountyCode());
|
||||
if (firePointEntity.getStreetCode().startsWith(formatCutCode)) {
|
||||
weixinIdList.add(countyCodeWeiXin.getWeixinId());
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (weixinIdList.size() > 0) {
|
||||
StringBuilder stringBuilder = new StringBuilder("发送微信消息通知:\n");
|
||||
String messageContent = getMessageContent(firePointEntity);
|
||||
for (String weixinId : weixinIdList) {
|
||||
stringBuilder.append(weixinId).append("\n");
|
||||
try {
|
||||
WDWxSendMsgUtil.sendMsg(weixinId, messageContent, 0);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
stringBuilder.append("火情信息:").append(messageContent);
|
||||
log.info(stringBuilder.toString());
|
||||
}
|
||||
}
|
||||
|
||||
private String getMessageContent(FirePointEntity firePointEntity) {
|
||||
java.text.DecimalFormat decimalFormat = new DecimalFormat("#.000000");
|
||||
String satelliteTime = firePointEntity.getSatelliteTime();
|
||||
String formatLongitude = decimalFormat.format(firePointEntity.getLongitude());
|
||||
String formatLatitude = decimalFormat.format(firePointEntity.getLatitude());
|
||||
String countyName = firePointEntity.getCountyName();
|
||||
String streetName = firePointEntity.getStreetName();
|
||||
String landType = firePointEntity.getLandType();
|
||||
return firePointEntity.getSatelliteType() + "发现1个火点。\n卫星时间:" + satelliteTime + ";\nlongitude:" + formatLongitude + ";\nlatitude:" + formatLatitude + ";\ncountyName:" + countyName + ";\nstreetName:" + streetName + ";\nlandType:" + landType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载VIP用户火点数据
|
||||
*/
|
||||
|
@ -75,13 +75,13 @@ public class FirePointController {
|
||||
*/
|
||||
@PostMapping("/insertFirePoint")
|
||||
public String insertFirePoint(@RequestBody FirePointQo firePointQo) {
|
||||
log.info("insertFirePoint 接收到火点信息:" + firePointQo.toString());
|
||||
boolean success = firePointService.insertFirePoint(firePointQo);
|
||||
if (success) {
|
||||
// log.info("insertFirePoint 接收到火点信息:" + firePointQo.toString());
|
||||
// boolean success = firePointService.insertFirePoint(firePointQo);
|
||||
// if (success) {
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "添加成功", locale);
|
||||
} else {
|
||||
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL, "添加失败", locale);
|
||||
}
|
||||
// } else {
|
||||
// return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL, "添加失败", locale);
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -28,7 +28,21 @@ public class FirePointFilterUtils {
|
||||
}
|
||||
|
||||
public static DataWrapper2<Boolean, String> checkDuplicated(FirePointOrdinaryDao firePointOrdinaryDao, FirePointOrdinaryEntity firePointOrdinaryEntity) {
|
||||
/**
|
||||
* private boolean checkDuplicatedData(FirePointEntity firePointEntity) {
|
||||
* List<FirePointEntity> duplicatedDataList = firePointDao.findDuplicatedData(firePointEntity.getLongitude(), firePointEntity.getLatitude(), firePointEntity.getStreetCode(), firePointEntity.getSatelliteTime(), firePointEntity.getSatelliteType(), firePointEntity.getLandType());
|
||||
* return duplicatedDataList != null && duplicatedDataList.size() > 0;
|
||||
* }
|
||||
*
|
||||
*
|
||||
@Query(value = "SELECT * FROM fire_point WHERE longitude = ?1 AND latitude = ?2 AND street_code = ?3 AND satellite_time = ?4 AND satellite_type = ?5 AND land_type = ?6", nativeQuery = true)
|
||||
List<FirePointEntity> findDuplicatedData(double longitude, double latitude, String streetCode, String satelliteTime, String satelliteType, String landType);
|
||||
|
||||
if (checkDuplicatedData(firePointEntity)) {
|
||||
log.info("-------该火点和历史火点重复,不入库");
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
return null;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user