213 lines
10 KiB
Java
213 lines
10 KiB
Java
package com.xkrs.service.impl;
|
|
|
|
import com.xkrs.common.encapsulation.PromptMessageEnum;
|
|
import com.xkrs.straw.dao.CountyCodeWeiXinDao;
|
|
import com.xkrs.straw.dao.StreetDao;
|
|
import com.xkrs.service.FirePointService;
|
|
import com.xkrs.service.StreetService;
|
|
import com.xkrs.straw.dao.FirePointOrdinaryDao;
|
|
import com.xkrs.straw.dao.SysUserDao;
|
|
import com.xkrs.straw.model.bean.FirePointQueryResultBean;
|
|
import com.xkrs.straw.model.entity.FirePointOrdinaryEntity;
|
|
import com.xkrs.straw.model.entity.SysUserEntity;
|
|
import com.xkrs.straw.model.helper.PushHelper;
|
|
import com.xkrs.straw.model.vo.AllFirePointVo;
|
|
import com.xkrs.straw.utilsnew.FirePointConvertUtils;
|
|
import com.xkrs.straw.managers.FirePointQueryManager;
|
|
import com.xkrs.straw.utilsnew.DateTimeUtils;
|
|
import com.xkrs.straw.utilsnew.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.context.i18n.LocaleContextHolder;
|
|
import org.springframework.data.domain.Sort;
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.persistence.criteria.Predicate;
|
|
import java.time.LocalDateTime;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Locale;
|
|
|
|
import static com.xkrs.common.encapsulation.OutputEncapsulation.outputEncapsulationObject;
|
|
|
|
/**
|
|
* @author XinYi Song
|
|
*/
|
|
@CacheConfig(cacheNames = "FirePointServiceCache")
|
|
@Service
|
|
public class FirePointServiceImpl implements FirePointService {
|
|
|
|
public static Logger log = LoggerFactory.getLogger(FirePointServiceImpl.class);
|
|
|
|
private final Locale locale = LocaleContextHolder.getLocale();
|
|
|
|
@Resource
|
|
private SysUserDao sysUserDao;
|
|
|
|
@Resource
|
|
private StreetDao streetDao;
|
|
|
|
@Resource
|
|
private CountyCodeWeiXinDao countyCodeWeiXinDao;
|
|
|
|
@Resource
|
|
private StreetService streetService;
|
|
|
|
@Resource
|
|
private PushHelper pushHelper;
|
|
|
|
@Resource
|
|
private FirePointQueryManager firePointQueryManager;
|
|
|
|
@Resource
|
|
private FirePointOrdinaryDao firePointOrdinaryDao;
|
|
|
|
// /**
|
|
// * 下载VIP用户火点数据
|
|
// *
|
|
// *
|
|
// *
|
|
// @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);
|
|
//
|
|
// */
|
|
// @Override
|
|
// public String downloadVipUserFilePoint(HttpServletRequest request, HttpServletResponse response) {
|
|
// LocalDate now = LocalDate.now();
|
|
// List<Map<String, String>> list = firePointDao.downloadFirePointByVip(dateTimeToString(LocalDateTime.of(now.minusDays(1), LocalTime.MIN)));
|
|
// if (list.size() == 0) {
|
|
// return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "无数据!", locale);
|
|
// }
|
|
// int year = now.getYear();
|
|
// int month = now.getMonth().getValue();
|
|
// int day = now.getDayOfMonth();
|
|
// String fileName = String.format("%s_%s_%s_VIP用户火点信息列表.xlsx", year, month, day);
|
|
// response.setContentType("application/octet-stream; charset=UTF8");
|
|
// response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8));
|
|
// response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
|
|
// try {
|
|
// downloadXlsx(list, response.getOutputStream());
|
|
// } catch (IOException e) {
|
|
// log.error("download vip user's fire point fail: {}", e.getMessage());
|
|
// }
|
|
// return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "ok", locale);
|
|
// }
|
|
|
|
// @Override
|
|
// public String downloadFirePoint(HttpServletRequest request, HttpServletResponse response, String ids) {
|
|
//
|
|
// List<String> idList = ListUtils.toStringList(ids, ",");
|
|
// if (idList.isEmpty()) {
|
|
// return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "无数据!", locale);
|
|
// }
|
|
// List<Map<String, String>> list = new ArrayList<>();
|
|
// List<FirePointEntity> sourceList = firePointDao.findAllById(ListUtils.stringListToLongList(idList));
|
|
// for (FirePointEntity source : sourceList) {
|
|
// Map<String, String> record = new HashMap<>();
|
|
// record.put("所在区县", source.getCountyName());
|
|
// record.put("所在街道", source.getStreetName());
|
|
// record.put("发现时间", source.getSatelliteTime());
|
|
// record.put("地物类型", source.getLandType());
|
|
// record.put("经度", String.valueOf(source.getLongitude()));
|
|
// record.put("纬度", String.valueOf(source.getLatitude()));
|
|
// record.put("详细地址", source.getFirePointAddress());
|
|
// list.add(record);
|
|
// }
|
|
// LocalDate now = LocalDate.now();
|
|
// String fileName = String.format("%s_%s_%s_火点信息列表.xlsx", now.getYear(), now.getMonth().getValue(), now.getDayOfMonth());
|
|
// response.setContentType("application/octet-stream; charset=UTF8");
|
|
// response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8));
|
|
// response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
|
|
// try {
|
|
// downloadXlsx(list, response.getOutputStream());
|
|
// } catch (IOException e) {
|
|
// log.error("download fire point fail: {}", e.getMessage());
|
|
// }
|
|
// return outputEncapsulationObject(PromptMessageEnum.SUCCESS, "ok", locale);
|
|
// }
|
|
|
|
/**
|
|
* Complete
|
|
*/
|
|
@Override
|
|
public String queryFirePoint(String token, String code, String startTime, String endTime, String satelliteType, String landType) {
|
|
//验证token
|
|
String userName = TokenUtil.obtainUserNameByToken(token);
|
|
if (TextUtils.isEmpty(userName)) {
|
|
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL, "账号不存在或错误", locale);
|
|
}
|
|
SysUserEntity sysUserEntity = sysUserDao.selectByUserName(userName);
|
|
if (sysUserEntity == null) {
|
|
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL, "账号不存在或错误", locale);
|
|
}
|
|
|
|
FirePointQueryResultBean firePointQueryResult = firePointQueryManager.queryFirePointBelongToUser(sysUserEntity, code, startTime, endTime, satelliteType, landType);
|
|
if (firePointQueryResult.isSuccess()) {
|
|
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, firePointQueryResult.getList(), locale);
|
|
} else {
|
|
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL, firePointQueryResult.getErrorMessage(), locale);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Complete
|
|
*/
|
|
// @Cacheable(keyGenerator = "keyGenerator", unless = "#result == null")
|
|
@Override
|
|
public String selectTodayFirePoint(String token, String countyCode) {
|
|
|
|
//验证token
|
|
String userName = TokenUtil.obtainUserNameByToken(token);
|
|
if (TextUtils.isEmpty(userName)) {
|
|
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL, "账号不存在或错误", locale);
|
|
}
|
|
SysUserEntity sysUserEntity = sysUserDao.selectByUserName(userName);
|
|
if (sysUserEntity == null) {
|
|
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL, "账号不存在或错误", locale);
|
|
}
|
|
|
|
LocalDateTime startTime1 = LocalDateTime.now();
|
|
LocalDateTime startTime2 = LocalDateTime.of(startTime1.getYear(), startTime1.getMonth(), startTime1.getDayOfMonth(), 0, 0, 0, 0);
|
|
String startTimeString = DateTimeUtils.localDateTimeToString(startTime2);
|
|
|
|
LocalDateTime endTime1 = LocalDateTime.now().plusDays(1);
|
|
LocalDateTime endTime2 = LocalDateTime.of(endTime1.getYear(), endTime1.getMonth(), endTime1.getDayOfMonth(), 0, 0, 0, 0);
|
|
String endTimeString = DateTimeUtils.localDateTimeToString(endTime2);
|
|
|
|
FirePointQueryResultBean firePointQueryResult = firePointQueryManager.queryFirePointBelongToUser(sysUserEntity, countyCode, startTimeString, endTimeString, null, null);
|
|
if (firePointQueryResult.isSuccess()) {
|
|
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, firePointQueryResult.getList(), locale);
|
|
} else {
|
|
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL, firePointQueryResult.getErrorMessage(), locale);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 根据火点编码查询火点信息 (Complete)
|
|
*/
|
|
@Override
|
|
public String selectFirePointByCode(String fireCode) {
|
|
if (TextUtils.isEmpty(fireCode)) {
|
|
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL, null, locale);
|
|
}
|
|
Specification<FirePointOrdinaryEntity> specification = (root, criteriaQuery, criteriaBuilder) -> {
|
|
//查询条件集合
|
|
List<Predicate> predicateList = new ArrayList<>();
|
|
predicateList.add(criteriaBuilder.equal(root.get("fireCode").as(String.class), fireCode));
|
|
Predicate[] predicateArray = new Predicate[predicateList.size()];
|
|
return criteriaBuilder.and(predicateList.toArray(predicateArray));
|
|
};
|
|
List<FirePointOrdinaryEntity> firePointOrdinaryList = firePointOrdinaryDao.findAll(specification, Sort.by(Sort.Direction.DESC, "satelliteTime"));
|
|
if (firePointOrdinaryList.size() == 1) {
|
|
AllFirePointVo firePointVo = FirePointConvertUtils.convert(firePointOrdinaryList.get(0));
|
|
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, firePointVo, locale);
|
|
}
|
|
return outputEncapsulationObject(PromptMessageEnum.SUCCESS, null, locale);
|
|
}
|
|
|
|
}
|