diff --git a/sgzb-common/sgzb-common-core/src/main/java/com/bonus/sgzb/common/core/constant/HttpStatus.java b/sgzb-common/sgzb-common-core/src/main/java/com/bonus/sgzb/common/core/constant/HttpStatus.java index 2665356..06e4abc 100644 --- a/sgzb-common/sgzb-common-core/src/main/java/com/bonus/sgzb/common/core/constant/HttpStatus.java +++ b/sgzb-common/sgzb-common-core/src/main/java/com/bonus/sgzb/common/core/constant/HttpStatus.java @@ -102,6 +102,11 @@ public class HttpStatus */ public static final String LAST_POSITION_URL = "http://gps51.com/webapi?action=lastposition&token="; + /** + *iot设备获取地址 + */ + public static final String REPORT_OF_FLINE = "http://gps51.com/webapi?action=reportoffline&token="; + /** *iot查询行程地址 */ diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/controller/LargeScreenController.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/controller/LargeScreenController.java index d0fdda7..a021bf7 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/controller/LargeScreenController.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/controller/LargeScreenController.java @@ -4,16 +4,15 @@ import com.bonus.sgzb.common.core.web.controller.BaseController; import com.bonus.sgzb.common.core.web.domain.AjaxResult; import com.bonus.sgzb.common.log.annotation.Log; import com.bonus.sgzb.common.log.enums.BusinessType; +import com.bonus.sgzb.largeScreen.domain.IotMaCodeMachine; import com.bonus.sgzb.largeScreen.domain.PageResultVo; import com.bonus.sgzb.largeScreen.domain.ParamsDto; import com.bonus.sgzb.largeScreen.service.ILargeScreenService; import lombok.extern.slf4j.Slf4j; -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; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; /** * @author 10488 @@ -77,6 +76,19 @@ public class LargeScreenController extends BaseController { return service.getEquipmentDisByMap(dto); } + @Log(title = "获取工程经纬度、地址",businessType = BusinessType.QUERY) + @GetMapping("getEquipmentDis") + public AjaxResult getEquipmentDis(ParamsDto dto) { + return service.getEquipmentDis(dto); + } + + + @Log(title = "获取iot编码绑定设备", businessType = BusinessType.QUERY) + @GetMapping("getIotMaCodeMachine") + public AjaxResult getIotMaCodeMachine(String province) { + List iotMaCodeMachine = service.getIotMaCodeMachine(province); + return AjaxResult.success(iotMaCodeMachine); + } @Log(title = "施工机具/安全工器具总保有量",businessType = BusinessType.QUERY) @PostMapping("getTotalOwnership") public AjaxResult getTotalOwnership() { diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/domain/IotLocationVo.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/domain/IotLocationVo.java new file mode 100644 index 0000000..9a5c5e5 --- /dev/null +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/domain/IotLocationVo.java @@ -0,0 +1,46 @@ +package com.bonus.sgzb.largeScreen.domain; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class IotLocationVo { + + /** iot设备ID */ + @ApiModelProperty(value = "iot设备ID") + private String iotId; + + /** 经度 */ + @ApiModelProperty(value = "经度") + private BigDecimal callon; + + /** 经度 */ + @ApiModelProperty(value = "纬度") + private BigDecimal callat; + + /** 开始时间 */ + @ApiModelProperty(value = "开始时间") + private String beginTime; + + /** 结束时间 */ + @ApiModelProperty(value = "结束时间") + private String endTime; + + /** 详细地址 */ + @ApiModelProperty(value = "详细地址") + private String address; + + + /** 报警时间 */ + @ApiModelProperty(value = "报警时间") + private String startAlarmTime; + + /** 报警内容 */ + @ApiModelProperty(value = "报警内容") + private String startAlarm; + /** 电量百分比 */ + @ApiModelProperty(value = "电量百分比") + private Double voltagepercent; +} diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/domain/IotMaCodeMachine.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/domain/IotMaCodeMachine.java new file mode 100644 index 0000000..07e034b --- /dev/null +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/domain/IotMaCodeMachine.java @@ -0,0 +1,60 @@ +package com.bonus.sgzb.largeScreen.domain; + +import lombok.Data; + +/** + * @Author:liang.chao + * @Date:2024/8/19 - 10:00 + */ + +@Data +public class IotMaCodeMachine { + /** + * 机具编码 + */ + private String maCode; + /** + * 类型型号 + */ + private String typeName; + /** + * 规格型号 + */ + private String typeModelName; + /** + * 机具状态 + */ + private String maStatus; + /** + * 项目id + */ + private String projectId; + /** + * 项目名称 + */ + private String projectName; + /** + * 定位设备名称 + */ + private String iotMachinetName; + /** + * iot设备编码 + */ + private String iotCode; + /** + * 绑定状态 + */ + private String bindStatus; + /** + * 省份 + */ + private String province; + /** + * 协议id + */ + private String agreementId; + /** + * 当前位置 + */ + private IotLocationVo iotLocationVo; +} diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/mapper/LargeScreenMapper.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/mapper/LargeScreenMapper.java index bdb9b6c..6b9e627 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/mapper/LargeScreenMapper.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/mapper/LargeScreenMapper.java @@ -172,4 +172,8 @@ public interface LargeScreenMapper { * @return */ List getRepairList(ParamsDto dto); + + List getEquipmentDis(ParamsDto dto); + + List getIotMaCodeMachine(String province); } diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/service/ILargeScreenService.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/service/ILargeScreenService.java index 94787c0..43caace 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/service/ILargeScreenService.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/service/ILargeScreenService.java @@ -1,9 +1,12 @@ package com.bonus.sgzb.largeScreen.service; import com.bonus.sgzb.common.core.web.domain.AjaxResult; +import com.bonus.sgzb.largeScreen.domain.IotMaCodeMachine; import com.bonus.sgzb.largeScreen.domain.PageResultVo; import com.bonus.sgzb.largeScreen.domain.ParamsDto; +import java.util.List; + /** * @author 10488 * 大屏 @@ -167,4 +170,8 @@ public interface ILargeScreenService { * @return */ AjaxResult getMaintenanceChartByMonth(ParamsDto dto); + + AjaxResult getEquipmentDis(ParamsDto dto); + + List getIotMaCodeMachine(String province); } diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/service/impl/LargeScreenServiceImpl.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/service/impl/LargeScreenServiceImpl.java index 4580a53..916be3e 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/service/impl/LargeScreenServiceImpl.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/largeScreen/service/impl/LargeScreenServiceImpl.java @@ -1,11 +1,20 @@ package com.bonus.sgzb.largeScreen.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.bonus.sgzb.common.core.constant.HttpStatus; +import com.bonus.sgzb.common.core.constant.TokenConstants; import com.bonus.sgzb.common.core.utils.DateTimeHelper; +import com.bonus.sgzb.common.core.utils.HttpHelper; +import com.bonus.sgzb.common.core.utils.StringHelper; import com.bonus.sgzb.common.core.web.domain.AjaxResult; +import com.bonus.sgzb.common.redis.service.RedisService; import com.bonus.sgzb.largeScreen.domain.*; import com.bonus.sgzb.largeScreen.mapper.LargeScreenMapper; import com.bonus.sgzb.largeScreen.service.ILargeScreenService; import com.bonus.sgzb.largeScreen.util.CommonUtil; +import com.bonus.sgzb.material.config.ExceptionEnum; import com.bonus.sgzb.material.domain.EquipmentDis; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -15,6 +24,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -31,6 +41,9 @@ public class LargeScreenServiceImpl implements ILargeScreenService { @Autowired private CommonUtil commonUtil; + @Resource + private RedisService redisService; + @Override public AjaxResult getMaterialReqData() { HashMap map = new HashMap<>(2); @@ -343,6 +356,89 @@ public class LargeScreenServiceImpl implements ILargeScreenService { return AjaxResult.success(objectHashMap); } + @Override + public AjaxResult getEquipmentDis(ParamsDto dto) { + List equipmentDis = mapper.getEquipmentDis(dto); + return AjaxResult.success(equipmentDis); + } + + @Override + public List getIotMaCodeMachine(String province) { + List iotMaCodeMachine = mapper.getIotMaCodeMachine(province); + for (IotMaCodeMachine maCodeMachine : iotMaCodeMachine) { + getLocation(maCodeMachine); + } + return iotMaCodeMachine; + } + + public void getLocation(IotMaCodeMachine iotMaCodeMachine) { + log.info("getLocation:{}", iotMaCodeMachine); + if (iotMaCodeMachine == null || iotMaCodeMachine.getIotCode() == null) { + throw new RuntimeException(ExceptionEnum.PARAM_NULL.getMsg()); + } + List list = new ArrayList<>(); + Map map = new HashMap<>(); + //从redis中获取token + String redisCode = redisService.getCacheObject(TokenConstants.TOKEN_LOCATION); + //如果token为空,先去调登录接口,获取token + if (redisCode == null) { + redisCode = HttpHelper.getIotToken(); + redisService.setCacheObject(TokenConstants.TOKEN_LOCATION, redisCode, 23L, TimeUnit.HOURS); + } + map.clear(); + list.add(iotMaCodeMachine.getIotCode()); + map.put("deviceids", list); + String param = JSON.toJSONString(map); + String res = HttpHelper.doPost(HttpStatus.LAST_POSITION_URL + redisCode, param); + String res1 = HttpHelper.doPost(HttpStatus.REPORT_OF_FLINE + redisCode, param); + //对返回的结果进行解析 + IotLocationVo iotLocationVo = resultDataHandler(res); + String address = resultDataHandler1(res1); + iotLocationVo.setAddress(address); + iotMaCodeMachine.setIotLocationVo(iotLocationVo); + } + + private IotLocationVo resultDataHandler(String res) { + if (res == null) { + throw new RuntimeException(ExceptionEnum.RETURN_DATA_IS_EMPTY.getMsg()); + } + IotLocationVo iotLocationVo = new IotLocationVo(); + JSONObject object = JSONObject.parseObject(res); + String status = object.getString("status"); + String cause = object.getString("cause"); + if ("0".equals(status) && "OK".equals(cause)) { + String records = object.getString("records"); + //判断返回结果是否为空 + if (records != null) { + JSONArray jsonArray = JSON.parseArray(records); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject = JSONObject.from(jsonArray.getJSONObject(i)); + iotLocationVo.setIotId(jsonObject.getString("deviceid")); + iotLocationVo.setVoltagepercent(Double.valueOf(jsonObject.getString("voltagepercent"))); + iotLocationVo.setCallat(StringHelper.conversionBigDecimal(jsonObject.getString("callat"))); + iotLocationVo.setCallon(StringHelper.conversionBigDecimal(jsonObject.getString("callon"))); + } + } + } + return iotLocationVo; + } + + private String resultDataHandler1(String res) { + if (res == null) { + throw new RuntimeException(ExceptionEnum.RETURN_DATA_IS_EMPTY.getMsg()); + } + String address = ""; + JSONObject object = JSONObject.parseObject(res); + String status = object.getString("status"); + String cause = object.getString("cause"); + if ("0".equals(status) && "OK".equals(cause)) { + JSONObject addressmap = object.getJSONObject("addressmap"); + for (String s : addressmap.keySet()) { + address = addressmap.get(s).toString(); + } + } + return address; + } @Override public AjaxResult getTotalOwnership() { List list = new ArrayList<>(); diff --git a/sgzb-modules/sgzb-material/src/main/resources/mapper/largeScreen/LargeScreenMapper.xml b/sgzb-modules/sgzb-material/src/main/resources/mapper/largeScreen/LargeScreenMapper.xml index d5383ae..ecad95c 100644 --- a/sgzb-modules/sgzb-material/src/main/resources/mapper/largeScreen/LargeScreenMapper.xml +++ b/sgzb-modules/sgzb-material/src/main/resources/mapper/largeScreen/LargeScreenMapper.xml @@ -869,5 +869,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ORDER BY tt.create_time DESC + + \ No newline at end of file