From cd1888041ad12a09c4d2b10909d53e0a20db465a Mon Sep 17 00:00:00 2001 From: "DESKTOP-4U0TDEF\\20371" <2037158277@qq.com> Date: Fri, 16 Jul 2021 08:47:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=A4=9A=E6=9D=A1=E4=BB=B6=E6=9F=A5=E8=AF=A2=E7=9A=84=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FireAndRangerController.java | 60 ++++++ .../XkRsForestRangerController.java | 56 ++++++ src/main/java/com/xkrs/dao/CityDao.java | 24 +++ .../java/com/xkrs/dao/FireAndRangerDao.java | 54 ++++++ src/main/java/com/xkrs/dao/FireTaskDao.java | 18 ++ .../java/com/xkrs/dao/FireTaskPhotoDao.java | 29 +++ .../java/com/xkrs/dao/ForestRangerDao.java | 63 +++++++ .../java/com/xkrs/model/vo/AppPhotoVo.java | 33 ++++ .../java/com/xkrs/model/vo/AppTaskBodyVo.java | 70 +++++++ .../xkrs/service/FireAndRangerService.java | 36 ++++ .../com/xkrs/service/ForestRangerService.java | 31 ++++ .../impl/FireAndRangerServiceImpl.java | 171 ++++++++++++++++++ .../service/impl/ForestRangerServiceImpl.java | 83 +++++++++ src/main/java/com/xkrs/utils/Query.java | 34 ++-- .../java/com/xkrs/utils/RestTemplateUtil.java | 94 ++++++++++ 15 files changed, 845 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/xkrs/controller/FireAndRangerController.java create mode 100644 src/main/java/com/xkrs/controller/XkRsForestRangerController.java create mode 100644 src/main/java/com/xkrs/dao/CityDao.java create mode 100644 src/main/java/com/xkrs/dao/FireAndRangerDao.java create mode 100644 src/main/java/com/xkrs/dao/FireTaskDao.java create mode 100644 src/main/java/com/xkrs/dao/FireTaskPhotoDao.java create mode 100644 src/main/java/com/xkrs/dao/ForestRangerDao.java create mode 100644 src/main/java/com/xkrs/model/vo/AppPhotoVo.java create mode 100644 src/main/java/com/xkrs/model/vo/AppTaskBodyVo.java create mode 100644 src/main/java/com/xkrs/service/FireAndRangerService.java create mode 100644 src/main/java/com/xkrs/service/ForestRangerService.java create mode 100644 src/main/java/com/xkrs/service/impl/FireAndRangerServiceImpl.java create mode 100644 src/main/java/com/xkrs/service/impl/ForestRangerServiceImpl.java create mode 100644 src/main/java/com/xkrs/utils/RestTemplateUtil.java diff --git a/src/main/java/com/xkrs/controller/FireAndRangerController.java b/src/main/java/com/xkrs/controller/FireAndRangerController.java new file mode 100644 index 0000000..dfb1168 --- /dev/null +++ b/src/main/java/com/xkrs/controller/FireAndRangerController.java @@ -0,0 +1,60 @@ +package com.xkrs.controller; + +import com.xkrs.service.FireAndRangerService; +import com.xkrs.utils.Result; +import org.springframework.security.access.annotation.Secured; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.util.Map; + +/** + * @author xkrs + */ +@RestController +public class FireAndRangerController { + + @Resource + private FireAndRangerService fireAndRangerService; + + /** + * 将火点分配给某个人 + * @param map + * @param token + * @return + */ + @PreAuthorize("hasAnyRole('ROLE_city','ROLE_county')") + @PostMapping("/addFireAndRanger") + public Result addFireAndRanger(@RequestBody Map map, @RequestHeader(value="Authorization") String token) throws UnsupportedEncodingException { + String rangerName = (String) map.get("rangerName"); + String fireCode = (String) map.get("fireCode"); + String handler = (String) map.get("handler"); + String verifier = (String) map.get("verifier"); + return fireAndRangerService.addFireAndRanger(rangerName,fireCode,handler,verifier,token); + } + + /** + * 护林员查看自己的火点任务 + * @param token + * @return + */ + @Secured("ROLE_ranger") + @GetMapping("/selectFireInformation") + public Result selectFireInformation(@RequestHeader(value="Authorization") String token){ + return fireAndRangerService.selectFireInformation(token); + } + + /** + * 根据火点编码查询核查信息 + * @param map + * @return + */ + @PreAuthorize("hasAnyRole('ROLE_city','ROLE_county')") + @PostMapping("/findFireAndRanger") + public Result findFireAndRangerByFireCode(@RequestBody Map map, @RequestHeader(value="Authorization") String token) throws Exception { + String fireCode = (String) map.get("fireCode"); + return fireAndRangerService.findFireAndRangerByFireCode(fireCode,token); + } +} diff --git a/src/main/java/com/xkrs/controller/XkRsForestRangerController.java b/src/main/java/com/xkrs/controller/XkRsForestRangerController.java new file mode 100644 index 0000000..4c86287 --- /dev/null +++ b/src/main/java/com/xkrs/controller/XkRsForestRangerController.java @@ -0,0 +1,56 @@ +package com.xkrs.controller; + +import com.xkrs.service.XkRsForestRangerService; +import com.xkrs.utils.Result; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.Map; + +/** + * @author xkrs + */ +@RestController +public class XkRsForestRangerController { + + @Resource + private XkRsForestRangerService xkRsForestRangerService; + + /** + * 根据区县编码查询相关护林员的信息 + * @param rangerCountyCode + * @return + */ + @GetMapping("/findByRangerCountyCode") + public Result findByRangerCountyCode(@RequestParam("rangerCountyCode") String rangerCountyCode){ + return xkRsForestRangerService.findByRangerCountyCode(rangerCountyCode); + } + + /** + * 根据区县编码查询该区县所有护林员的信息 + * @param countyCode + * @param token + * @return + */ + @PreAuthorize("hasAnyRole('ROLE_city','ROLE_county')") + @GetMapping("/findAllByRangerCountyCode") + public Result findAllByRangerCountyCode(@RequestParam("countyCode") String countyCode, @RequestHeader(value="Authorization") String token){ + return xkRsForestRangerService.findAllByRangerCountyCode(countyCode,token); + } + + /** + * 根据手机号修改护林员的位置 + * @param map + * @return + */ + @PostMapping("/updateLatAndLonByPhone") + public Result updateLatAndLonByPhone(@RequestBody Map map){ + String rangerLatitude = (String) map.get("rangerLatitude"); + String rangerLongitude = (String) map.get("rangerLongitude"); + String rangerPhone = (String) map.get("rangerPhone"); + return xkRsForestRangerService.updateLatAndLonByPhone(rangerLatitude,rangerLongitude,rangerPhone); + } + + +} diff --git a/src/main/java/com/xkrs/dao/CityDao.java b/src/main/java/com/xkrs/dao/CityDao.java new file mode 100644 index 0000000..361e475 --- /dev/null +++ b/src/main/java/com/xkrs/dao/CityDao.java @@ -0,0 +1,24 @@ +package com.xkrs.dao; + +import com.xkrs.entity.City; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author xkrs + */ +@Component +public interface CityDao extends JpaRepository, JpaSpecificationExecutor { + + /** + * 根据省编码查询城市有关信息 + * @param proCode + * @return + */ + @Query(value = "select city_name,city_code,city_latitude,city_longitude from city where pro_code = ?",nativeQuery = true) + List selectCityNameAndLatAndLog(String proCode); +} diff --git a/src/main/java/com/xkrs/dao/FireAndRangerDao.java b/src/main/java/com/xkrs/dao/FireAndRangerDao.java new file mode 100644 index 0000000..52c0337 --- /dev/null +++ b/src/main/java/com/xkrs/dao/FireAndRangerDao.java @@ -0,0 +1,54 @@ +package com.xkrs.dao; + +import com.xkrs.entity.FireAndRanger; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Component; + +/** + * @author xkrs + */ +@Component +public interface FireAndRangerDao extends JpaRepository, JpaSpecificationExecutor { + + /** + * 根据火点编码查询信息 + * @param fireCode + * @return + */ + FireAndRanger findByFireCode(String fireCode); + + /** + * 根据护林员手机号查询 + * @param rangerName + * @return + */ + FireAndRanger findByRangerNameAndProgressType(String rangerName, String progressType); + + /** + * 根据火点编码删除火点信息 + * @param fireCode + * @return + */ + FireAndRanger deleteByFireCode(String fireCode); + + /** + * 根据火点编码修改结束时间 + * @param fireCode + * @param endTime + */ + @Modifying(clearAutomatically=true) + @Query(value = "update fire_and_ranger set end_time = ?2 where fire_code = ?1",nativeQuery = true) + void updateEndTimeByFireCode(String fireCode, String endTime); + + /** + * 根据火点编码修改进程状态 + * @param fireCode + * @param endTime + */ + @Modifying(clearAutomatically=true) + @Query(value = "update fire_and_ranger set progress_type = ?2 where fire_code = ?1",nativeQuery = true) + void updateProgressTypeByFireCode(String fireCode, String endTime); +} diff --git a/src/main/java/com/xkrs/dao/FireTaskDao.java b/src/main/java/com/xkrs/dao/FireTaskDao.java new file mode 100644 index 0000000..0be4ba2 --- /dev/null +++ b/src/main/java/com/xkrs/dao/FireTaskDao.java @@ -0,0 +1,18 @@ +package com.xkrs.dao; + +import com.xkrs.entity.FireTask; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +/** + * @author xkrs + */ +public interface FireTaskDao extends JpaRepository, JpaSpecificationExecutor { + + /** + * 根据火点编码查询该条任务 + * @param fireCode + * @return + */ + FireTask findByTaskFireCode(String fireCode); +} diff --git a/src/main/java/com/xkrs/dao/FireTaskPhotoDao.java b/src/main/java/com/xkrs/dao/FireTaskPhotoDao.java new file mode 100644 index 0000000..e06e52b --- /dev/null +++ b/src/main/java/com/xkrs/dao/FireTaskPhotoDao.java @@ -0,0 +1,29 @@ +package com.xkrs.dao; + +import com.xkrs.entity.FireTaskPhoto; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +/** + * @author xkrs + */ +public interface FireTaskPhotoDao extends JpaRepository, JpaSpecificationExecutor { + + /** + * 根据火点编码查询图片 + * @param fireCode + * @return + */ + @Query(value = "select task_photo from fire_task_photo where photo_fire_code = :fireCode",nativeQuery = true) + List findPhotoPath(String fireCode); + + /** + * 通过火点编码查询图片的信息 + * @param fireCode + * @return + */ + List findAllByPhotoFireCode(String fireCode); +} diff --git a/src/main/java/com/xkrs/dao/ForestRangerDao.java b/src/main/java/com/xkrs/dao/ForestRangerDao.java new file mode 100644 index 0000000..67c2bdd --- /dev/null +++ b/src/main/java/com/xkrs/dao/ForestRangerDao.java @@ -0,0 +1,63 @@ +package com.xkrs.dao; + +import com.xkrs.model.entity.ForestRanger; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +/** + * @author xkrs + */ +public interface XkRsForestRangerDao extends JpaRepository, JpaSpecificationExecutor { + + /** + * 根据市区县编码查询护林员的信息 + * @param rangerCountyCode + * @return + */ + ForestRanger findByRangerCountyCode(String rangerCountyCode); + + /** + * 根据手机号对护林员的位置进行修改 + * @param rangerLatitude + * @param rangerLongitude + * @param rangerPhone + */ + @Modifying(clearAutomatically=true) + @Query(value = "update xk_forest_ranger set ranger_latitude = ?1,ranger_longitude = ?2 where ranger_phone = ?3",nativeQuery = true) + void updateLatAndLonByPhone(String rangerLatitude,String rangerLongitude,String rangerPhone); + + /** + * 根据手机号修改护林员的状态值 + * @param rangerPhone + * @param rangerType + */ + @Modifying(clearAutomatically=true) + @Query(value = "update xk_forest_ranger set ranger_type = ?2 where ranger_phone = ?1",nativeQuery = true) + void updateRangerTypeByPhone(String rangerPhone,String rangerType); + + /** + * 根据手机号查询护林员的信息 + * @param rangerPhone + * @return + */ + ForestRanger findByRangerPhone(String rangerPhone); + + /** + * 根据区县编码查询该区县护林员的信息 + * @param rangerCountyCode + * @return + */ + List findAllByRangerCountyCode(String rangerCountyCode); + + /** + * 根据区县编码模糊查询护林员的信息 + * @param rangerCountyCode + * @return + */ + @Query(value = "select * from xk_forest_ranger where ranger_county_code like CONCAT('%',:rangerCountyCode,'%')",nativeQuery = true) + List findAllsByRangerCountyCode(String rangerCountyCode); +} diff --git a/src/main/java/com/xkrs/model/vo/AppPhotoVo.java b/src/main/java/com/xkrs/model/vo/AppPhotoVo.java new file mode 100644 index 0000000..289a11f --- /dev/null +++ b/src/main/java/com/xkrs/model/vo/AppPhotoVo.java @@ -0,0 +1,33 @@ +package com.xkrs.vo; + +import java.io.Serializable; + +/** + * @author xkrs + */ +public class AppPhotoVo implements Serializable { + + private String taskPhoto; + + public AppPhotoVo() { + } + + public AppPhotoVo(String taskPhoto) { + this.taskPhoto = taskPhoto; + } + + public String getTaskPhoto() { + return taskPhoto; + } + + public void setTaskPhoto(String taskPhoto) { + this.taskPhoto = taskPhoto; + } + + @Override + public String toString() { + return "AppPhotoVo{" + + "taskPhoto='" + taskPhoto + '\'' + + '}'; + } +} diff --git a/src/main/java/com/xkrs/model/vo/AppTaskBodyVo.java b/src/main/java/com/xkrs/model/vo/AppTaskBodyVo.java new file mode 100644 index 0000000..49b29eb --- /dev/null +++ b/src/main/java/com/xkrs/model/vo/AppTaskBodyVo.java @@ -0,0 +1,70 @@ +package com.xkrs.vo; + +import java.io.Serializable; +import java.util.List; + +/** + * @author xkrs + */ +public class AppTaskBodyVo implements Serializable { + + private String fireCode; + + private String taskInformation; + + private String taskTime; + + private List taskFirePhoto; + + public AppTaskBodyVo() { + } + + public AppTaskBodyVo(String fireCode, String taskInformation, String taskTime, List taskFirePhoto) { + this.fireCode = fireCode; + this.taskInformation = taskInformation; + this.taskTime = taskTime; + this.taskFirePhoto = taskFirePhoto; + } + + public String getFireCode() { + return fireCode; + } + + public void setFireCode(String fireCode) { + this.fireCode = fireCode; + } + + public String getTaskInformation() { + return taskInformation; + } + + public void setTaskInformation(String taskInformation) { + this.taskInformation = taskInformation; + } + + public String getTaskTime() { + return taskTime; + } + + public void setTaskTime(String taskTime) { + this.taskTime = taskTime; + } + + public List getTaskFirePhoto() { + return taskFirePhoto; + } + + public void setTaskFirePhoto(List taskFirePhoto) { + this.taskFirePhoto = taskFirePhoto; + } + + @Override + public String toString() { + return "AppTaskBodyVo{" + + "fireCode='" + fireCode + '\'' + + ", taskInformation='" + taskInformation + '\'' + + ", taskTime='" + taskTime + '\'' + + ", taskFirePhoto=" + taskFirePhoto + + '}'; + } +} diff --git a/src/main/java/com/xkrs/service/FireAndRangerService.java b/src/main/java/com/xkrs/service/FireAndRangerService.java new file mode 100644 index 0000000..76b3b04 --- /dev/null +++ b/src/main/java/com/xkrs/service/FireAndRangerService.java @@ -0,0 +1,36 @@ +package com.xkrs.service; + +import com.xkrs.utils.Result; + +import java.io.UnsupportedEncodingException; + +/** + * @author xkrs + */ +public interface FireAndRangerService { + + /** + * 将火点分配给护林员 + * @param token + * @param rangerName + * @param fireCode + * @param handler + * @param verifier + * @return + */ + Result addFireAndRanger(String rangerName, String fireCode, String handler, String verifier, String token) throws UnsupportedEncodingException; + + /** + * 护林员查看自己的火点任务 + * @param token + * @return + */ + Result selectFireInformation(String token); + + /** + * 根据火点编码查询处理的信息 + * @param fireCode + * @return + */ + Result findFireAndRangerByFireCode(String fireCode, String token) throws Exception; +} diff --git a/src/main/java/com/xkrs/service/ForestRangerService.java b/src/main/java/com/xkrs/service/ForestRangerService.java new file mode 100644 index 0000000..bd82611 --- /dev/null +++ b/src/main/java/com/xkrs/service/ForestRangerService.java @@ -0,0 +1,31 @@ +package com.xkrs.service; + +/** + * @author xkrs + */ +public interface XkRsForestRangerService { + + /** + * 根据区县编码查询护林员的信息 + * @param rangerCountyCode + * @return + */ + String findByRangerCountyCode(String rangerCountyCode); + + /** + * 根据区县编码查询该区县所有护林员的信息 + * @param countyCode + * @param token + * @return + */ + String findAllByRangerCountyCode(String countyCode, String token); + + /** + * 根据手机号修改用户位置 + * @param rangerLatitude + * @param rangerLongitude + * @param rangerPhone + * @return + */ + String updateLatAndLonByPhone(String rangerLatitude,String rangerLongitude,String rangerPhone); +} diff --git a/src/main/java/com/xkrs/service/impl/FireAndRangerServiceImpl.java b/src/main/java/com/xkrs/service/impl/FireAndRangerServiceImpl.java new file mode 100644 index 0000000..2bacc77 --- /dev/null +++ b/src/main/java/com/xkrs/service/impl/FireAndRangerServiceImpl.java @@ -0,0 +1,171 @@ +package com.xkrs.service.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.xkrs.dao.*; +import com.xkrs.entity.*; +import com.xkrs.service.FireAndRangerService; +import com.xkrs.utils.*; +import com.xkrs.vo.AppPhotoVo; +import com.xkrs.vo.AppTaskBodyVo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cglib.beans.BeanCopier; +import org.springframework.http.HttpHeaders; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.transaction.Transactional; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author xkrs + */ +@Service +public class FireAndRangerServiceImpl implements FireAndRangerService { + + public static Logger log = LoggerFactory.getLogger(FireAndRangerServiceImpl.class); + + @Resource + private FireAndRangerDao fireAndRangerDao; + + @Resource + private ForestUserDao forestUserDao; + + @Resource + private FirePointDao firePointDao; + + @Resource + private XkRsForestRangerDao forestRangerDao; + + @Resource + private RestTemplateUtil restTemplateUtil; + + @Resource + private FireTaskDao fireTaskDao; + + @Resource + private FireTaskPhotoDao fireTaskPhotoDao; + + /** + * 将火点分配给护林员 + * @param rangerName + * @param fireCode + * @return + */ + @Transactional(rollbackOn = Exception.class) + @Override + public Result addFireAndRanger(String rangerName, String fireCode, String handler, String verifier, String token) throws UnsupportedEncodingException { + String tokenUserName = TokenUtil.getTokenUserName(token); + if(tokenUserName == null || "".equals(tokenUserName)){ + return Result.error("您还未注册和登录,请先注册和登录!"); + } + FireAndRanger byFireCode = fireAndRangerDao.findByFireCode(fireCode); + if(byFireCode != null){ + return Result.error("该火点已经分配,请勿重复操作"); + } + XkRsFirePoint byFireCode1 = firePointDao.findByFireCode(fireCode); + // 给app端推送的消息内容 + + Map map = new HashMap(3); + map.put("latitude",byFireCode1.getLatitude()); + map.put("longitude",byFireCode1.getLongitude()); + map.put("detailedAddress",byFireCode1.getDetailedAddress()); + String content = JSON.toJSONString(map); + String ss = URLEncoder.encode(content,"utf-8"); + + //String url = "https://api.xmpush.xiaomi.com/v3/message/alias?title=收到消息&description=请"+rangerName+ "去核查该火点信息&payload="+content+"&restricted_package_name=com.xkrs.fieldverification¬ify_id=1&extra.notify_effect=2&extra.intent_uri=fieldverify://xkrs.com&alias="+rangerName; + + String url = "https://api.xmpush.xiaomi.com/v3/message/alias?title=收到消息&description=请"+verifier+"去核查该火点信息&payload="+ss+"&restricted_package_name=com.xkrs.fieldverification¬ify_id=2&extra.notify_effect=2&extra.intent_uri=fieldverify://xkrs.com&alias="+rangerName+"&extra.notify_foreground=0&extra.channel_id=mipush"; + + String time = LocalDateTimeUtil.localDateTime2String(LocalDateTime.now()); + FireAndRanger fireAndRanger = new FireAndRanger(); + fireAndRanger.setRangerName(rangerName); + fireAndRanger.setFireCode(fireCode); + fireAndRanger.setHandlerTime(time); + fireAndRanger.setHandler(handler); + fireAndRanger.setVerifier(verifier); + fireAndRanger.setProgressType("1"); + + // 将火点分配给该护林员后,将护林员状态修改为1 表示正在执行火点任务 + forestRangerDao.updateRangerTypeByPhone(rangerName,"1"); + + JSONObject jsonObject = new JSONObject(); + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.add("Authorization","key=QW+6vVbWptJHscqD7zuM5w=="); + log.info("-----------已向app发送消息"); + restTemplateUtil.doPostMessageToApp(url, httpHeaders, jsonObject); + + FireAndRanger save = fireAndRangerDao.save(fireAndRanger); + if(save == null){ + return Result.error("操作失败"); + } + return Result.ok("操作成功"); + } + + /** + * 护林员查看自己的火点任务 + * @param token + * @return + */ + @Override + public Result selectFireInformation(String token) { + String tokenUserName = TokenUtil.getTokenUserName(token); + if(tokenUserName == null || "".equals(tokenUserName)){ + return Result.error("您还未注册和登录,请先注册和登录!"); + } + XkRsUser xkRsUser = forestUserDao.selectUserName(tokenUserName); + XkRsForestRanger byRangerPhone = forestRangerDao.findByRangerPhone(xkRsUser.getNickName()); + if(byRangerPhone.getRangerType().equals("1")){ + FireAndRanger byRangerName = fireAndRangerDao.findByRangerNameAndProgressType(xkRsUser.getNickName(),"1"); + if(byRangerName == null){ + return Result.error("暂时还没有任何任务"); + } + XkRsFirePoint byFireCode = firePointDao.findByFireCode(byRangerName.getFireCode()); + return Result.ok(byFireCode); + }else { + return Result.error("暂时还没有任务"); + } + + } + + /** + * 根据火点编码查询核查的信息 + * @param fireCode + * @return + */ + @Override + public Result findFireAndRangerByFireCode(String fireCode, String token) throws Exception { + String tokenUserName = TokenUtil.getTokenUserName(token); + if(tokenUserName == null || "".equals(tokenUserName)){ + return Result.error("您还未注册和登录,请先注册和登录!"); + } + FireAndRanger byFireCode = fireAndRangerDao.findByFireCode(fireCode); + if(byFireCode == null){ + return Result.error("暂时还没有该火点核查的信息"); + } + Map map = new HashMap(3); + map.put("fire",byFireCode); + FireTask byTaskFireCode = fireTaskDao.findByTaskFireCode(fireCode); + if(byTaskFireCode == null){ + map.put("task",null); + return Result.ok().data(map); + }else { + AppTaskBodyVo appTaskBodyVo = new AppTaskBodyVo(); + // 做映射,返回vo类对象 + BeanCopier beanCopier = BeanCopier.create(FireTask.class, AppTaskBodyVo.class, false); + beanCopier.copy(byTaskFireCode,appTaskBodyVo,null); + + List photoPath = fireTaskPhotoDao.findPhotoPath(fireCode); + List appPhotoVos = ObjectToBeanUtils.objectToBean(photoPath, AppPhotoVo.class); + appTaskBodyVo.setTaskFirePhoto(appPhotoVos); + map.put("task",appTaskBodyVo); + return Result.ok().data(map); + } + } +} diff --git a/src/main/java/com/xkrs/service/impl/ForestRangerServiceImpl.java b/src/main/java/com/xkrs/service/impl/ForestRangerServiceImpl.java new file mode 100644 index 0000000..4e7114c --- /dev/null +++ b/src/main/java/com/xkrs/service/impl/ForestRangerServiceImpl.java @@ -0,0 +1,83 @@ +package com.xkrs.service.impl; + +import com.xkrs.common.encapsulation.PromptMessageEnum; +import com.xkrs.common.tool.TokenUtil; +import com.xkrs.dao.XkRsForestRangerDao; +import com.xkrs.model.entity.ForestRanger; +import com.xkrs.service.XkRsForestRangerService; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.transaction.Transactional; +import java.util.List; +import java.util.Locale; + +import static com.xkrs.common.encapsulation.OutputEncapsulation.outputEncapsulationObject; + +/** + * @author xkrs + */ +@Service +public class XkRsForestRangerServiceImpl implements XkRsForestRangerService { + + @Resource + private XkRsForestRangerDao xkRsForestRangerDao; + + /** + * 根据曲线编码查询护林员的信息 + * @param rangerCountyCode + * @return + */ + @Override + public String findByRangerCountyCode(String rangerCountyCode) { + // 获取区域信息 + Locale locale = LocaleContextHolder.getLocale(); + ForestRanger byRangerCountyCode = xkRsForestRangerDao.findByRangerCountyCode(rangerCountyCode); + if(byRangerCountyCode == null){ + return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"该区县暂时还没有相关护林员的信息",locale); + } + return outputEncapsulationObject(PromptMessageEnum.SUCCESS,byRangerCountyCode,locale); + } + + /** + * 根据区县编码查询该区县所有护林员的信息 + * @param countyCode + * @return + */ + @Override + public String findAllByRangerCountyCode(String countyCode, String token) { + // 获取区域信息 + Locale locale = LocaleContextHolder.getLocale(); + String tokenUserName = TokenUtil.getTokenUserName(token); + if("370000".equals(countyCode)){ + List all = xkRsForestRangerDao.findAll(); + if(all == null || all.size() == 0){ + return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"暂时还没该省护林员的信息",locale); + } + return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,all,locale); + }else { + List allByRangerCountyCode = xkRsForestRangerDao.findAllsByRangerCountyCode(countyCode); + if(allByRangerCountyCode == null || allByRangerCountyCode.size() == 0){ + return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"暂时还没该市护林员的信息",locale); + } + return outputEncapsulationObject(PromptMessageEnum.SUCCESS,allByRangerCountyCode,locale); + } + } + + /** + * 根据手机号修改护林员的位置信息 + * @param rangerLatitude + * @param rangerLongitude + * @param rangerPhone + * @return + */ + @Transactional(rollbackOn = Exception.class) + @Override + public String updateLatAndLonByPhone(String rangerLatitude, String rangerLongitude, String rangerPhone) { + // 获取区域信息 + Locale locale = LocaleContextHolder.getLocale(); + xkRsForestRangerDao.updateLatAndLonByPhone(rangerLatitude,rangerLongitude,rangerPhone); + return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"操作成功",locale); + } +} diff --git a/src/main/java/com/xkrs/utils/Query.java b/src/main/java/com/xkrs/utils/Query.java index 0cba65d..3fd550f 100644 --- a/src/main/java/com/xkrs/utils/Query.java +++ b/src/main/java/com/xkrs/utils/Query.java @@ -1,5 +1,7 @@ package com.xkrs.utils; +import com.xkrs.dao.FirePointDao; +import com.xkrs.model.entity.FirePointEntity; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Component; @@ -18,31 +20,41 @@ import java.util.List; @Component public class Query { - /*@Resource - private ProjectOverviewDao projectOverviewDao;*/ + @Resource + private FirePointDao firePointDao; /** * 动态多条件查询项目信息 * @param * @return */ - /*public List selectProjectByDynamic(String projectNumber, String projectName) { - Specification specification = new Specification() { + public List selectFirePoint(String cityCode,String satelliteType,String landType,String startTime,String endTime) { + Specification specification = new Specification() { @Override - public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) { + public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) { List list = new ArrayList<>(); - if (projectNumber != null && !"".equals(projectNumber)) { - list.add(criteriaBuilder.equal(root.get("projectNumber").as(String.class), projectNumber)); + if (cityCode != null && !"".equals(cityCode)) { + String substring = cityCode.substring(0, 4); + list.add(criteriaBuilder.like(root.get("countyCode").as(String.class), "%" + substring + "%")); } - if (projectName != null && !"".equals(projectName)) { - list.add(criteriaBuilder.like(root.get("projectName").as(String.class), "%" + projectName + "%")); + if (satelliteType != null && !"".equals(satelliteType)) { + list.add(criteriaBuilder.equal(root.get("satelliteType").as(String.class), satelliteType)); + } + if (landType != null && !"".equals(landType)) { + list.add(criteriaBuilder.equal(root.get("landType").as(String.class), landType)); + } + if(startTime != null && !"".equals(startTime)){ + list.add(criteriaBuilder.greaterThanOrEqualTo(root.get("addTime").as(String.class), startTime)); + } + if(endTime != null && !"".equals(endTime)){ + list.add(criteriaBuilder.lessThanOrEqualTo(root.get("addTime").as(String.class), endTime)); } Predicate[] predicates = new Predicate[list.size()]; return criteriaBuilder.and(list.toArray(predicates)); } }; - return projectOverviewDao.findAll(specification); - }*/ + return firePointDao.findAll(specification); + } } \ No newline at end of file diff --git a/src/main/java/com/xkrs/utils/RestTemplateUtil.java b/src/main/java/com/xkrs/utils/RestTemplateUtil.java new file mode 100644 index 0000000..dfb4384 --- /dev/null +++ b/src/main/java/com/xkrs/utils/RestTemplateUtil.java @@ -0,0 +1,94 @@ +package com.xkrs.utils; + +import com.alibaba.fastjson.JSONObject; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import javax.annotation.Resource; + +/** + * @author xkrs + */ +@Service +public class RestTemplateUtil { + + @Resource + private RestTemplate restTemplate; + + /** + * 以get方式请求第三方http接口 getForEntity + * @param url + * @return + */ + public JSONObject doGetForEntity(String url) { + ResponseEntity responseEntity = restTemplate.getForEntity(url, JSONObject.class); + return responseEntity.getBody(); + } + + /** + * 以get方式请求第三方http接口 getForObject + * 返回值返回的是响应体 + * @param url + * @return + */ + public JSONObject doGetForObject(String url) { + JSONObject result = restTemplate.getForObject(url, JSONObject.class); + return result; + } + + /** + * 以post方式请求第三方http接口 postForEntity + * @param url + * @return + */ + public JSONObject doPostForEntity(String url) { + //可设置请求参数 + JSONObject param = new JSONObject(); + param.put("userName","admin"); + param.put("ipAddress",""); + param.put("clientType","WINPC"); + ResponseEntity responseEntity = restTemplate.postForEntity(url, param, JSONObject.class); + return responseEntity.getBody(); + } + + /** + * 以post方式请求第三方http接口 postForObject + * @param url + * @return + */ + public JSONObject doPostForObject(String url,JSONObject param) { + JSONObject result = restTemplate.postForObject(url, param, JSONObject.class); + return result; + } + + + /** + * exchange方法请求第三方http接口 + * + */ + public JSONObject doExchange(String url, HttpHeaders httpHeaders, JSONObject param) { + //创建请求对象 + HttpEntity request = new HttpEntity<>(param,httpHeaders); + //执行请求(请求路径,请求方式,请求体,响应体) + ResponseEntity responseEntity = restTemplate.exchange(url, HttpMethod.POST, request, JSONObject.class); + return responseEntity.getBody(); + } + + /** + * 发送第三方小米推送请求,向app端推送消息 + * @param url + * @param httpHeaders + * @param param + */ + public void doPostMessageToApp(String url,HttpHeaders httpHeaders,JSONObject param) { + //创建请求对象 + HttpEntity request = new HttpEntity<>(param,httpHeaders); + //执行请求(请求路径,请求方式,请求体,响应体) + restTemplate.exchange(url, HttpMethod.POST, request, JSONObject.class); + } + +}