Commit 77924dc6 authored by wujiang's avatar wujiang

提交车辆管理新代码

parent d95095f2
......@@ -104,10 +104,7 @@ public class Car extends BaseEntity {
@ApiModelProperty(value = "队伍名称(冗余字段来源于平台)")
private String teamName;
//新加
@ApiModelProperty(value = "机构/部门名称")
@TableField("biz_org_name")
private String bizOrgName;
......@@ -116,12 +113,6 @@ public class Car extends BaseEntity {
@TableField("biz_org_code")
private String bizOrgCode;
@ApiModelProperty(value = "图片")
@TableField(exist = false)
private List<UploadFile> img;
......@@ -176,4 +167,21 @@ public class Car extends BaseEntity {
@TableField(exist = false)
private String iotStatus;
@TableField(exist = false)
private Long categoryId;
@TableField(exist = false)
private String importStr;
@TableField(exist = false)
private Integer totalTravel;
@TableField(exist = false)
private double longtitude;
@TableField(exist = false)
private double latitude;
@TableField(exist = false)
private Integer speed;
}
package com.yeejoin.equipmanage.common.entity;
import java.sql.Time;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yeejoin.equipmanage.common.entity.publics.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 车量里程表
*
* @author duanwei
* @date 2023-02-01
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(value="WlCarMileage对象", description="车量里程表")
public class WlCarMileage extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "iot编码")
private String iotCode;
@ApiModelProperty(value = "里程km")
private Double travel;
@ApiModelProperty(value = "日期")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date date;
@ApiModelProperty(value = "开始时间")
private Date startTime;
@ApiModelProperty(value = "结束时间")
private Date endTime;
@ApiModelProperty(value = "耗时")
private Long takeTime;
@ApiModelProperty(value = "开始地址")
private String startName;
@ApiModelProperty(value = "结束地址")
private String endName;
@ApiModelProperty(value = "开始精度")
private Double startLongitude;
@ApiModelProperty(value = "开始纬度")
private Double startLatitude;
@ApiModelProperty(value = "结束精度")
private Double endLongitude;
@ApiModelProperty(value = "结束纬度")
private Double endLatitude;
@ApiModelProperty(value = "开始速度km/h")
private Integer startSpeed;
@ApiModelProperty(value = "结束速度km/h")
private Integer endSpeed;
@TableField(exist = false)
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date filterDate;
@TableField(exist = false)
private String name;
@TableField(exist = false)
private String time;
@TableField(exist = false)
private long carId;
}
package com.yeejoin.equipmanage.common.entity.dto;
import java.util.List;
import com.yeejoin.equipmanage.common.entity.WlCarMileage;
import lombok.Data;
@Data
public class CarTravelDto {
Long total;
String totalTime;
Integer totalTravel;
List<WlCarMileage> records;
}
......@@ -66,4 +66,17 @@ public class EquipTypeAmountPageDTO extends BaseDTO<EquipmentSpecific> {
@ApiModelProperty(value = "缺陷管理新增页面用,其余地方可忽略 1-是缺陷管理 0-不是")
private Integer isDefect;
@ApiModelProperty(value = "关键字-地图用")
private String keyword;
@ApiModelProperty(value = "页数-地图用")
private Integer current;
@ApiModelProperty(value = "分页大小-地图用")
private Integer size;
@ApiModelProperty(value = "车牌号")
private String carNum;
}
......@@ -55,4 +55,10 @@ public class EquipTypeImgAmountVO {
@ApiModelProperty(value = "所在建筑")
private String belongBuildName;
@ApiModelProperty(value = "精度")
private Double longitude;
@ApiModelProperty(value = "纬度")
private Double latitude;
}
package com.yeejoin.equipmanage.common.utils;
public class CoordinateUtil {
// WGS84标准参考椭球中的地球长半径(单位:千米)
private static final double EARH_RADIUS_WGS84 = 6378137.0/1000;
public static double distance(double lat1, double lng1, double lat2, double lng2) {
double radLat1 = Math.toRadians(lat1);
double radLat2 = Math.toRadians(lat2);
double a = radLat1 - radLat2;
double b = Math.toRadians(lng1) - Math.toRadians(lng2);
double s = 2 * Math.asin(Math.sqrt(
Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
return Math.round(s * EARH_RADIUS_WGS84);
}
}
......@@ -226,4 +226,45 @@ public class QRCodeUtil {
System.out.println(genQrCodeBase64PngWithWord("101",100,100,"sd",100));
}
/**
* 根据二维码信息,生成二维码图片 用户excel,word等导出图片 可自定义图片大小
*
* @param content
* @return
*/
public static byte[] generateQRCodeImageByteData(String content, int size) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
hints.put(EncodeHintType.CHARACTER_SET, CHARSET);
hints.put(EncodeHintType.MARGIN, 1);
BitMatrix bitMatrix = new MultiFormatWriter().encode(
content
, BarcodeFormat.QR_CODE
, size
, size,
hints);
int width = bitMatrix.getWidth();
int height = bitMatrix.getHeight();
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);
}
}
ImageIO.write(image, "png", out);
return out.toByteArray();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}
package com.yeejoin.equipmanage.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @program: api
* @description:
* @author: duanwei
* @create: 2019-12-13 11:16
**/
@Order(Ordered.HIGHEST_PRECEDENCE)
@Configuration
public class CORSFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS,PUT,DELETE,PATCH,HEAD");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers",
"Origin, X-Requested-With, X-Access-Token, X-Api-Key, Content-Type, Accept, Cache-Control,appkey,token,product");
//response.setHeader("Access-Control-Allow-Headers","*");
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
response.setStatus(HttpServletResponse.SC_OK);
} else {
filterChain.doFilter(servletRequest, servletResponse);
}
}
@Override
public void destroy() {
}
}
package com.yeejoin.equipmanage.controller;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.scheduling.annotation.Async;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
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.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.healthmarketscience.jackcess.util.OleBlob.ContentType;
import com.itextpdf.text.pdf.codec.Base64.InputStream;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.dto.OrgMenuDto;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.equipmanage.common.dto.CarInfoDto;
import com.yeejoin.equipmanage.common.dto.CarStatusInfoDto;
import com.yeejoin.equipmanage.common.entity.*;
import com.yeejoin.equipmanage.common.entity.Car;
import com.yeejoin.equipmanage.common.entity.CarProperty;
import com.yeejoin.equipmanage.common.entity.Equipment;
import com.yeejoin.equipmanage.common.entity.EquipmentCategory;
import com.yeejoin.equipmanage.common.entity.EquipmentDetail;
import com.yeejoin.equipmanage.common.entity.EquipmentIndex;
import com.yeejoin.equipmanage.common.entity.EquipmentOnCar;
import com.yeejoin.equipmanage.common.entity.EquipmentQrcode;
import com.yeejoin.equipmanage.common.entity.ManufacturerInfo;
import com.yeejoin.equipmanage.common.entity.SystemDic;
import com.yeejoin.equipmanage.common.entity.publics.CommonResponse;
import com.yeejoin.equipmanage.common.entity.vo.CarIndexVo;
import com.yeejoin.equipmanage.common.entity.vo.EquipmentOnCarAppVO;
import com.yeejoin.equipmanage.common.enums.*;
import com.yeejoin.equipmanage.common.utils.*;
import com.yeejoin.equipmanage.common.vo.*;
import com.yeejoin.equipmanage.config.EquipmentIotMqttReceiveConfig;
import com.yeejoin.equipmanage.common.enums.CarStatusEnum;
import com.yeejoin.equipmanage.common.enums.IndustryEnum;
import com.yeejoin.equipmanage.common.enums.OnBoardEquipmentEnum;
import com.yeejoin.equipmanage.common.enums.SourceTypeEnum;
import com.yeejoin.equipmanage.common.enums.SystemDicTypeEum;
import com.yeejoin.equipmanage.common.enums.TrueOrFalseEnum;
import com.yeejoin.equipmanage.common.utils.CommonResponseUtil;
import com.yeejoin.equipmanage.common.utils.DateUtils;
import com.yeejoin.equipmanage.common.utils.NameUtils;
import com.yeejoin.equipmanage.common.utils.ParsePropertyUtil;
import com.yeejoin.equipmanage.common.utils.QRCodeUtil;
import com.yeejoin.equipmanage.common.utils.SpringUtils;
import com.yeejoin.equipmanage.common.utils.StringUtil;
import com.yeejoin.equipmanage.common.vo.CarForUE4VO;
import com.yeejoin.equipmanage.common.vo.CarInfosResponse;
import com.yeejoin.equipmanage.common.vo.EquipStateOnCarVo;
import com.yeejoin.equipmanage.common.vo.ExtinguishantLossRequest;
import com.yeejoin.equipmanage.common.vo.ExtinguishantRequeset;
import com.yeejoin.equipmanage.common.vo.LonAndLatEntityVo;
import com.yeejoin.equipmanage.common.vo.OnBoardEquipment;
import com.yeejoin.equipmanage.fegin.JcsFeign;
import com.yeejoin.equipmanage.mapper.*;
import com.yeejoin.equipmanage.service.*;
import com.yeejoin.equipmanage.service.impl.EquipmentSpecificSerivceImpl;
import com.yeejoin.equipmanage.mapper.CarInfoMapper;
import com.yeejoin.equipmanage.mapper.CarMapper;
import com.yeejoin.equipmanage.mapper.CarPropertyMapper;
import com.yeejoin.equipmanage.mapper.EquipmentCategoryMapper;
import com.yeejoin.equipmanage.mapper.EquipmentDetailMapper;
import com.yeejoin.equipmanage.mapper.EquipmentIndexMapper;
import com.yeejoin.equipmanage.mapper.EquipmentMapper;
import com.yeejoin.equipmanage.mapper.EquipmentQrcodeMapper;
import com.yeejoin.equipmanage.mapper.ExtinguishantOnCarMapper;
import com.yeejoin.equipmanage.mapper.ManufacturerInfoMapper;
import com.yeejoin.equipmanage.mapper.SystemDicMapper;
import com.yeejoin.equipmanage.service.ICarInfoService;
import com.yeejoin.equipmanage.service.ICarLonAndLatDataService;
import com.yeejoin.equipmanage.service.ICarPropertyService;
import com.yeejoin.equipmanage.service.ICarService;
import com.yeejoin.equipmanage.service.IEquipmentDetailService;
import com.yeejoin.equipmanage.service.IEquipmentIndexService;
import com.yeejoin.equipmanage.service.IEquipmentOnCarService;
import com.yeejoin.equipmanage.service.IEquipmentQrcodeService;
import com.yeejoin.equipmanage.service.IEquipmentService;
import com.yeejoin.equipmanage.service.ISourceStatistics;
import com.yeejoin.equipmanage.service.ISyncDataService;
import com.yeejoin.equipmanage.service.ISystemDicService;
import com.yeejoin.equipmanage.service.ProductionQRCode;
import com.yeejoin.equipmanage.service.impl.FireFightingSystemServiceImpl;
import com.yeejoin.equipmanage.service.impl.SourcesStatisticsImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.*;
import org.springframework.scheduling.annotation.Async;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.stream.Collectors;
/**
* 消防车信息
......@@ -171,21 +247,29 @@ public class CarController extends AbstractBaseController {
// Car carInstance = iCarService.saveCar(user, car, carInfo, carpList);
// saveFile(carInstance); 图片视频后期统一处理
//如果默认有id值则认为是更新
if (car.getId()!=null) {
Car car2 = updateCar(car);
CarController controllerProxy = SpringUtils.getBean(CarController.class);
controllerProxy.refreshAllCount();
return car2;
}
// 验证车辆code唯一性
String iotCode = car.getIotCode();
if(StringUtils.isNotEmpty(iotCode) && StringUtils.isNotEmpty(iotCode.trim())){
Car ar= carMapper.getCarsByIotCode(car.getIotCode());
if(ar!=null){
if (StringUtils.isNotEmpty(iotCode) && StringUtils.isNotEmpty(iotCode.trim())) {
Car ar = carMapper.getCarsByIotCode(car.getIotCode());
if (ar != null) {
throw new BadRequest("物联编码重复");
}
if(StringUtils.isNotEmpty(haveUsedIotPrefix) && Arrays.stream(haveUsedIotPrefix.split(",")).anyMatch(iotCode::startsWith)){
if (StringUtils.isNotEmpty(haveUsedIotPrefix)
&& Arrays.stream(haveUsedIotPrefix.split(",")).anyMatch(iotCode::startsWith)) {
throw new BadRequest("物联编码航班已占用");
}
}
car.setQrCode(QRCodeUtil.generateQRCode());
List<CarProperty> carPropertyList = car.getCarPropertyList();
if (carPropertyList.size() > 0) {
if (carPropertyList != null && carPropertyList.size() > 0) {
carPropertyList.forEach(x -> {
QueryWrapper<EquipmentIndex> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id", x.getEquipmentIndexId());
......@@ -200,6 +284,18 @@ public class CarController extends AbstractBaseController {
}
});
}
if (ObjectUtils.isEmpty(car.getName())) {
Equipment equipment = iEquipmentService.getById(car.getEquipmentId());
car.setName(equipment != null ? equipment.getName() : null);
}
if (ObjectUtils.isEmpty(car.getBizOrgName()) && !ObjectUtils.isEmpty(car.getBizOrgCode())) {
FeignClientResult<Map<String, Object>> result = Privilege.companyClient.queryByOrgcode(car.getBizOrgCode());
System.out.println("==============================" + JSONObject.toJSONString(result.getResult()));
if (result.getResult() != null&&result.getResult().containsKey("compnay")) {
Map<String,String> map = (Map<String, String>) result.getResult().get("compnay");
car.setBizOrgName(map.get("companyName"));
}
}
Car car2 = iCarService.saveOne(car);
CarController controllerProxy = SpringUtils.getBean(CarController.class);
controllerProxy.refreshAllCount();
......@@ -233,8 +329,6 @@ public class CarController extends AbstractBaseController {
// });
// }
@Async("equipAsyncExecutor")
public void refreshAllCount() {
// 清空单位装备分类树缓存
......@@ -252,7 +346,6 @@ public class CarController extends AbstractBaseController {
iSourceStatistics.initAllCategoryStatisticsData(SourceTypeEnum.IOT);
}
/**
* 根据iotCode查询
*
......@@ -313,21 +406,32 @@ public class CarController extends AbstractBaseController {
// saveFile(carInstance);视频图片文件后期统一处理
String iotCode = car.getIotCode();
if(StringUtil.isNotEmpty(iotCode) && StringUtils.isNotEmpty(iotCode.trim())){
Car ar= carMapper.getCarsByIotCodeExcludeCarId(car.getIotCode(),car.getId());
if(ar != null){
if (StringUtil.isNotEmpty(iotCode) && StringUtils.isNotEmpty(iotCode.trim())) {
Car ar = carMapper.getCarsByIotCodeExcludeCarId(car.getIotCode(), car.getId());
if (ar != null) {
throw new BadRequest("物联编码重复");
}
if(StringUtils.isNotEmpty(haveUsedIotPrefix) && Arrays.stream(haveUsedIotPrefix.split(",")).anyMatch(iotCode::startsWith)){
if (StringUtils.isNotEmpty(haveUsedIotPrefix)
&& Arrays.stream(haveUsedIotPrefix.split(",")).anyMatch(iotCode::startsWith)) {
throw new BadRequest("物联编码航班已占用");
}
}
//用来解绑车辆
if (!ObjectUtils.isEmpty(car.getTeamId())){
jcsFeign.getUserCar(car.getId(),car.getTeamId());
// 用来解绑车辆
if (!ObjectUtils.isEmpty(car.getTeamId())) {
jcsFeign.getUserCar(car.getId(), car.getTeamId());
}
if (ObjectUtils.isEmpty(car.getName())) {
Equipment equipment = iEquipmentService.getById(car.getEquipmentId());
car.setName(equipment != null ? equipment.getName() : null);
}
if (ObjectUtils.isEmpty(car.getBizOrgName()) && !ObjectUtils.isEmpty(car.getBizOrgCode())) {
FeignClientResult<Map<String, Object>> result = Privilege.companyClient.queryByOrgcode(car.getBizOrgCode());
System.out.println("==============================" + JSONObject.toJSONString(result.getResult()));
if (result.getResult() != null&&result.getResult().containsKey("compnay")) {
Map<String,String> map = (Map<String, String>) result.getResult().get("compnay");
car.setBizOrgName(map.get("companyName"));
}
}
Car car1 = iCarService.updateOneById(car);
CarController controllerProxy = SpringUtils.getBean(CarController.class);
......@@ -923,8 +1027,7 @@ public class CarController extends AbstractBaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "获取九大类二级统计")
@RequestMapping(value = "/getCarList/{ercode}", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
public IPage<Car> getCarList(@PathVariable(value = "ercode") String ercode, String orgcode, Car car, String
pageNum,
public IPage<Car> getCarList(@PathVariable(value = "ercode") String ercode, String orgcode, Car car, String pageNum,
String pageSize) {
Page<Car> pageBean;
if (StringUtils.isBlank(pageNum) || StringUtils.isBlank(pageSize)) {
......@@ -1098,8 +1201,8 @@ public class CarController extends AbstractBaseController {
Map<Long, List<CarIndexVo>> map = null;
// String orgCode = getOrgCode();
ReginParams ReginParams=getSelectedOrgInfo();
String orgCode= ReginParams.getPersonIdentity().getBizOrgCode();
ReginParams ReginParams = getSelectedOrgInfo();
String orgCode = ReginParams.getPersonIdentity().getBizOrgCode();
List<CarIndexVo> carVoList = iCarService.getCarsIotInfo(orgCode);
if (!carVoList.isEmpty()) {
......@@ -1251,9 +1354,9 @@ public class CarController extends AbstractBaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "获取消防队伍的消防车辆", notes = "获取消防队伍的消防车辆")
public ResponseModel getTeamCarList(@RequestParam(required = false) Long id,
@RequestParam(required = false) String sequenceNbr,
@RequestParam(required = false) Double longitude, @RequestParam(required = false) Double latitude) {
return CommonResponseUtil.success(iCarService.getTeamCarList(sequenceNbr,id, longitude, latitude));
@RequestParam(required = false) String sequenceNbr, @RequestParam(required = false) Double longitude,
@RequestParam(required = false) Double latitude) {
return CommonResponseUtil.success(iCarService.getTeamCarList(sequenceNbr, id, longitude, latitude));
}
/**
......@@ -1302,7 +1405,6 @@ public class CarController extends AbstractBaseController {
return ResponseHelper.buildResponse(menusList.getResult());
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/iot/companyTreeByUserAndType", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "根据登录人及类型获取公司部门树", notes = "根据登录人及类型获取公司部门树")
......@@ -1310,4 +1412,11 @@ public class CarController extends AbstractBaseController {
FeignClientResult<List<OrgMenuDto>> menusList = jcsFeign.getCompanyDeptTreeWithAuth(iotAuthKey, null);
return ResponseHelper.buildResponse(menusList.getResult());
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/getQRCode", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "获取二维码图片", notes = "获取二维码图片")
public ResponseModel<Object> getQRCode(long id) throws Exception {
return ResponseHelper.buildResponse(iCarService.getQRCode(id));
}
}
package com.yeejoin.equipmanage.controller;
import java.util.List;
import lombok.Data;
@Data
public class Coordinate {
//经纬度
private List<Double> lnglat;
//车速
private int speed;
}
......@@ -492,6 +492,50 @@ public class FireFightingSystemController extends AbstractBaseController {
}
@GetMapping(value = "/getEquipTypeAmountCar")
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "九大类下装备,通过code截取", notes = "九大类下装备信息列表")
public IPage<EquipTypeImgAmountVO> getEquipTypeAmountCarByGet(EquipTypeAmountPageDTO equipTypeAmountPage) {
String[] result = hierarchy.split(",");
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < result.length; i++) {
map.put(i, Integer.valueOf(result[i]));
}
if(equipTypeAmountPage.getCurrent()!=null&&equipTypeAmountPage.getSize()!=null)
{
equipTypeAmountPage.setPage(new Page<>(equipTypeAmountPage.getCurrent(),equipTypeAmountPage.getSize()));
}
if (StringUtil.isNotEmpty(equipTypeAmountPage.getEquipmentClassificationCode())) {
QueryWrapper<EquipmentCategory> equipmentCategoryQueryWrapper = new QueryWrapper<>();
equipmentCategoryQueryWrapper.eq("code", equipTypeAmountPage.getEquipmentClassificationCode());
equipmentCategoryQueryWrapper.eq("industry_code", equipTypeAmountPage.getIndustryCode());
EquipmentCategory equipmentCategory = equipmentCategoryService.getOne(equipmentCategoryQueryWrapper);
if (equipmentCategory == null) {
throw new RuntimeException("装备定义code有误");
}
int inhierarchy = 1;
for (int i = 0; i < result.length + 1; i++) {
//进来先判断是否默认就是空,如果为空第一层
if (equipmentCategory.getParentId() == null) {
//判断是否是最下面的子节点
if (i >= 4) {
inhierarchy = 8;
} else {
inhierarchy = map.get(i);
}
break;
} else {
//查找到循环几次为空
equipmentCategory = equipmentCategoryService.getById(equipmentCategory.getParentId());
}
}
return fireFightingSystemService.getColaCategoryAmountCarList(inhierarchy, equipTypeAmountPage.getEquipmentClassificationCode().substring(0, inhierarchy), equipTypeAmountPage);
} else {
return fireFightingSystemService.getColaCategoryAmountCarList(0, null, equipTypeAmountPage);
}
}
@PostMapping(value = "/getEquipTypeAmountEqu")
......
package com.yeejoin.equipmanage.controller;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.equipmanage.common.entity.WlCarMileage;
import com.yeejoin.equipmanage.common.entity.dto.CarTravelDto;
import com.yeejoin.equipmanage.common.utils.NameUtils;
import com.yeejoin.equipmanage.service.IWlCarMileageService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* 车量里程表
*
* @author duanwei
* @date 2023-02-01
*/
@RestController
@Api(tags = "车量里程表Api")
@RequestMapping(value = "/wl-car-mileage", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class WlCarMileageController {
@Autowired
IWlCarMileageService iWlCarMileageService;
/**
* 新增车量里程表
*
* @return
*/
@RequestMapping(value = "/save", method = RequestMethod.POST)
@ApiOperation(httpMethod = "POST", value = "新增车量里程表", notes = "新增车量里程表")
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
public boolean saveWlCarMileage(HttpServletRequest request, @RequestBody WlCarMileage wlCarMileage) {
return iWlCarMileageService.save(wlCarMileage);
}
/**
* 根据id删除
*
* @param id
* @return
*/
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ApiOperation(httpMethod = "DELETE", value = "根据id删除", notes = "根据id删除")
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
public boolean deleteById(HttpServletRequest request, @PathVariable Long id) {
return iWlCarMileageService.removeById(id);
}
/**
* 修改车量里程表
*
* @return
*/
@RequestMapping(value = "/updateById", method = RequestMethod.PUT)
@ApiOperation(httpMethod = "PUT", value = "修改车量里程表", notes = "修改车量里程表")
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
public boolean updateByIdWlCarMileage(HttpServletRequest request, @RequestBody WlCarMileage wlCarMileage) {
return iWlCarMileageService.updateById(wlCarMileage);
}
/**
* 根据id查询
*
* @param id
* @return
*/
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "根据id查询", notes = "根据id查询")
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
public WlCarMileage selectById(HttpServletRequest request, @PathVariable Long id) {
return iWlCarMileageService.getById(id);
}
/**
* 列表分页查询
*
* @return
*/
@RequestMapping(value = "/list", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "列表分页查询", notes = "列表分页查询")
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
public IPage<WlCarMileage> listPage(String pageNum, String pageSize, WlCarMileage wlCarMileage) {
Page<WlCarMileage> pageBean;
QueryWrapper<WlCarMileage> wlCarMileageQueryWrapper = new QueryWrapper<>();
Class<? extends WlCarMileage> aClass = wlCarMileage.getClass();
Arrays.stream(aClass.getDeclaredFields()).forEach(field -> {
try {
field.setAccessible(true);
Object o = field.get(wlCarMileage);
if (o != null) {
Class<?> type = field.getType();
String name = NameUtils.camel2Underline(field.getName());
if (type.equals(Integer.class)) {
Integer fileValue = (Integer) field.get(wlCarMileage);
wlCarMileageQueryWrapper.eq(name, fileValue);
} else if (type.equals(Long.class)) {
Long fileValue = (Long) field.get(wlCarMileage);
wlCarMileageQueryWrapper.eq(name, fileValue);
} else if (type.equals(String.class)) {
String fileValue = (String) field.get(wlCarMileage);
wlCarMileageQueryWrapper.eq(name, fileValue);
} else if (type.equals(Date.class)) {
Date fileValue = (Date) field.get(wlCarMileage);
wlCarMileageQueryWrapper.eq(name, fileValue);
} else {
String fileValue = (String) field.get(wlCarMileage);
wlCarMileageQueryWrapper.eq(name, fileValue);
}
}
} catch (Exception e) {
}
});
IPage<WlCarMileage> page;
if (StringUtils.isBlank(pageNum) || StringUtils.isBlank(pageSize)) {
pageBean = new Page<>(0, Long.MAX_VALUE);
} else {
pageBean = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
}
page = iWlCarMileageService.page(pageBean, wlCarMileageQueryWrapper);
return page;
}
/**
* 列表分页查询
*
* @return
*/
@RequestMapping(value = "/page", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "列表分页查询", notes = "列表分页查询")
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
public CarTravelDto page(Integer pageNum, Integer pageSize, WlCarMileage wlCarMileage) {
Page<WlCarMileage> pageBean;
if (pageNum == null || pageSize == null) {
pageBean = new Page<>(0, Long.MAX_VALUE);
} else {
pageBean = new Page<>(pageNum, pageSize);
}
Page<WlCarMileage> page = iWlCarMileageService.page(pageBean, wlCarMileage);
CarTravelDto carTravelDto = new CarTravelDto();
carTravelDto.setRecords(page.getRecords());
carTravelDto.setTotal(page.getTotal());
long totalTime = 0;
int totalTravel = 0;
for (WlCarMileage wl : page.getRecords()) {
totalTravel += wl.getTravel();
totalTime += wl.getTakeTime();
}
// // 初始化format格式
// SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
// // 设置时区,跳过此步骤会默认设置为"GMT+08:00" 得到的结果会多出来8个小时
// dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+00:00"));
//
// String timeStr = dateFormat.format(totalTime);
carTravelDto.setTotalTime(millisToStringShort(totalTime));
carTravelDto.setTotalTravel(totalTravel);
return carTravelDto;
}
public String millisToStringShort(long millis) {
StringBuffer strBuilder = new StringBuffer();
long temp = millis;
long hper = 60 * 60 * 1000;
long mper = 60 * 1000;
long sper = 1000;
if (temp / hper > 0) {
if ((temp / hper) < 10) {
strBuilder.append(0);
}
strBuilder.append(temp / hper).append(":");
}
temp = temp % hper;
if (temp / mper > 0) {
if ((temp / mper) < 10) {
strBuilder.append(0);
}
strBuilder.append(temp / mper).append(":");
}
temp = temp % mper;
if (temp / sper > 0) {
if ((temp / sper) < 10) {
strBuilder.append(0);
}
strBuilder.append(temp / sper);
}
return strBuilder.toString();
}
/**
* 获取轨迹
*
* @return
*/
@RequestMapping(value = "/travel", method = RequestMethod.GET)
@ApiOperation(httpMethod = "GET", value = "获取轨迹", notes = "获取轨迹")
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
public List<Coordinate> travel(long id) {
return iWlCarMileageService.getCoordinateList(id);
}
}
package com.yeejoin.equipmanage.fegin;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
/**
* @author DELL
*/
@FeignClient(name = "${iot.vehicle.track}", path = "iot", configuration = {FeignConfiguration.class})
//@FeignClient(name = "AMOS-API-IOT", path = "iot", configuration = {
// FeignConfiguration.class }, url = "http://39.98.224.23:33001")
@FeignClient(name = "AMOS-API-IOT", path = "iot", configuration = {
FeignConfiguration.class })
public interface IotFeign {
@RequestMapping(value = "/v1/livedata/list", method = RequestMethod.GET, consumes = "application/json")
ResponseModel selectList(
@RequestHeader("appKey") String appKey,
@RequestHeader("product") String product,
@RequestHeader("token") String token,
@RequestParam(value = "timeStart") String beginDate,
@RequestParam(value = "timeEnd") String endDate,
@RequestParam(value = "productKey") String productKey,
ResponseModel selectList(@RequestHeader("appKey") String appKey, @RequestHeader("product") String product,
@RequestHeader("token") String token, @RequestParam(value = "timeStart") String beginDate,
@RequestParam(value = "timeEnd") String endDate, @RequestParam(value = "productKey") String productKey,
@RequestParam(value = "deviceName") String deviceName,
@RequestParam(required = false, value = "fieldKey") String fieldKey);
@RequestMapping(value = "/v1/livedata/page", method = RequestMethod.GET, consumes = "application/json")
ResponseModel selectPage(
@RequestHeader("appKey") String appKey,
@RequestHeader("product") String product,
@RequestHeader("token") String token,
@RequestParam(value = "timeStart") String beginDate,
@RequestParam(value = "timeEnd") String endDate,
@RequestParam(value = "productKey") String productKey,
ResponseModel selectPage(@RequestHeader("appKey") String appKey, @RequestHeader("product") String product,
@RequestHeader("token") String token, @RequestParam(value = "timeStart") String beginDate,
@RequestParam(value = "timeEnd") String endDate, @RequestParam(value = "productKey") String productKey,
@RequestParam(value = "deviceName") String deviceName,
@RequestParam(required = false, value = "fieldKey") String fieldKey,
@RequestParam(value = "current") Integer current,
@RequestParam(value = "size") Integer size);
@RequestParam(value = "current") Integer current, @RequestParam(value = "size") Integer size);
@RequestMapping(value = "v1/livedata/common/top", method = RequestMethod.GET, consumes = "application/json")
ResponseModel selectOne(
@RequestHeader("appKey") String appKey,
@RequestHeader("product") String product,
@RequestHeader("token") String token,
@RequestParam(value = "top") String top,
ResponseModel selectOne(@RequestHeader("appKey") String appKey, @RequestHeader("product") String product,
@RequestHeader("token") String token, @RequestParam(value = "top") String top,
@RequestParam(value = "productKey") String productKey,
@RequestParam(value = "deviceName") String deviceName,
@RequestParam("FHS_FirePump_RunStatus") String key,
@RequestParam(value = "deviceName") String deviceName, @RequestParam("FHS_FirePump_RunStatus") String key,
@RequestParam(required = false, value = "fieldKey") String fieldKey);
@GetMapping("/v1/livedata/common/list")
ResponseModel<List<Object>> getLiveData(@RequestParam("measurement") String measurement,
@RequestParam("deviceName") String deviceName,
@RequestParam("timeStart") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date timeStart,
@RequestParam("timeEnd") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")Date timeEnd);
}
package com.yeejoin.equipmanage.listener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.component.emq.EmqxListener;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.equipmanage.common.entity.WlCarMileage;
import com.yeejoin.equipmanage.common.utils.CoordinateUtil;
import com.yeejoin.equipmanage.fegin.IotFeign;
import com.yeejoin.equipmanage.service.IWlCarMileageService;
@Component
public class CarIotListener extends EmqxListener {
@Autowired
private IWlCarMileageService iWlCarMileageService;
@Autowired
private IotFeign iotFeign;
private final String GUIDE_KEY = "813684495d9a3981dd2c7694916fe404";
private final String GUIDE_URL = "https://restapi.amap.com/v3/geocode/regeo?";
@Override
public void processMessage(String topic, MqttMessage message) throws Exception {
String measurement = topic.split("/")[0];
String deviceName = topic.split("/")[1];
String iotCode = measurement+deviceName;
JSONObject jsonObject = JSONObject.parseObject(message.toString());
if (jsonObject.containsKey("startUp")) {
if (jsonObject.getBooleanValue("startUp")) {
WlCarMileage wlCarMileage = new WlCarMileage();
wlCarMileage.setIotCode(iotCode);
wlCarMileage.setDate(new Date());
iWlCarMileageService.save(wlCarMileage);
} else {
// 获取结束坐标
WlCarMileage last = iWlCarMileageService.getOne(new LambdaQueryWrapper<WlCarMileage>()
.eq(WlCarMileage::getIotCode, iotCode).isNull(WlCarMileage::getEndLongitude)
.isNull(WlCarMileage::getEndLatitude).orderByDesc(WlCarMileage::getEndTime).last("limit 1"));
ResponseModel<List<Object>> result = iotFeign.getLiveData(measurement, deviceName, last.getStartTime(),
new Date());
List<Object> list = result.getResult();
if (list != null && list.size() > 0) {
//获取最后一个有坐标的数据
JSONObject lastObj = null;
for(int i=list.size()-1;i>=0;i--)
{
JSONObject Obj = JSONObject.parseObject(JSONObject.toJSONString(list.get(i)));
if(Obj.get("FireCar_Longitude")!=null&&Obj.get("FireCar_Latitude")!=null)
{
lastObj =Obj;
break;
}
}
//JSONObject lastObj = JSONObject.parseObject(JSONObject.toJSONString(list.get(list.size() - 1)));
if(lastObj==null)
{
lastObj = new JSONObject();
lastObj.put("FireCar_Longitude", 0.0);
lastObj.put("FireCar_Latitude", 0.0);
lastObj.put("currentTime", 0);
lastObj.put("FireCar_Speed", 0);
}
double endLongitude = lastObj.getDoubleValue("FireCar_Longitude");
double endLatitude = lastObj.getDoubleValue("FireCar_Latitude");
long currentTime = lastObj.getLongValue("currentTime");
long takeTime = currentTime - last.getStartTime().getTime();
last.setEndLongitude(endLongitude);
last.setEndLatitude(endLatitude);
last.setEndTime(new Date(currentTime));
last.setEndName(getAddress(endLongitude, endLatitude));
last.setEndSpeed(lastObj.getIntValue("FireCar_Speed"));
last.setTakeTime(takeTime);
double travel = 0;
// 获取里程
for (int i = 0; i < list.size() - 1; i++) {
JSONObject start = JSONObject.parseObject(JSONObject.toJSONString(list.get(i)));
JSONObject end = JSONObject.parseObject(JSONObject.toJSONString(list.get(i+1)));
travel += CoordinateUtil.distance(start.getDoubleValue("FireCar_Longitude"),
start.getDoubleValue("FireCar_Latitude"), end.getDoubleValue("FireCar_Longitude"),
end.getDoubleValue("FireCar_Latitude"));
}
last.setTravel(travel);
iWlCarMileageService.updateById(last);
}
}
} else if(jsonObject.containsKey("FireCar_Longitude")){
WlCarMileage last = iWlCarMileageService.getOne(new LambdaQueryWrapper<WlCarMileage>()
.eq(WlCarMileage::getIotCode, iotCode).isNull(WlCarMileage::getStartLongitude)
.isNull(WlCarMileage::getStartLatitude).orderByDesc(WlCarMileage::getEndTime).last("limit 1"));
if (last != null && jsonObject.containsKey("FireCar_Longitude")
&& jsonObject.containsKey("FireCar_Latitude")) {
// 获取开始坐标
double startLongitude = jsonObject.getDoubleValue("FireCar_Longitude");
double startLatitude = jsonObject.getDoubleValue("FireCar_Latitude");
long currentTime = jsonObject.getLongValue("currentTime");
last.setStartLongitude(startLongitude);
last.setStartLatitude(startLatitude);
last.setStartTime(new Date(currentTime));
last.setStartName(getAddress(startLongitude, startLatitude));
last.setStartSpeed(jsonObject.getIntValue("FireCar_Speed"));
iWlCarMileageService.updateById(last);
}
}
System.out.println(topic);
System.out.println(message);
}
public String getAddress(double longitude, double lantitude) {
StringBuilder api = new StringBuilder(GUIDE_URL);
api.append("key=").append(GUIDE_KEY).append("&location=").append(longitude).append(",").append(lantitude)
.append("&radius=1000").append("&batch=false").append("&extensions=base").append("&roadlevel=0")
.append("&batch=false");
StringBuilder res = new StringBuilder();
BufferedReader in = null;
try {
System.out.println(api.toString());
URL url = new URL(api.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line;
while ((line = in.readLine()) != null) {
res.append(line).append("\n");
}
JSONObject object = JSONObject.parseObject(res.toString());
System.out.println(object);
JSONObject regeocode = object.getJSONObject("regeocode");
String address = regeocode.getString("formatted_address");
if("[]".equals(address))
{
System.out.println("===============无效坐标:"+longitude+","+lantitude);
address="无效坐标";
}
res = new StringBuilder(address);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return res.toString();
}
}
package com.yeejoin.equipmanage.mapper;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.equipmanage.common.entity.WlCarMileage;
/**
* 车量里程表 Mapper 接口
*
* @author duanwei
* @date 2023-02-01
*/
public interface WlCarMileageMapper extends BaseMapper<WlCarMileage> {
Page<WlCarMileage> page(Page<WlCarMileage> page,@Param("wlCarMileage") WlCarMileage wlCarMileage);
Integer totalMileage(String iotCode);
}
......@@ -82,6 +82,7 @@ public interface ICarService extends IService<Car> {
/**
* 根据车辆id查询车辆详情信息
*
* @param id
* @param orgCode
* @param isIot
......@@ -89,7 +90,6 @@ public interface ICarService extends IService<Car> {
*/
CarForUE4VO getCarDetailByCarNumToThreeDimensional(Long id, String orgCode);
/**
* 添加车辆
*/
......@@ -126,6 +126,7 @@ public interface ICarService extends IService<Car> {
/**
* 车辆详情接口
*
* @return List<CarInfoVo>
* @param teamId 队伍id
* @param name 车辆名称
......@@ -134,6 +135,7 @@ public interface ICarService extends IService<Car> {
/**
* 队伍车辆详情接口
*
* @return List<CarInfoVo>
* @param teamId 队伍id
* @param name 车辆名称
......@@ -147,10 +149,11 @@ public interface ICarService extends IService<Car> {
*/
Boolean updateCarStatus(List<CarStatusInfoDto> cars);
List<CarDto> getTeamCarList(String sequenceNbr ,Long id, Double longitude, Double latitude);
List<CarDto> getTeamCarList(String sequenceNbr, Long id, Double longitude, Double latitude);
/**
* 获取车辆属性集合值(参数均为非必填)
*
* @param idList 车辆ID集合
* @param teamId 队伍ID
* @param nameKeys 属性编码,中间英文逗号隔开
......@@ -166,10 +169,12 @@ public interface ICarService extends IService<Car> {
Object getCarStateInfoByCarNum(String carNum);
Page<CarInfoDto> equipmentCarList(Page<CarInfoDto> pag ,Long teamId, String name,String code,Long id,Boolean isNo);
Page<CarInfoDto> equipmentCarList(Page<CarInfoDto> pag, Long teamId, String name, String code, Long id,
Boolean isNo);
/**
* 获取融合终端车辆列表
*
* @return
*/
List<CarFusionDto> getCarFusionList();
......@@ -179,10 +184,10 @@ public interface ICarService extends IService<Car> {
*/
void refreshStaData();
/**
* iot装备更新redis 统计数据
*/
void iotrefreshStaData();
IPage getQRCode(Long id);
}
package com.yeejoin.equipmanage.service;
import java.util.List;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yeejoin.equipmanage.common.entity.WlCarMileage;
import com.yeejoin.equipmanage.controller.Coordinate;
/**
* 车量里程表 服务类
*
* @author duanwei
* @date 2023-02-01
*/
public interface IWlCarMileageService extends IService<WlCarMileage> {
Page<WlCarMileage> page(Page<WlCarMileage> page, WlCarMileage wlCarMileage);
Integer totalMileage(String iotCode);
List<Coordinate> getCoordinateList(long id);
}
......@@ -17,6 +17,7 @@ import com.yeejoin.amos.component.feign.config.InnerInvokException;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.equipmanage.common.datasync.entity.FireVehicle;
import com.yeejoin.equipmanage.common.dto.CarFusionDto;
import com.yeejoin.equipmanage.common.dto.CarInfoDto;
......@@ -35,23 +36,30 @@ import com.yeejoin.equipmanage.mapper.*;
import com.yeejoin.equipmanage.remote.RemoteSecurityService;
import com.yeejoin.equipmanage.service.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.entity.ContentType;
import org.gavaghan.geodesy.Ellipsoid;
import org.gavaghan.geodesy.GeodeticCalculator;
import org.gavaghan.geodesy.GlobalCoordinates;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.*;
import java.util.function.Consumer;
......@@ -138,7 +146,6 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
@Autowired
private IEquipmentCategoryService iEquipmentCategoryService;
@Value("${equip.dict.car-state}")
private String carState;
......@@ -148,6 +155,9 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
@Value("${systemctl.sync.switch}")
private Boolean syncSwitch;
@Autowired
private IWlCarMileageService iWlCarMileageService;
/**
* 当前登录用户信息
*/
......@@ -717,7 +727,8 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
@Override
public Map<String, String> loadingExtinguishants(Long carId, List<ExtinguishantRequeset> extinguishants) {
Car car = this.getById(carId);
if (car.getCarState().equals(CarStatusEnum.WX.getCode()) || car.getCarState().equals(CarStatusEnum.BF.getCode())) {
if (car.getCarState().equals(CarStatusEnum.WX.getCode())
|| car.getCarState().equals(CarStatusEnum.BF.getCode())) {
throw new RuntimeException("报废维修车辆不能装载");
}
LoadingParams params = new LoadingParams(carId, extinguishants);
......@@ -893,11 +904,13 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
List<SystemDic> list = systemDicMapper.selectByMap(columnMap);
ParsePropertyUtil.setting(journal::setState, () -> list.get(0).getId().toString());
journal.setRemark(user.getRealName() + "将" + equipmentDetail.getName() + "装备装载到车牌号为【" + car.getCarNum() + "】的车辆上。");
journal.setRemark(
user.getRealName() + "将" + equipmentDetail.getName() + "装备装载到车牌号为【" + car.getCarNum() + "】的车辆上。");
journal.setWarehouseStructureId(detail.getWarehouseStructureId());
journal.setCarId(eq.getCarId());
} else if (typeEnum == OnBoardEquipmentEnum.UNLOAD) {
journal.setRemark(user.getRealName() + "从车牌号为【" + car.getCarNum() + "】的车辆上卸载了" + equipmentDetail.getName() + "装备。");
journal.setRemark(
user.getRealName() + "从车牌号为【" + car.getCarNum() + "】的车辆上卸载了" + equipmentDetail.getName() + "装备。");
journal.setWarehouseStructureId(shelfCellId);
journal.setCarId(eq.getCarId());
}
......@@ -949,7 +962,7 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
private void updateStockDetail(StockDetail detail, String type, Long warehouseId, Long shelfCellId) {
OnBoardEquipmentEnum typeEnum = OnBoardEquipmentEnum.getEnum(type);
if (typeEnum == OnBoardEquipmentEnum.LOAD) {
//TODO 更新为自己去反,之前为减去1,这样在设备管理方式为批量管理时,就不对了
// TODO 更新为自己去反,之前为减去1,这样在设备管理方式为批量管理时,就不对了
updateStock(detail, detail.getAmount() * -1);
detail.setAmount(0.0);
detail.setStatus(EquipStatusEnum.ONCAR.getCode().toString());
......@@ -964,7 +977,7 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
detail.setWarehouseStructureId(shelfCellId);
}
detail.setStatus(EquipStatusEnum.REPERTORY.getCode().toString());
//卸载将卸载的数量恢复
// 卸载将卸载的数量恢复
updateStock(detail, detail.getAmount());
}
stockDetailMapper.updateById(detail);
......@@ -974,11 +987,12 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
public void unloadEquipment(OnBoardEquipment equipment, AgencyUserModel user) {
List<Equip> eqs = generate(equipment);
String area = equipment.getArea();
//TODO: 是否返回原始位置:true-是 false -否 ,equipment.getShelfCellCode() 为空或者为null,代表,装备的卸载是,放回原位
// TODO: 是否返回原始位置:true-是 false -否 ,equipment.getShelfCellCode()
// 为空或者为null,代表,装备的卸载是,放回原位
boolean isOriPosition = StringUtil.isEmpty(equipment.getShelfCellCode());
//新存放的货位id,不放回原位使用
// 新存放的货位id,不放回原位使用
Long shelfCellId = null;
//TODO: 不放回原位,查询存放位置(正常逻辑,应该是前端返回操作类型及货位id,后端不需要进行查询)
// TODO: 不放回原位,查询存放位置(正常逻辑,应该是前端返回操作类型及货位id,后端不需要进行查询)
if (!isOriPosition && equipment.getWarehouseId() != null) {
shelfCellId = queryShelfCellId(equipment);
}
......@@ -993,9 +1007,10 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
if (null == detail) {
throw new RuntimeException("二维码为【" + eq.getQrCode() + "】的装备未记录在库!");
}
//卸载将转载的数量回复回去
// 卸载将转载的数量回复回去
if (finalShelfCellId != null) {
iEquipmentDetailService.update(new UpdateWrapper<EquipmentDetail>().eq("id", eq.getEquipmentDetailId()).set("area", area));
iEquipmentDetailService.update(
new UpdateWrapper<EquipmentDetail>().eq("id", eq.getEquipmentDetailId()).set("area", area));
}
detail.setAmount(equipmentOnCar.getAmount());
unLoad(equipmentOnCar);
......@@ -1033,7 +1048,7 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
}
private Long queryShelfCellId(OnBoardEquipment equipment) {
//存放到其他位置
// 存放到其他位置
Map<String, Object> columnMap = new HashMap<String, Object>();
columnMap.put("warehouse_id", equipment.getWarehouseId());
columnMap.put("code", equipment.getShelfCellCode());
......@@ -1082,7 +1097,7 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
@Override
public Car saveOne(Car car) {
//如果没有状态默认状态在位
// 如果没有状态默认状态在位
if (StringUtils.isEmpty(car.getCarState())) {
car.setCarState(CarStatusEnum.ZW.getCode());
}
......@@ -1130,7 +1145,7 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
wrapper.orderByDesc(BaseEntity::getCreateDate);
List<Car> carList = this.list(wrapper);
List<Equipment> equipmentList = iEquipmentService.list();
/*统一车辆图片使用装备定义图片 2021-10-27 陈召*/
/* 统一车辆图片使用装备定义图片 2021-10-27 陈召 */
equipmentList.stream().filter(e -> e.getName().contains("车")).forEach(e -> {
carList.forEach(car -> {
if (e.getId().equals(car.getEquipmentId())) {
......@@ -1142,18 +1157,19 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
}
});
});
/*统一车辆图片使用装备定义图片 2021-10-27 陈召*/
Map<Long, Equipment> keyMap = equipmentList.stream().collect(Collectors.toMap(BaseEntity::getId, Function.identity()));
/* 统一车辆图片使用装备定义图片 2021-10-27 陈召 */
Map<Long, Equipment> keyMap = equipmentList.stream()
.collect(Collectors.toMap(BaseEntity::getId, Function.identity()));
List<EquipmentCategory> categoryList = iEquipmentCategoryService.list();
Map<Long, String> categoryMap = categoryList.stream().collect(Collectors.toMap(BaseEntity::getId, EquipmentCategory::getName));
Map<Long, String> categoryMap = categoryList.stream()
.collect(Collectors.toMap(BaseEntity::getId, EquipmentCategory::getName));
List<UploadFile> fileList = iUploadFileService.list(new LambdaQueryWrapper<UploadFile>()
.eq(UploadFile::getObjectType, "car")
.eq(UploadFile::getFileType, "image"));
.eq(UploadFile::getObjectType, "car").eq(UploadFile::getFileType, "image"));
// 车载装备
List<Map<String, Object>> carResourceMapList = this.baseMapper.getCarResourceMapList(null);
Map<String, List<Map<String, Object>>> carResourceMap =
carResourceMapList.stream().collect(Collectors.groupingBy(car -> car.get("carId").toString()));
Map<String, List<Map<String, Object>>> carResourceMap = carResourceMapList.stream()
.collect(Collectors.groupingBy(car -> car.get("carId").toString()));
return carList.stream().map(car -> {
CarInfoDto carInfoVo = new CarInfoDto();
Bean.copyExistPropertis(car, carInfoVo);
......@@ -1163,7 +1179,7 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
carInfoVo.setCategoryId(equipment != null ? equipment.getCategoryId() : null);
carInfoVo.setCategoryName(categoryMap.get(carInfoVo.getCategoryId()));
carInfoVo.setName(car.getName());
if (car.getImg() != null){
if (car.getImg() != null) {
List<String> img = new ArrayList<>();
img.add(car.getImg().get(0).getUrl());
......@@ -1192,8 +1208,11 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
CarIndexVo carIndexVo = new CarIndexVo();
carIndexVo.setId(car.getId());
List<CarPropertyVo> propertyList = carPropertyService.getCarPropertyList(carIndexVo);
List<CarPropertyVo> fireVehicleInfoList = propertyList.stream().filter(propertyVo -> 0 == propertyVo.getIsIot()).collect(Collectors.toList());
List<CarPropertyVo> fireVehicleMeasurementList = propertyList.stream().filter(propertyVo -> propertyVo.getIsIot() != null && 1 == propertyVo.getIsIot()).collect(Collectors.toList());
List<CarPropertyVo> fireVehicleInfoList = propertyList.stream().filter(propertyVo -> 0 == propertyVo.getIsIot())
.collect(Collectors.toList());
List<CarPropertyVo> fireVehicleMeasurementList = propertyList.stream()
.filter(propertyVo -> propertyVo.getIsIot() != null && 1 == propertyVo.getIsIot())
.collect(Collectors.toList());
syncDataService.syncCreatedFireVehicleInfo(fireVehicleInfoList);
syncDataService.syncCreatedFireVehicleMeasurement(fireVehicleMeasurementList);
}
......@@ -1201,8 +1220,11 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
@Override
public void dataSyncDeletedIds(List<Long> carIds) {
List<CarPropertyVo> propertyList = carPropertyService.getCarPropertyListByCarIds(carIds);
List<Long> fireVehicleInfoList = propertyList.stream().filter(propertyVo -> 0 == propertyVo.getIsIot()).map(CarPropertyVo::getId).collect(Collectors.toList());
List<Long> fireVehicleMeasurementList = propertyList.stream().filter(propertyVo -> propertyVo.getIsIot() != null && 1 == propertyVo.getIsIot()).map(CarPropertyVo::getId).collect(Collectors.toList());
List<Long> fireVehicleInfoList = propertyList.stream().filter(propertyVo -> 0 == propertyVo.getIsIot())
.map(CarPropertyVo::getId).collect(Collectors.toList());
List<Long> fireVehicleMeasurementList = propertyList.stream()
.filter(propertyVo -> propertyVo.getIsIot() != null && 1 == propertyVo.getIsIot())
.map(CarPropertyVo::getId).collect(Collectors.toList());
syncDataService.syncDeletedFireVehicleInfo(fireVehicleInfoList);
syncDataService.syncDeletedFireVehicleMeasurement(fireVehicleMeasurementList);
}
......@@ -1224,8 +1246,10 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
public Car updateOneById(Car car) {
String orgCode = remoteSecurityService.getAgencyUser().getCompanys().get(0).getOrgCode();
car.setOrgCode(orgCode);
// @TableField(updateStrategy = FieldStrategy.IGNORED) 置空不生效 为空单独设置 by kongfm 2021-09-09
this.update(new LambdaUpdateWrapper<Car>().set(Car::getAgencyId, car.getAgencyId()).set(Car::getTeamId, car.getTeamId()).eq(Car::getId, car.getId()));
// @TableField(updateStrategy = FieldStrategy.IGNORED) 置空不生效 为空单独设置 by kongfm
// 2021-09-09
this.update(new LambdaUpdateWrapper<Car>().set(Car::getAgencyId, car.getAgencyId())
.set(Car::getTeamId, car.getTeamId()).eq(Car::getId, car.getId()));
boolean update = this.updateById(car);
// AST数据同步
if (update && syncSwitch) {
......@@ -1324,13 +1348,27 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
equipment.setEquipmentCategory(equipmentCategoryMapper.selectById(equipment.getCategoryId()));
}
car.setEquipment(equipment);
car.setCountryName(iSystemDicService.getOne(new QueryWrapper<SystemDic>().eq("id", car.getCountry())).getName());
car.setChassisCountryName(
iSystemDicService.getOne(new QueryWrapper<SystemDic>().eq("id", car.getChassisCountry())).getName());
car.setJournals(journalService.list(new QueryWrapper<Journal>().eq("car_id", car.getId()).orderByAsc("create_date")));
car.setCountryName(
iSystemDicService.getOne(new QueryWrapper<SystemDic>().eq("id", car.getCountry())).getName());
if (!ObjectUtils.isEmpty(car.getChassisCountry())) {
car.setChassisCountryName(iSystemDicService
.getOne(new QueryWrapper<SystemDic>().eq("id", car.getChassisCountry())).getName());
}
car.setJournals(
journalService.list(new QueryWrapper<Journal>().eq("car_id", car.getId()).orderByAsc("create_date")));
car.setEquipmentsOnCar(this.baseMapper.selectEquipmentOnCarAppList(car.getId()));
List<Equipment> equipment1 = iEquipmentService.listByCategoryId(equipment.getCategoryId());
car.setUnit(equipment1.get(0).getUnit());
car.setCategoryId(equipment.getCategoryId());
car.setImportStr(car.getIsImport() ? "进口" : "国产");
if (!ObjectUtils.isEmpty(car.getIotCode())) {
Integer totalTravel = iWlCarMileageService.totalMileage(car.getIotCode());
car.setTotalTravel(totalTravel);
WlCarMileage last = iWlCarMileageService
.getOne(new LambdaQueryWrapper<WlCarMileage>().eq(WlCarMileage::getIotCode, car.getIotCode())
.orderByDesc(WlCarMileage::getEndTime).last("limit 1"));
car.setSpeed(last != null ? last.getEndSpeed() : null);
}
return car;
}
......@@ -1443,8 +1481,8 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
if (!ValidationUtil.isEmpty(cars)) {
List<String> carIdList = Lists.transform(cars, CarStatusInfoDto::getSequenceNbr);
List<Car> carList = carMapper.selectBatchIds(carIdList);
Map<String, String> carStatusMap =
cars.stream().collect(Collectors.toMap(CarStatusInfoDto::getSequenceNbr, CarStatusInfoDto::getStatus));
Map<String, String> carStatusMap = cars.stream()
.collect(Collectors.toMap(CarStatusInfoDto::getSequenceNbr, CarStatusInfoDto::getStatus));
carList.forEach(car -> {
String carStatusCode = carStatusMap.get(car.getId().toString());
// 可进行更新操作
......@@ -1463,17 +1501,18 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
}
@Override
public List<CarDto> getTeamCarList(String sequenceNbr ,Long id, Double longitude, Double latitude) {
List<CarDto> list = carMapper.getTeamCarList(sequenceNbr,id, carState);
public List<CarDto> getTeamCarList(String sequenceNbr, Long id, Double longitude, Double latitude) {
List<CarDto> list = carMapper.getTeamCarList(sequenceNbr, id, carState);
if (!CollectionUtils.isEmpty(list)) {
if (longitude != null && latitude != null) {
List<Long> idList = list.stream().map(CarDto::getSequenceNbr).collect(Collectors.toList());
List<CarPropertyVo> propertyList = getCarPropertyList(idList, null, nameKeys, 1);
if (!CollectionUtils.isEmpty(propertyList)) {
list.stream().forEach(x -> {
List<CarPropertyVo> collect = propertyList.stream().filter(y -> y.getCarId().equals(x.getSequenceNbr())).collect(Collectors.toList());
final Double[] longitudeVal = {null};
final Double[] latitudeVal = {null};
List<CarPropertyVo> collect = propertyList.stream()
.filter(y -> y.getCarId().equals(x.getSequenceNbr())).collect(Collectors.toList());
final Double[] longitudeVal = { null };
final Double[] latitudeVal = { null };
collect.stream().forEach(z -> {
String nameKey = z.getNameKey();
String value = z.getValue();
......@@ -1495,7 +1534,8 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
if (longitudeVal[0] != null && latitudeVal[0] != null) {
GlobalCoordinates source = new GlobalCoordinates(longitudeVal[0], latitudeVal[0]);
GlobalCoordinates target = new GlobalCoordinates(longitude, latitude);
double distance = new GeodeticCalculator().calculateGeodeticCurve(Ellipsoid.Sphere, source, target).getEllipsoidalDistance();
double distance = new GeodeticCalculator()
.calculateGeodeticCurve(Ellipsoid.Sphere, source, target).getEllipsoidalDistance();
BigDecimal decimal = new BigDecimal(distance / 1000);
x.setDistance(decimal.setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue());
}
......@@ -1527,7 +1567,6 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
return carMapper.getCarStateInfoByCarNum(carNum);
}
@Override
public CarForUE4VO getCarDetailByCarNumToThreeDimensional(Long carId, String orgCode) {
CarForUE4VO carForUE4VO = new CarForUE4VO();
......@@ -1543,7 +1582,8 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
carForUE4VO.setCarType(equipment.getEquipmentCategory().getName());
// 数据库字段(is_import 0->国产, 1->进口)
carForUE4VO.setIsImport(Boolean.TRUE.equals(car.getIsImport()) ? TrueOrFalseEnum.real.desc : TrueOrFalseEnum.fake.desc);
carForUE4VO.setIsImport(
Boolean.TRUE.equals(car.getIsImport()) ? TrueOrFalseEnum.real.desc : TrueOrFalseEnum.fake.desc);
carForUE4VO.setBrand(car.getBrand());
QueryWrapper<SystemDic> countryQueryWrapper = new QueryWrapper<>();
countryQueryWrapper.eq("id", car.getCountry());
......@@ -1552,7 +1592,8 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
carForUE4VO.setStandard(car.getStandard());
ManufacturerInfo manufacturerInfo = iManufacturerInfoService.getById(car.getManufacturerId());
carForUE4VO.setManufacturerName(manufacturerInfo.getName());
carForUE4VO.setCccAuth(Boolean.TRUE.equals(car.getCccAuth()) ? TrueOrFalseEnum.real.flag : TrueOrFalseEnum.fake.flag);
carForUE4VO.setCccAuth(
Boolean.TRUE.equals(car.getCccAuth()) ? TrueOrFalseEnum.real.flag : TrueOrFalseEnum.fake.flag);
QueryWrapper<SystemDic> chassisCountryQueryWrapper = new QueryWrapper<>();
chassisCountryQueryWrapper.eq("id", car.getChassisCountry());
SystemDic dic = iSystemDicService.getBaseMapper().selectOne(chassisCountryQueryWrapper);
......@@ -1561,26 +1602,26 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
return carForUE4VO;
}
@Override
public Page<CarInfoDto> equipmentCarList(Page<CarInfoDto> pag, Long teamId, String name, String code, Long id, Boolean isNo) {
public Page<CarInfoDto> equipmentCarList(Page<CarInfoDto> pag, Long teamId, String name, String code, Long id,
Boolean isNo) {
List<Car> carList = carMapper.equipmentCarList(pag.offset(), pag.getSize(), teamId, name, code, id, isNo);
int num = carMapper.equipmentCarListcount(teamId, name, code, id, isNo);
List<Equipment> equipmentList = iEquipmentService.list();
Map<Long, Equipment> keyMap = equipmentList.stream().collect(Collectors.toMap(BaseEntity::getId, Function.identity()));
Map<Long, Equipment> keyMap = equipmentList.stream()
.collect(Collectors.toMap(BaseEntity::getId, Function.identity()));
List<EquipmentCategory> categoryList = iEquipmentCategoryService.list();
Map<Long, String> categoryMap = categoryList.stream().collect(Collectors.toMap(BaseEntity::getId, EquipmentCategory::getName));
Map<Long, String> categoryMap = categoryList.stream()
.collect(Collectors.toMap(BaseEntity::getId, EquipmentCategory::getName));
List<UploadFile> fileList = iUploadFileService.list(new LambdaQueryWrapper<UploadFile>()
.eq(UploadFile::getObjectType, "car")
.eq(UploadFile::getFileType, "image"));
.eq(UploadFile::getObjectType, "car").eq(UploadFile::getFileType, "image"));
// 车载装备
List<Map<String, Object>> carResourceMapList = this.baseMapper.getCarResourceMapList(null);
Map<String, List<Map<String, Object>>> carResourceMap =
carResourceMapList.stream().collect(Collectors.groupingBy(car -> car.get("carId").toString()));
Map<String, List<Map<String, Object>>> carResourceMap = carResourceMapList.stream()
.collect(Collectors.groupingBy(car -> car.get("carId").toString()));
List<CarInfoDto> CarInfoDtoList = carList.stream().map(car -> {
CarInfoDto carInfoVo = new CarInfoDto();
Bean.copyExistPropertis(car, carInfoVo);
......@@ -1590,8 +1631,8 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
carInfoVo.setCategoryId(equipment != null ? equipment.getCategoryId() : null);
carInfoVo.setCategoryName(categoryMap.get(carInfoVo.getCategoryId()));
carInfoVo.setImage(fileList.stream().filter(f -> f.getObjectId().equals(car.getId())).map(UploadFile::getUrl).collect(Collectors.toList()));
carInfoVo.setImage(fileList.stream().filter(f -> f.getObjectId().equals(car.getId()))
.map(UploadFile::getUrl).collect(Collectors.toList()));
if (equipment.getImg() != null) {
List<String> img = new ArrayList<>();
......@@ -1599,7 +1640,6 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
carInfoVo.setImage(img);
}
carInfoVo.setResourceList(carResourceMap.get(car.getId().toString()));
return carInfoVo;
}).collect(Collectors.toList());
......@@ -1630,10 +1670,44 @@ public class CarServiceImpl extends ServiceImpl<CarMapper, Car> implements ICarS
}
private String buildKey(Map<String, Object> row) {
return SourcesStatisticsImpl.PREFIX_CATEGORY_COUNT + row.get("bizOrgCode").toString() + "_" + SourceTypeEnum.CAR.getCode() + "_" + row.get("categoryCode").toString();
return SourcesStatisticsImpl.PREFIX_CATEGORY_COUNT + row.get("bizOrgCode").toString() + "_"
+ SourceTypeEnum.CAR.getCode() + "_" + row.get("categoryCode").toString();
}
private String iotbuildKey(Map<String, Object> row) {
return SourcesStatisticsImpl.PREFIX_CATEGORY_COUNT + row.get("bizOrgCode").toString() + "_" + SourceTypeEnum.IOT.getCode() + "_" + row.get("categoryCode").toString();
return SourcesStatisticsImpl.PREFIX_CATEGORY_COUNT + row.get("bizOrgCode").toString() + "_"
+ SourceTypeEnum.IOT.getCode() + "_" + row.get("categoryCode").toString();
}
@Override
public IPage getQRCode(Long id) {
Car car = this.getById(id);
if (car == null) {
return null;
}
String url = "";
JSONObject jsonObject = new JSONObject();
byte[] bytes = QRCodeUtil.generateQRCodeImageByteData(car.getQrCode(),200);
InputStream inputStream = new ByteArrayInputStream(bytes);
try {
MultipartFile file = new MockMultipartFile(car.getQrCode() + ".jpg", car.getQrCode() + ".jpg",
ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);
FeignClientResult<Map<String, String>> date = Systemctl.fileStorageClient.updateCommonFileFree(file,
"jxiop/qrcode");
if (date != null) {
Map<String, String> map = date.getResult();
Iterator<String> it = map.keySet().iterator();
String urlString = it.next();
jsonObject.put("fileUrl", urlString);
jsonObject.put("fileName", car.getQrCode());
}
} catch (IOException e) {
e.printStackTrace();
}
List list = new ArrayList();
list.add(jsonObject);
IPage page = new Page(1, 100);
page.setRecords(list);
return page;
}
}
......@@ -163,22 +163,26 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
@Value("${redis_equip_type_count}")
private String equipTypeAndCount;
@Autowired
IWlCarMileageService iWlCarMileageService;
@Override
public List<EquipCountBySystemVO> getEquipCountBySystemId(Long systemId) {
return this.baseMapper.getEquipCountBySystemId(systemId);
}
@Override
public List<EquiplistSpecificBySystemVO>
getEquiplistBySystemId(Long systemId) {
public List<EquiplistSpecificBySystemVO> getEquiplistBySystemId(Long systemId) {
return this.baseMapper.getEquiplistBySystemId(systemId);
}
@Override
public Map<String, Object> queryEquipmenInfoAndCount(String equimentName, String equimentCode, String construction,
String maintenance, String bizOrgCode, String formGroupId, int current, int pageSize, String controBoxBuildId,String companyId, String nameOrCode) {
String maintenance, String bizOrgCode, String formGroupId, int current, int pageSize,
String controBoxBuildId, String companyId, String nameOrCode) {
Map<String, Object> map = equipmentManageService.queryEquipmenInfoAndCount(equimentName, equimentCode,
construction, maintenance, bizOrgCode, formGroupId, current, pageSize, controBoxBuildId, companyId, nameOrCode);
construction, maintenance, bizOrgCode, formGroupId, current, pageSize, controBoxBuildId, companyId,
nameOrCode);
List<EquipmentManageVo> dataList = (List<EquipmentManageVo>) map.get("dataList");
StringBuilder stb = new StringBuilder();
dataList.forEach(y -> {
......@@ -188,14 +192,14 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
stb.append(y.getChargePerson());
}
});
//此userMap已被注掉 无用代码
/* Map<String, String> userMap = new HashMap<>();
if (StringUtil.isNotEmpty(stb)) {
List<AgencyUserModel> agencyUserModels = remoteSecurityService.listUserByUserIds(stb.toString());
agencyUserModels.forEach(z -> {
userMap.put(z.getUserId(), z.getRealName());
});
}*/
// 此userMap已被注掉 无用代码
/*
* Map<String, String> userMap = new HashMap<>(); if
* (StringUtil.isNotEmpty(stb)) { List<AgencyUserModel> agencyUserModels =
* remoteSecurityService.listUserByUserIds(stb.toString());
* agencyUserModels.forEach(z -> { userMap.put(z.getUserId(), z.getRealName());
* }); }
*/
dataList.forEach(x -> {
// x.setChargePerson(userMap.get(x.getChargePerson()));
x.setSystemimg(equipmentManageMapper.getFiles(valueOf(x.getId()), "face"));
......@@ -425,8 +429,9 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
// responses.add(p);
// });
// List<PointTreeVo> regionList = responses.stream().filter(r -> "TRUE".equals(r.getIsRegion())).collect(Collectors.toList());
if("dl".equals(type)){
FeignClientResult<List<OrgUsrDto>> feignClientResult = jcsFeignClient.getCompanyDeptListWithAuth(authKey, "COMPANY", "dl");
if ("dl".equals(type)) {
FeignClientResult<List<OrgUsrDto>> feignClientResult = jcsFeignClient.getCompanyDeptListWithAuth(authKey,
"COMPANY", "dl");
orgCode = feignClientResult.getResult().get(0).getBizOrgCode();
}
List<PointTreeVo> buildList = buildingMapper.getBuildList(orgCode, null);
......@@ -525,7 +530,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
* @return
*/
public List<PointTreeVo> transferListToPointTree(List<PointTreeVo> allRiskSource, String id, String instanceId) {
//TODO id为空,为消防建筑使用;id不为空,为点位图使用
// TODO id为空,为消防建筑使用;id不为空,为点位图使用
List<PointTreeVo> pointData = fireFightingSystemMapper.getPointData(id, instanceId);
if (!CollectionUtils.isEmpty(pointData)) {
// 查询所有wl_source_scene,判断是否绑定
......@@ -539,8 +544,10 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
Map<Long, String> sourceSceneMap = null;
String equipSpecificIds = null;
if (!CollectionUtils.isEmpty(sourceSceneList)) {
sourceSceneMap = sourceSceneList.stream().collect(Collectors.toMap(SourceScene::getSourceId, SourceScene::getPointInScene));
List<String> equipSpecificIdList = sourceSceneList.stream().map(SourceScene::getPointInScene).collect(Collectors.toList());
sourceSceneMap = sourceSceneList.stream()
.collect(Collectors.toMap(SourceScene::getSourceId, SourceScene::getPointInScene));
List<String> equipSpecificIdList = sourceSceneList.stream().map(SourceScene::getPointInScene)
.collect(Collectors.toList());
equipSpecificIds = String.join(",", equipSpecificIdList);
}
// 优化不查指标
......@@ -611,8 +618,9 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
* @param id
* @return
*/
public List<PointTreeVo> transferListToPointTreeNew(List<PointTreeVo> allRiskSource, String id, String instanceId, String displayName) {
//TODO id为空,为消防建筑使用;id不为空,为点位图使用
public List<PointTreeVo> transferListToPointTreeNew(List<PointTreeVo> allRiskSource, String id, String instanceId,
String displayName) {
// TODO id为空,为消防建筑使用;id不为空,为点位图使用
List<PointTreeVo> pointData = fireFightingSystemMapper.getPointDataNew(id, instanceId, displayName);
if (!CollectionUtils.isEmpty(pointData)) {
// 查询所有wl_source_scene,判断是否绑定
......@@ -620,8 +628,10 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
Map<Long, String> sourceSceneMap = null;
String equipSpecificIds = null;
if (!CollectionUtils.isEmpty(sourceSceneList)) {
sourceSceneMap = sourceSceneList.stream().collect(Collectors.toMap(SourceScene::getSourceId, SourceScene::getPointInScene));
List<String> equipSpecificIdList = sourceSceneList.stream().map(SourceScene::getPointInScene).collect(Collectors.toList());
sourceSceneMap = sourceSceneList.stream()
.collect(Collectors.toMap(SourceScene::getSourceId, SourceScene::getPointInScene));
List<String> equipSpecificIdList = sourceSceneList.stream().map(SourceScene::getPointInScene)
.collect(Collectors.toList());
equipSpecificIds = String.join(",", equipSpecificIdList);
}
// 优化不查指标
......@@ -685,7 +695,6 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
return Collections.emptyList();
}
/**
* 生成树结构
*
......@@ -787,7 +796,8 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
map.put("color", "");
return map;
}
if (StringUtil.isNotEmpty(indexVo.getIndexValue()) && TrueOrFalseEnum.real.value.toUpperCase().equals(indexVo.getIndexValue().toUpperCase())) {
if (StringUtil.isNotEmpty(indexVo.getIndexValue())
&& TrueOrFalseEnum.real.value.toUpperCase().equals(indexVo.getIndexValue().toUpperCase())) {
map.put("runStatus", indexVo.getIndexName());
map.put("color", indexVo.getColor());
return map;
......@@ -822,11 +832,11 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
if (i > 0 && syncSwitch) {
syncDataService.syncDeletedFireFightingSystem(Arrays.asList(id));
}
//删除系统图与设备关系表
// 删除系统图与设备关系表
QueryWrapper<SourceScene> ssWrapper = new QueryWrapper<SourceScene>();
ssWrapper.lambda().eq(SourceScene::getSourceId, id);
sourceSceneMapper.delete(ssWrapper);
//删除动态关联表单实例数据
// 删除动态关联表单实例数据
if (entity.getInstanceId() != null) {
instanceService.remove(new LambdaQueryWrapper<DynamicFormInstance>().eq(DynamicFormInstance::getInstanceId,
entity.getInstanceId()));
......@@ -913,6 +923,16 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
if (!x.getEqtype().startsWith("4") && StringUtil.isNotEmpty(x.getAmount())) {
x.setAmount(x.getAmount().split("\\.")[0]);
}
if (!ObjectUtils.isEmpty(x.getIotCode())) {
WlCarMileage last = iWlCarMileageService
.getOne(new LambdaQueryWrapper<WlCarMileage>().eq(WlCarMileage::getIotCode, x.getIotCode())
.orderByDesc(WlCarMileage::getEndTime).last("limit 1"));
if(last!=null)
{
x.setLongitude(last.getEndLongitude());
x.setLatitude(last.getEndLatitude());
}
}
});
return list;
}
......@@ -1007,14 +1027,17 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
map.put("status", list1);
resList.add(map);
i++;
};
}
;
}
return resList;
}
@Override
public List<Map<String, Object>> getFireSystemEquipStatusList(String bizOrgCode, String systemCode, String categoryCodes) {
List<Map<String, Object>> list = fireFightingSystemMapper.getFireSystemEquipStatusList(bizOrgCode, systemCode, categoryCodes);
public List<Map<String, Object>> getFireSystemEquipStatusList(String bizOrgCode, String systemCode,
String categoryCodes) {
List<Map<String, Object>> list = fireFightingSystemMapper.getFireSystemEquipStatusList(bizOrgCode, systemCode,
categoryCodes);
List<Map<String, Object>> resList = new ArrayList<>();
int i = 1;
if (0 < list.size()) {
......@@ -1037,7 +1060,8 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
map.put("status", list1);
resList.add(map);
i++;
};
}
;
}
return resList;
}
......@@ -1048,8 +1072,11 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
}
@Override
public IPage<EquipmentAlarmBySystemIdOrSourceIdVO> getEquipmentAlarmBySystemIdOrSourceIdVO(IPage<EquipmentAlarmBySystemIdOrSourceIdVO> page, Long sourceId, Long systemId, Integer confirmType, String createDate, String type, String equipmentId) {
return this.baseMapper.getEquipmentAlarmBySystemIdOrSourceIdVO(page, sourceId, systemId, confirmType, createDate, type, equipmentId);
public IPage<EquipmentAlarmBySystemIdOrSourceIdVO> getEquipmentAlarmBySystemIdOrSourceIdVO(
IPage<EquipmentAlarmBySystemIdOrSourceIdVO> page, Long sourceId, Long systemId, Integer confirmType,
String createDate, String type, String equipmentId) {
return this.baseMapper.getEquipmentAlarmBySystemIdOrSourceIdVO(page, sourceId, systemId, confirmType,
createDate, type, equipmentId);
}
private static String getInet4Address() {
......@@ -1057,10 +1084,10 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
String ip = null;
try {
nis = NetworkInterface.getNetworkInterfaces();
for (; nis.hasMoreElements(); ) {
for (; nis.hasMoreElements();) {
NetworkInterface ni = nis.nextElement();
Enumeration<InetAddress> ias = ni.getInetAddresses();
for (; ias.hasMoreElements(); ) {
for (; ias.hasMoreElements();) {
InetAddress ia = ias.nextElement();
if (ia instanceof Inet4Address && !ia.getHostAddress().equals("127.0.0.1")) {
ip = ia.getHostAddress();
......@@ -1138,7 +1165,8 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
@Override
public List<FireFightingSystemTreeVo> getSystemTreeByOrgCode(String bizOrgCode) {
// 获取公司部门list
List<OrgUsrDto> orgUsrLists = jcsRemoteService.getCompanyDeptListWithAuth("COMPANY,DEPARTMENT", bizOrgCode, null);
List<OrgUsrDto> orgUsrLists = jcsRemoteService.getCompanyDeptListWithAuth("COMPANY,DEPARTMENT", bizOrgCode,
null);
List<FireFightingSystemTreeVo> fireFightingSystemTreeList = orgUsrLists.stream().map(key -> {
FireFightingSystemTreeVo vo = new FireFightingSystemTreeVo();
vo.setId(valueOf(key.getSequenceNbr()));
......@@ -1250,8 +1278,8 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
@Override
public Object getCarTypeAndCount(String bizOrgCode) {
if (redisUtils.hasKey(carTypeAndCount + bizOrgCode)) {
return JSONArray.parseArray(
JSONArray.toJSONString(redisUtils.get(carTypeAndCount + bizOrgCode)), EquipmentCategory.class);
return JSONArray.parseArray(JSONArray.toJSONString(redisUtils.get(carTypeAndCount + bizOrgCode)),
EquipmentCategory.class);
} else {
return refreshCarTypeAndCount(bizOrgCode);
}
......@@ -1260,8 +1288,8 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
@Override
public Object iotgetEquipmentTypeAndCount(String bizOrgCode) throws Exception {
if (redisUtils.hasKey("iotTypeAndCount" + bizOrgCode)) {
return JSONArray.parseArray(
JSONArray.toJSONString(redisUtils.get("iotTypeAndCount" + bizOrgCode)), EquipmentCategory.class);
return JSONArray.parseArray(JSONArray.toJSONString(redisUtils.get("iotTypeAndCount" + bizOrgCode)),
EquipmentCategory.class);
} else {
return iotrefreshEquipmentTypeAndCount(bizOrgCode);
}
......@@ -1274,7 +1302,6 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
// }
// List<EquipmentCategory> list = typeListTree(responseList, bizOrgCode, SourceTypeEnum.IOT);
List<EquipmentCategory> responseList = this.typeList();
if (responseList == null || responseList.size() < 1) {
return null;
......@@ -1301,10 +1328,8 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
return list;
}
public List<EquipmentCategory> typeList() {
return this.iEquipmentCategoryService
.getEquipmentCategoryList(Integer.valueOf(equipmentCategoryLeftTypeCode));
return this.iEquipmentCategoryService.getEquipmentCategoryList(Integer.valueOf(equipmentCategoryLeftTypeCode));
}
public List<EquipmentCategory> typeListTree(List<EquipmentCategory> equipmentCategorys, String bizOrgCode,
......@@ -1382,7 +1407,6 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
return resultMap;
}
@Override
public Map<String, Object> equipAlarmTOP(HashMap<String, Object> hashMap) {
Map<String, Object> resultMap = new HashMap<>();
......@@ -1442,6 +1466,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
public Map<String, Object> statisticsByStation(String bizOrgCode) {
return fireFightingSystemMapper.statisticsByStation(bizOrgCode);
}
@Override
public Map<String, Object> todayAlarmEquipment(String bizOrgCode) {
Map<String, Object> map = fireFightingSystemMapper.todayAlarmEquipment(bizOrgCode);
......@@ -1502,6 +1527,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
public Page<Map<String, Object>> equipList(Page page, String bizOrgCode) {
return fireFightingSystemMapper.equipList(page, bizOrgCode);
}
@Override
public BigScreenVo getSystemAlarmInfoNum(String companyCode) {
BigScreenVo bigScreenVo = new BigScreenVo();
......@@ -1566,25 +1592,28 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
ArrayList<Map<String, Object>> systemList = new ArrayList<>();
if (!CollectionUtils.isEmpty(system)) {
// 换流站信息
if (!ObjectUtils.isEmpty(system.get(0).get("stationName"))){
if (!ObjectUtils.isEmpty(system.get(0).get("stationName"))) {
map.put("station", system.get(0).get("stationName"));
}else {
} else {
map.put("station", "");
}
map.put("time", startDate.substring(0,7));
map.put("time", startDate.substring(0, 7));
// 单个系统数据
for (Map<String, Object> sys : system) {
HashMap<String, Object> systemData = new HashMap<>();
List<Map> collect = indicatorConfiguration.stream().
filter(item -> item.get("code").equals(String.valueOf(sys.get("typeCode")))).collect(Collectors.toList());
List<Map> collect = indicatorConfiguration.stream()
.filter(item -> item.get("code").equals(String.valueOf(sys.get("typeCode"))))
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(collect)) {
// 系统名称
systemData.put("systemName", ObjectUtils.isEmpty(sys.get("name")) ? "" : String.valueOf(sys.get("name")));
systemData.put("systemName",
ObjectUtils.isEmpty(sys.get("name")) ? "" : String.valueOf(sys.get("name")));
// 系统对应指标
String indicator = String.valueOf(collect.get(0).get("index"));
List<Map<String, Object>> alarmMessageList = fireFightingSystemMapper.selectAlarmList(bizOrgCode, startDate.substring(0, 7), String.valueOf(sys.get("id")));
List<Map<String, Object>> alarmMessageList = fireFightingSystemMapper.selectAlarmList(bizOrgCode,
startDate.substring(0, 7), String.valueOf(sys.get("id")));
// 单个系统循环列表
ArrayList<Map<String, Object>> maps = new ArrayList<>();
// 系统下告警统计列表
......@@ -1593,25 +1622,35 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
for (Map<String, Object> alarm : alarmMessageList) {
HashMap<String, Object> alarmMap = new HashMap<>();
// 设备类型
alarmMap.put("equipment_name", ObjectUtils.isEmpty(alarm.get("equipment_name")) ? "" : String.valueOf(alarm.get("equipment_name")));
alarmMap.put("equipment_name", ObjectUtils.isEmpty(alarm.get("equipment_name")) ? ""
: String.valueOf(alarm.get("equipment_name")));
// 设备总数
alarmMap.put("num", ObjectUtils.isEmpty(alarm.get("num")) ? "" : String.valueOf(alarm.get("num")));
alarmMap.put("num",
ObjectUtils.isEmpty(alarm.get("num")) ? "" : String.valueOf(alarm.get("num")));
// 正常设备总数
alarmMap.put("normalEquipNum", ObjectUtils.isEmpty(alarm.get("normalEquipNum")) ? "" : String.valueOf(alarm.get("normalEquipNum")));
alarmMap.put("normalEquipNum", ObjectUtils.isEmpty(alarm.get("normalEquipNum")) ? ""
: String.valueOf(alarm.get("normalEquipNum")));
// 设备正确率
alarmMap.put("normalEquipPercent", ObjectUtils.isEmpty(alarm.get("normalEquipPercent")) ? "" : String.valueOf(alarm.get("normalEquipPercent")));
alarmMap.put("normalEquipPercent", ObjectUtils.isEmpty(alarm.get("normalEquipPercent")) ? ""
: String.valueOf(alarm.get("normalEquipPercent")));
// 设备故障总数
alarmMap.put("fault_equip_num", ObjectUtils.isEmpty(alarm.get("fault_equip_num")) ? "" : String.valueOf(alarm.get("fault_equip_num")));
alarmMap.put("fault_equip_num", ObjectUtils.isEmpty(alarm.get("fault_equip_num")) ? ""
: String.valueOf(alarm.get("fault_equip_num")));
// 故障信息条数
alarmMap.put("alarm_info_num", ObjectUtils.isEmpty(alarm.get("fault_info_num")) ? "" : String.valueOf(alarm.get("fault_info_num")));
alarmMap.put("alarm_info_num", ObjectUtils.isEmpty(alarm.get("fault_info_num")) ? ""
: String.valueOf(alarm.get("fault_info_num")));
// 设备故障率
alarmMap.put("faultEquipPercent", ObjectUtils.isEmpty(alarm.get("faultEquipPercent")) ? "" : String.valueOf(alarm.get("faultEquipPercent")));
alarmMap.put("faultEquipPercent", ObjectUtils.isEmpty(alarm.get("faultEquipPercent")) ? ""
: String.valueOf(alarm.get("faultEquipPercent")));
// 报警设备总数
alarmMap.put("alarm_equip_num", ObjectUtils.isEmpty(alarm.get("alarm_equip_num")) ? "" : String.valueOf(alarm.get("alarm_equip_num")));
alarmMap.put("alarm_equip_num", ObjectUtils.isEmpty(alarm.get("alarm_equip_num")) ? ""
: String.valueOf(alarm.get("alarm_equip_num")));
// 报警设备占比
alarmMap.put("alarmEquipPercent", ObjectUtils.isEmpty(alarm.get("alarmEquipPercent")) ? "" : String.valueOf(alarm.get("alarmEquipPercent")));
alarmMap.put("alarmEquipPercent", ObjectUtils.isEmpty(alarm.get("alarmEquipPercent")) ? ""
: String.valueOf(alarm.get("alarmEquipPercent")));
// 信息总数
alarmMap.put("total_info_num", ObjectUtils.isEmpty(alarm.get("total_info_num")) ? "" : String.valueOf(alarm.get("total_info_num")));
alarmMap.put("total_info_num", ObjectUtils.isEmpty(alarm.get("total_info_num")) ? ""
: String.valueOf(alarm.get("total_info_num")));
maps.add(alarmMap);
}
......@@ -1631,9 +1670,11 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
}
systemData.put("list", maps);
// 系统对应总结
Map<String, Object> summarize = fireFightingSystemMapper.selectMonthSummarize(startDate.substring(0, 7), String.valueOf(sys.get("id")));
Map<String, Object> summarize = fireFightingSystemMapper
.selectMonthSummarize(startDate.substring(0, 7), String.valueOf(sys.get("id")));
if (!ObjectUtils.isEmpty(summarize)) {
systemData.put("summarize", ObjectUtils.isEmpty(summarize.get("summary_info")) ? "" : String.valueOf(summarize.get("summary_info")));
systemData.put("summarize", ObjectUtils.isEmpty(summarize.get("summary_info")) ? ""
: String.valueOf(summarize.get("summary_info")));
} else {
systemData.put("summarize", "");
......@@ -1642,11 +1683,13 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
// echarts图
String[] split = indicator.split(",");
List<String> indicatorList = Arrays.asList(split);
List<Map<String, Object>> pieChartList = fireFightingSystemMapper.selectMonthPieChart(String.valueOf(sys.get("code")), startDate, endDate);
List<Map<String, Object>> pieChartListTwo = fireFightingSystemMapper.selectMonthPieChartTwo(String.valueOf(sys.get("code")), startDate, endDate, indicatorList);
List<Map<String, Object>> selectMonthPolyline = fireFightingSystemMapper.selectMonthPolyline(String.valueOf(sys.get("code")), startDate, endDate, indicatorList);
List<Map<String, Object>> pieChartList = fireFightingSystemMapper
.selectMonthPieChart(String.valueOf(sys.get("code")), startDate, endDate);
List<Map<String, Object>> pieChartListTwo = fireFightingSystemMapper
.selectMonthPieChartTwo(String.valueOf(sys.get("code")), startDate, endDate, indicatorList);
List<Map<String, Object>> selectMonthPolyline = fireFightingSystemMapper
.selectMonthPolyline(String.valueOf(sys.get("code")), startDate, endDate, indicatorList);
String pieChart = ChartsUtils.pieChart(pieChartList, "故障设备类型占比");
systemData.put("bing1", pieChart);
......@@ -1663,9 +1706,9 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
systemData.put("bing2", pieChart1);
}
if (!CollectionUtils.isEmpty(selectMonthPolyline)) {
String pieChart2 = ChartsUtils.manyLineChart(selectMonthPolyline, "报警趋势", "日期", "报警数量", "month");
String pieChart2 = ChartsUtils.manyLineChart(selectMonthPolyline, "报警趋势", "日期", "报警数量",
"month");
systemData.put("bing3", pieChart2);
} else {
systemData.put("bing3", "");
......@@ -1677,12 +1720,10 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
}
}else {
} else {
return null;
}
return map;
}
......@@ -1702,8 +1743,8 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
@Override
public String iotMonthReport(String bizOrgCode, String startDate, String endDate) {
Map<String, Object> DataMap = getData(bizOrgCode, startDate, endDate);
if (DataMap == null){
return null ;
if (DataMap == null) {
return null;
}
WordTemplateUtils instance = WordTemplateUtils.getInstance();
String pdfUrlString = "";
......@@ -1715,7 +1756,8 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
RequestContext.setToken(token.getToke());
RequestContext.setProduct(token.getProduct());
RequestContext.setAppKey(token.getAppKey());
MultipartFile multipartFile = new MyByteArrayMultipartFile("file", "file.pdf", "application/pdf", file2byte(filepdf));
MultipartFile multipartFile = new MyByteArrayMultipartFile("file", "file.pdf", "application/pdf",
file2byte(filepdf));
FeignClientResult<Map<String, String>> result = Systemctl.fileStorageClient.updateCommonFile(multipartFile);
if (result != null) {
Iterator<String> it = result.getResult().keySet().iterator();
......@@ -1736,7 +1778,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
uploadFile.setUrl(pdfUrlString);
uploadFile.setFileType("image");
uploadFile.setObjectType("m-report");
long time = DateUtils.longStr2Date(startDate+" 00:00:00").getTime();
long time = DateUtils.longStr2Date(startDate + " 00:00:00").getTime();
uploadFile.setObjectId(time);
uploadFile.setName("换流站月总结分析报告");
uploadFile.setDepartmentOrgcode(bizOrgCode);
......@@ -1775,47 +1817,66 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
ArrayList<Map<String, Object>> dataList = new ArrayList<>();
for (Map<String, Object> system : systemList) {
HashMap<String, Object> systemData = new HashMap<>();
List<Map> collect = indicatorConfiguration.stream().
filter(item -> item.get("code").equals(String.valueOf(system.get("typeCode")))).collect(Collectors.toList());
List<Map> collect = indicatorConfiguration.stream()
.filter(item -> item.get("code").equals(String.valueOf(system.get("typeCode"))))
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(collect)) {
// 系统名称
systemData.put("systemName", ObjectUtils.isEmpty(system.get("name")) ? "" : String.valueOf(system.get("name")));
systemData.put("systemName",
ObjectUtils.isEmpty(system.get("name")) ? "" : String.valueOf(system.get("name")));
// 系统对应指标
String indicator = String.valueOf(collect.get(0).get("index"));
String[] split = indicator.split(",");
List<String> indicatorList = Arrays.asList(split);
List<Map<String, Object>> weekReportList = fireFightingSystemMapper.selectWeekReportList(String.valueOf(system.get("id")), startDate, endDate);
List<Map<String, Object>> weekReportList = fireFightingSystemMapper
.selectWeekReportList(String.valueOf(system.get("id")), startDate, endDate);
ArrayList<Map<String, Object>> list = new ArrayList<>();
if (!CollectionUtils.isEmpty(weekReportList)) {
for (Map<String, Object> weekItem : weekReportList) {
HashMap<String, Object> listItem = new HashMap<>();
// 设备类型
listItem.put("name", ObjectUtils.isEmpty(weekItem.get("name")) ? "" : String.valueOf(weekItem.get("name")));
listItem.put("name", ObjectUtils.isEmpty(weekItem.get("name")) ? ""
: String.valueOf(weekItem.get("name")));
// 设备总数
listItem.put("num", ObjectUtils.isEmpty(weekItem.get("num")) ? "" : String.valueOf(weekItem.get("num")));
listItem.put("num", ObjectUtils.isEmpty(weekItem.get("num")) ? ""
: String.valueOf(weekItem.get("num")));
// 无异常设备总数
listItem.put("normalNum", ObjectUtils.isEmpty(weekItem.get("normalNum")) ? "" : String.valueOf(weekItem.get("normalNum")));
listItem.put("normalNum", ObjectUtils.isEmpty(weekItem.get("normalNum")) ? ""
: String.valueOf(weekItem.get("normalNum")));
// 物联指标
listItem.put("type_name", ObjectUtils.isEmpty(weekItem.get("type_name")) ? "" : String.valueOf(weekItem.get("type_name")));
listItem.put("type_name", ObjectUtils.isEmpty(weekItem.get("type_name")) ? ""
: String.valueOf(weekItem.get("type_name")));
// 监测数据
listItem.put("monitoringData", ObjectUtils.isEmpty(weekItem.get("monitoringData")) ? "" : String.valueOf(weekItem.get("monitoringData")));
listItem.put("monitoringData", ObjectUtils.isEmpty(weekItem.get("monitoringData")) ? ""
: String.valueOf(weekItem.get("monitoringData")));
// 获取方式
listItem.put("acquisition", ObjectUtils.isEmpty(weekItem.get("acquisition")) ? "" : String.valueOf(weekItem.get("acquisition")));
listItem.put("acquisition", ObjectUtils.isEmpty(weekItem.get("acquisition")) ? ""
: String.valueOf(weekItem.get("acquisition")));
// 正常标准
listItem.put("normal", ObjectUtils.isEmpty(weekItem.get("normal")) ? "" : String.valueOf(weekItem.get("normal")));
listItem.put("normal", ObjectUtils.isEmpty(weekItem.get("normal")) ? ""
: String.valueOf(weekItem.get("normal")));
// 7日告警设备数
if (!ObjectUtils.isEmpty(weekItem.get("type_code")) && !ObjectUtils.isEmpty(weekItem.get("code"))) {
Integer integer = fireFightingSystemMapper.selectWeekAlarmsEquip(valueOf(system.get("id")), valueOf(weekItem.get("type_code")), valueOf(weekItem.get("code")), startDate, endDate, String.valueOf(weekItem.get("type_code")));
if (!ObjectUtils.isEmpty(weekItem.get("type_code"))
&& !ObjectUtils.isEmpty(weekItem.get("code"))) {
Integer integer = fireFightingSystemMapper.selectWeekAlarmsEquip(
valueOf(system.get("id")), valueOf(weekItem.get("type_code")),
valueOf(weekItem.get("code")), startDate, endDate,
String.valueOf(weekItem.get("type_code")));
listItem.put("alarmEquipNum", String.valueOf(integer));
} else {
listItem.put("alarmEquipNum", String.valueOf(0));
}
// listItem.put("alarmEquipNum", ObjectUtils.isEmpty(weekItem.get("alarmEquipNum")) ? "" : String.valueOf(weekItem.get("alarmEquipNum")));
// listItem.put("alarmEquipNum",
// ObjectUtils.isEmpty(weekItem.get("alarmEquipNum")) ? "" :
// String.valueOf(weekItem.get("alarmEquipNum")));
// 7日告警条数
if (!ObjectUtils.isEmpty(weekItem.get("type_code")) && !ObjectUtils.isEmpty(weekItem.get("code"))) {
Integer integer = fireFightingSystemMapper.selectAlarms(valueOf(system.get("id")), valueOf(weekItem.get("type_code")), valueOf(weekItem.get("code")), startDate, endDate, indicatorList);
if (!ObjectUtils.isEmpty(weekItem.get("type_code"))
&& !ObjectUtils.isEmpty(weekItem.get("code"))) {
Integer integer = fireFightingSystemMapper.selectAlarms(valueOf(system.get("id")),
valueOf(weekItem.get("type_code")), valueOf(weekItem.get("code")), startDate,
endDate, indicatorList);
listItem.put("trueNum", String.valueOf(integer));
} else {
listItem.put("trueNum", String.valueOf(0));
......@@ -1837,51 +1898,70 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
}
// 总结
Map<String, Object> summarize = fireFightingSystemMapper.selectWeekSummarize(valueOf(system.get("id")), startDate, endDate, indicatorList);
Map<String, Object> summarize = fireFightingSystemMapper
.selectWeekSummarize(valueOf(system.get("id")), startDate, endDate, indicatorList);
// if (!ObjectUtils.isEmpty(summarize.get("contant"))) {
// systemData.put("summarize", String.valueOf(summarize.get("contant")));
// } else {
// systemData.put("summarize", "");
// }
systemData.put("summarize", ObjectUtils.isEmpty(summarize.get("name"))?0:summarize.get("name")
+"设备总数"+(ObjectUtils.isEmpty(summarize.get("equipNum"))?0:summarize.get("equipNum"))
+"台,正常设备"+(ObjectUtils.isEmpty(summarize.get("normalNum"))?0:summarize.get("normalNum"))
+"台,正常率"+(ObjectUtils.isEmpty(summarize.get("normalRate"))?0:summarize.get("normalRate"))
+"%,故障设备"+(ObjectUtils.isEmpty(summarize.get("faultNum"))?0:summarize.get("faultNum"))
+"台,故障率为"+(ObjectUtils.isEmpty(summarize.get("faultRate"))?0:summarize.get("faultRate"))
+"%,七日告警设备为"+(ObjectUtils.isEmpty(summarize.get("exepctionNum"))?0:summarize.get("exepctionNum"))
+"台,同比上周"+(ObjectUtils.isEmpty(summarize.get("status1"))?"增加":summarize.get("status1"))+(ObjectUtils.isEmpty(summarize.get("exepctionWOW"))?0:summarize.get("exepctionWOW"))
+"%,七日告警总数为"+(ObjectUtils.isEmpty(summarize.get("alarmNum"))?0:summarize.get("alarmNum"))
+"条,同比上周"+(ObjectUtils.isEmpty(summarize.get("status2"))?"增加":summarize.get("status2"))+(ObjectUtils.isEmpty(summarize.get("alarmWOW"))?0:summarize.get("alarmWOW"))
+"%。"
);
systemData.put("summarize", ObjectUtils.isEmpty(summarize.get("name")) ? 0
: summarize.get("name") + "设备总数"
+ (ObjectUtils.isEmpty(summarize.get("equipNum")) ? 0 : summarize.get("equipNum"))
+ "台,正常设备"
+ (ObjectUtils.isEmpty(summarize.get("normalNum")) ? 0 : summarize.get("normalNum"))
+ "台,正常率"
+ (ObjectUtils.isEmpty(summarize.get("normalRate")) ? 0
: summarize.get("normalRate"))
+ "%,故障设备"
+ (ObjectUtils.isEmpty(summarize.get("faultNum")) ? 0 : summarize.get("faultNum"))
+ "台,故障率为"
+ (ObjectUtils.isEmpty(summarize.get("faultRate")) ? 0 : summarize.get("faultRate"))
+ "%,七日告警设备为"
+ (ObjectUtils.isEmpty(summarize.get("exepctionNum")) ? 0
: summarize.get("exepctionNum"))
+ "台,同比上周"
+ (ObjectUtils.isEmpty(summarize.get("status1")) ? "增加" : summarize.get("status1"))
+ (ObjectUtils.isEmpty(summarize.get("exepctionWOW")) ? 0
: summarize.get("exepctionWOW"))
+ "%,七日告警总数为"
+ (ObjectUtils.isEmpty(summarize.get("alarmNum")) ? 0 : summarize.get("alarmNum"))
+ "条,同比上周"
+ (ObjectUtils.isEmpty(summarize.get("status2")) ? "增加" : summarize.get("status2"))
+ (ObjectUtils.isEmpty(summarize.get("alarmWOW")) ? 0 : summarize.get("alarmWOW"))
+ "%。");
// echarts 图表
//List<Map<String, Object>> mapList = fireFightingSystemMapper.selectWeekEquipEchart(valueOf(system.get("code")), startDate, endDate, indicatorList);
// List<Map<String, Object>> mapList =
// fireFightingSystemMapper.selectWeekEquipEchart(valueOf(system.get("code")),
// startDate, endDate, indicatorList);
ArrayList<Map<String, Object>> mapList = new ArrayList<>();
HashMap<String, Object> dayEchartsDate = new HashMap<>();
dayEchartsDate.put("type","正常设备");
dayEchartsDate.put("value",ObjectUtils.isEmpty(summarize.get("normalNum"))?0:summarize.get("normalNum"));
dayEchartsDate.put("type", "正常设备");
dayEchartsDate.put("value",
ObjectUtils.isEmpty(summarize.get("normalNum")) ? 0 : summarize.get("normalNum"));
mapList.add(dayEchartsDate);
HashMap<String, Object> dayEchartsDate1 = new HashMap<>();
dayEchartsDate1.put("type","异常设备");
if (!ObjectUtils.isEmpty(summarize.get("equipNum")) || !ObjectUtils.isEmpty(summarize.get("normalNum"))){
dayEchartsDate1.put("value",Integer.parseInt(String.valueOf(summarize.get("equipNum")))
-Integer.parseInt(String.valueOf(summarize.get("normalNum"))));
}else {
dayEchartsDate1.put("value",0);
dayEchartsDate1.put("type", "异常设备");
if (!ObjectUtils.isEmpty(summarize.get("equipNum"))
|| !ObjectUtils.isEmpty(summarize.get("normalNum"))) {
dayEchartsDate1.put("value", Integer.parseInt(String.valueOf(summarize.get("equipNum")))
- Integer.parseInt(String.valueOf(summarize.get("normalNum"))));
} else {
dayEchartsDate1.put("value", 0);
}
mapList.add(dayEchartsDate1);
String pieChart1 = ChartsUtils.pieChart(mapList, "告警设备占比");
systemData.put("pictureLeft", pieChart1);
List<Map<String, Object>> weekEchart = fireFightingSystemMapper.selectWeekEchart(valueOf(system.get("code")), startDate, endDate);
List<Map<String, Object>> weekEchart = fireFightingSystemMapper
.selectWeekEchart(valueOf(system.get("code")), startDate, endDate);
String pieChart2 = ChartsUtils.pieChart(weekEchart, "故障设备类型占比");
systemData.put("pictureCenter", pieChart2);
List<Map<String, Object>> linesEchart = fireFightingSystemMapper.selectWeekLinesEchart(valueOf(system.get("code")), startDate, endDate, indicatorList);
List<Map<String, Object>> linesEchart = fireFightingSystemMapper
.selectWeekLinesEchart(valueOf(system.get("code")), startDate, endDate, indicatorList);
String lines = ChartsUtils.manyLineChart(linesEchart, "报警趋势", "日期", "报警数量", "week");
systemData.put("lines", lines);
......@@ -1892,11 +1972,10 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
}
}else {
} else {
return null;
}
return map;
}
......@@ -1916,7 +1995,8 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
RequestContext.setToken(token.getToke());
RequestContext.setProduct(token.getProduct());
RequestContext.setAppKey(token.getAppKey());
MultipartFile multipartFile = new MyByteArrayMultipartFile("file", "file.pdf", "application/pdf", file2byte(filepdf));
MultipartFile multipartFile = new MyByteArrayMultipartFile("file", "file.pdf", "application/pdf",
file2byte(filepdf));
FeignClientResult<Map<String, String>> result = Systemctl.fileStorageClient.updateCommonFile(multipartFile);
if (result != null) {
Iterator<String> it = result.getResult().keySet().iterator();
......@@ -1936,7 +2016,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
uploadFile.setUrl(pdfUrlString);
uploadFile.setFileType("image");
uploadFile.setObjectType("w-report");
long time = DateUtils.longStr2Date(startDate+" 00:00:00").getTime();
long time = DateUtils.longStr2Date(startDate + " 00:00:00").getTime();
uploadFile.setObjectId(time);
uploadFile.setName("换流站周总结分析报告");
uploadFile.setDepartmentOrgcode(bizOrgCode);
......@@ -1972,18 +2052,21 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
ArrayList<Map<String, Object>> dataList = new ArrayList<>();
for (Map<String, Object> system : systemList) {
HashMap<String, Object> systemData = new HashMap<>();
List<Map> collect = indicatorConfiguration.stream().
filter(item -> item.get("code").equals(String.valueOf(system.get("typeCode")))).collect(Collectors.toList());
List<Map> collect = indicatorConfiguration.stream()
.filter(item -> item.get("code").equals(String.valueOf(system.get("typeCode"))))
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(collect)) {
// 系统名称
systemData.put("systemName", ObjectUtils.isEmpty(system.get("name")) ? "" : String.valueOf(system.get("name")));
systemData.put("systemName",
ObjectUtils.isEmpty(system.get("name")) ? "" : String.valueOf(system.get("name")));
// 系统对应指标
String indicator = String.valueOf(collect.get(0).get("index"));
String[] split = indicator.split(",");
List<String> indicatorList = Arrays.asList(split);
List<Map<String, Object>> weekReportList = fireFightingSystemMapper.selectWeekReportList(String.valueOf(system.get("id")), startDate, endDate);
List<Map<String, Object>> weekReportList = fireFightingSystemMapper
.selectWeekReportList(String.valueOf(system.get("id")), startDate, endDate);
ArrayList<Map<String, Object>> list = new ArrayList<>();
ArrayList<Map<String, Object>> alarmMapList = new ArrayList<>();
Map<String, Object> binMap = new HashMap<>();
......@@ -1991,35 +2074,49 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
for (Map<String, Object> weekItem : weekReportList) {
HashMap<String, Object> listItem = new HashMap<>();
// 设备类型
listItem.put("name", ObjectUtils.isEmpty(weekItem.get("name")) ? "" : String.valueOf(weekItem.get("name")));
listItem.put("name", ObjectUtils.isEmpty(weekItem.get("name")) ? ""
: String.valueOf(weekItem.get("name")));
// 设备总数
listItem.put("num", ObjectUtils.isEmpty(weekItem.get("num")) ? "" : String.valueOf(weekItem.get("num")));
listItem.put("num", ObjectUtils.isEmpty(weekItem.get("num")) ? ""
: String.valueOf(weekItem.get("num")));
// 无异常设备总数
listItem.put("normalNum", ObjectUtils.isEmpty(weekItem.get("normalNum")) ? "" : String.valueOf(weekItem.get("normalNum")));
listItem.put("normalNum", ObjectUtils.isEmpty(weekItem.get("normalNum")) ? ""
: String.valueOf(weekItem.get("normalNum")));
// 物联指标
listItem.put("type_name", ObjectUtils.isEmpty(weekItem.get("type_name")) ? "" : String.valueOf(weekItem.get("type_name")));
listItem.put("type_name", ObjectUtils.isEmpty(weekItem.get("type_name")) ? ""
: String.valueOf(weekItem.get("type_name")));
// 监测数据
listItem.put("monitoringData", ObjectUtils.isEmpty(weekItem.get("monitoringData")) ? "" : String.valueOf(weekItem.get("monitoringData")));
listItem.put("monitoringData", ObjectUtils.isEmpty(weekItem.get("monitoringData")) ? ""
: String.valueOf(weekItem.get("monitoringData")));
// 获取方式
listItem.put("acquisition", ObjectUtils.isEmpty(weekItem.get("acquisition")) ? "" : String.valueOf(weekItem.get("acquisition")));
listItem.put("acquisition", ObjectUtils.isEmpty(weekItem.get("acquisition")) ? ""
: String.valueOf(weekItem.get("acquisition")));
// 正常标准
listItem.put("normal", ObjectUtils.isEmpty(weekItem.get("normal")) ? "" : String.valueOf(weekItem.get("normal")));
listItem.put("normal", ObjectUtils.isEmpty(weekItem.get("normal")) ? ""
: String.valueOf(weekItem.get("normal")));
// 日告警设备数
listItem.put("alarmEquipNum", ObjectUtils.isEmpty(weekItem.get("alarmEquipNum")) ? "" : String.valueOf(weekItem.get("alarmEquipNum")));
listItem.put("alarmEquipNum", ObjectUtils.isEmpty(weekItem.get("alarmEquipNum")) ? ""
: String.valueOf(weekItem.get("alarmEquipNum")));
// 日告警条数
if (!ObjectUtils.isEmpty(weekItem.get("type_code")) && !ObjectUtils.isEmpty(weekItem.get("code"))) {
Integer integer = fireFightingSystemMapper.selectAlarms(valueOf(system.get("id")), valueOf(weekItem.get("type_code")), valueOf(weekItem.get("code")), startDate, endDate, indicatorList);
if (!ObjectUtils.isEmpty(weekItem.get("type_code"))
&& !ObjectUtils.isEmpty(weekItem.get("code"))) {
Integer integer = fireFightingSystemMapper.selectAlarms(valueOf(system.get("id")),
valueOf(weekItem.get("type_code")), valueOf(weekItem.get("code")), startDate,
endDate, indicatorList);
listItem.put("trueNum", String.valueOf(integer));
} else {
listItem.put("trueNum", String.valueOf(0));
}
if (!ObjectUtils.isEmpty(weekItem.get("type_code")) && String.valueOf(weekItem.get("type_code")).endsWith("Fault")){
if (!ObjectUtils.isEmpty(binMap) && !ObjectUtils.isEmpty(listItem.get("name")) && binMap.containsKey(String.valueOf(listItem.get("name")))){
if (!ObjectUtils.isEmpty(weekItem.get("type_code"))
&& String.valueOf(weekItem.get("type_code")).endsWith("Fault")) {
if (!ObjectUtils.isEmpty(binMap) && !ObjectUtils.isEmpty(listItem.get("name"))
&& binMap.containsKey(String.valueOf(listItem.get("name")))) {
int newValue = Integer.parseInt(String.valueOf(listItem.get("alarmEquipNum")));
int oldValue = Integer.parseInt(String.valueOf(binMap.get(String.valueOf(listItem.get("name")))));
binMap.put(String.valueOf(listItem.get("name")),newValue + oldValue);
}else {
binMap.put(String.valueOf(listItem.get("name")),listItem.get("alarmEquipNum"));
int oldValue = Integer
.parseInt(String.valueOf(binMap.get(String.valueOf(listItem.get("name")))));
binMap.put(String.valueOf(listItem.get("name")), newValue + oldValue);
} else {
binMap.put(String.valueOf(listItem.get("name")), listItem.get("alarmEquipNum"));
}
}
......@@ -2048,33 +2145,48 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
}
// 总结
Map<String, Object> summarize = fireFightingSystemMapper.selectDaySummarize(valueOf(system.get("id")), startDate, endDate, indicatorList);
Map<String, Object> summarize = fireFightingSystemMapper
.selectDaySummarize(valueOf(system.get("id")), startDate, endDate, indicatorList);
// if (!ObjectUtils.isEmpty(summarize.get("contant"))) {
// systemData.put("summarize", String.valueOf(summarize.get("contant")));
// } else {
// systemData.put("summarize", "");
// }
systemData.put("summarize", ObjectUtils.isEmpty(summarize.get("name"))?0:summarize.get("name")+"设备总数"+(ObjectUtils.isEmpty(summarize.get("equipNum"))?0:summarize.get("equipNum"))
+"台,今日告警设备为"+(ObjectUtils.isEmpty(summarize.get("dayNum"))?0:summarize.get("dayNum"))+"台,告警总数为"+(ObjectUtils.isEmpty(summarize.get("alarmNum"))?0:summarize.get("alarmNum"))+
"条,正常设备"+(ObjectUtils.isEmpty(summarize.get("normalNum"))?0:summarize.get("normalNum"))+"台,正常率"+(ObjectUtils.isEmpty(summarize.get("normalRate"))?0:summarize.get("normalRate"))+"%");
systemData.put("summarize", ObjectUtils.isEmpty(summarize.get("name")) ? 0
: summarize.get("name") + "设备总数"
+ (ObjectUtils.isEmpty(summarize.get("equipNum")) ? 0 : summarize.get("equipNum"))
+ "台,今日告警设备为"
+ (ObjectUtils.isEmpty(summarize.get("dayNum")) ? 0 : summarize.get("dayNum"))
+ "台,告警总数为"
+ (ObjectUtils.isEmpty(summarize.get("alarmNum")) ? 0 : summarize.get("alarmNum"))
+ "条,正常设备"
+ (ObjectUtils.isEmpty(summarize.get("normalNum")) ? 0 : summarize.get("normalNum"))
+ "台,正常率" + (ObjectUtils.isEmpty(summarize.get("normalRate")) ? 0
: summarize.get("normalRate"))
+ "%");
// echarts 图表
List<Map<String, Object>> mapList = fireFightingSystemMapper.selectDayEquipEchart(valueOf(system.get("code")), startDate, endDate);
List<Map<String, Object>> mapList = fireFightingSystemMapper
.selectDayEquipEchart(valueOf(system.get("code")), startDate, endDate);
String pieChart1 = ChartsUtils.pieChart(alarmMapList, "故障设备类型占比");
// List<Map<String, Object>> dayEcharts = fireFightingSystemMapper.selectDayEchart(valueOf(system.get("id")), startDate, indicatorList);
// List<Map<String, Object>> dayEcharts =
// fireFightingSystemMapper.selectDayEchart(valueOf(system.get("id")),
// startDate, indicatorList);
ArrayList<Map<String, Object>> dayEchart = new ArrayList<>();
HashMap<String, Object> dayEchartsDate = new HashMap<>();
dayEchartsDate.put("type","正常设备");
dayEchartsDate.put("value",ObjectUtils.isEmpty(summarize.get("normalNum"))?0:summarize.get("normalNum"));
dayEchartsDate.put("type", "正常设备");
dayEchartsDate.put("value",
ObjectUtils.isEmpty(summarize.get("normalNum")) ? 0 : summarize.get("normalNum"));
dayEchart.add(dayEchartsDate);
HashMap<String, Object> dayEchartsDate1 = new HashMap<>();
dayEchartsDate1.put("type","异常设备");
if (!ObjectUtils.isEmpty(summarize.get("equipNum")) || !ObjectUtils.isEmpty(summarize.get("normalNum"))){
dayEchartsDate1.put("value",Integer.parseInt(String.valueOf(summarize.get("equipNum")))
-Integer.parseInt(String.valueOf(summarize.get("normalNum"))));
}else {
dayEchartsDate1.put("value",0);
dayEchartsDate1.put("type", "异常设备");
if (!ObjectUtils.isEmpty(summarize.get("equipNum"))
|| !ObjectUtils.isEmpty(summarize.get("normalNum"))) {
dayEchartsDate1.put("value", Integer.parseInt(String.valueOf(summarize.get("equipNum")))
- Integer.parseInt(String.valueOf(summarize.get("normalNum"))));
} else {
dayEchartsDate1.put("value", 0);
}
dayEchart.add(dayEchartsDate1);
......@@ -2082,7 +2194,6 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
systemData.put("pictureRight", pieChart1);
systemData.put("pictureLeft", pieChart2);
systemData.put("sysData", list);
dataList.add(systemData);
map.put("data", dataList);
......@@ -2090,18 +2201,17 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
}
}else {
return null ;
} else {
return null;
}
return map;
}
@Override
public String iotDayReport(String bizOrgCode, String startDate, String endDate) {
Map<String, Object> dataMap = getDayData(bizOrgCode, startDate, endDate);
if (dataMap == null){
if (dataMap == null) {
return null;
}
WordTemplateUtils instance = WordTemplateUtils.getInstance();
......@@ -2114,7 +2224,8 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
RequestContext.setToken(token.getToke());
RequestContext.setProduct(token.getProduct());
RequestContext.setAppKey(token.getAppKey());
MultipartFile multipartFile = new MyByteArrayMultipartFile("file", "file.pdf", "application/pdf", file2byte(filepdf));
MultipartFile multipartFile = new MyByteArrayMultipartFile("file", "file.pdf", "application/pdf",
file2byte(filepdf));
FeignClientResult<Map<String, String>> result = Systemctl.fileStorageClient.updateCommonFile(multipartFile);
if (result != null) {
Iterator<String> it = result.getResult().keySet().iterator();
......@@ -2134,7 +2245,7 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
uploadFile.setUrl(pdfUrlString);
uploadFile.setFileType("image");
uploadFile.setObjectType("d-report");
long time = DateUtils.longStr2Date(startDate+" 00:00:00").getTime();
long time = DateUtils.longStr2Date(startDate + " 00:00:00").getTime();
// DateUtils.getCurrentDayStartTime(new Date()).getTime();
uploadFile.setObjectId(time);
uploadFile.setName("换流站日总结分析报告");
......@@ -2166,7 +2277,8 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
@Override
public List<Map<String, Object>> getEquipExpiryStatistics(String bizOrgCode, Integer expiryDayNum) {
List<Map<String, Object>> equipExpiryStatistics = fireFightingSystemMapper.getEquipExpiryStatistics(bizOrgCode, expiryDayNum);
List<Map<String, Object>> equipExpiryStatistics = fireFightingSystemMapper.getEquipExpiryStatistics(bizOrgCode,
expiryDayNum);
equipExpiryStatistics.forEach(item -> {
item.put("value", Integer.parseInt(item.get("value").toString()));
});
......@@ -2247,14 +2359,17 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
// 系统状态及今日告警设备统计
if (!CollectionUtils.isEmpty(records)) {
List<Long> idList = records.stream().map(FireFightingSystemDto::getId).collect(Collectors.toList());
List<FireFightingSystemDto> list = equipmentSpecificSerivce.fireSysIotEquipAlarmCount(new Date(), bizOrgCode);
List<FireFightingSystemDto> list = equipmentSpecificSerivce.fireSysIotEquipAlarmCount(new Date(),
bizOrgCode);
if (!CollectionUtils.isEmpty(list)) {
//使用stream流把list1和list2根据属性userId合并一个list集合,并根据状态倒序、系统排序升序
List<FireFightingSystemDto> collect = records.stream().peek(m -> list.stream().filter(m2 -> Objects.equals(m.getId(), m2.getId())).forEach(m2 -> {
// 使用stream流把list1和list2根据属性userId合并一个list集合,并根据状态倒序、系统排序升序
List<FireFightingSystemDto> collect = records.stream()
.peek(m -> list.stream().filter(m2 -> Objects.equals(m.getId(), m2.getId())).forEach(m2 -> {
m.setAlarmEquipTotal(m2.getAlarmEquipTotal());
m.setStatus(m2.getStatus());
})).sorted(Comparator.comparing(FireFightingSystemDto::getStatus, Comparator.reverseOrder())
.thenComparing(FireFightingSystemDto::getSort)).collect(Collectors.toList());
.thenComparing(FireFightingSystemDto::getSort))
.collect(Collectors.toList());
pages.setRecords(collect);
}
}
......@@ -2263,15 +2378,16 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
@Override
public List<OrgMenuDto> systemAndEquipmentTreeByBziOrgCode() {
FeignClientResult<List<OrgUsrDto>> feignClientResult = jcsFeignClient.getCompanyDeptListWithAuth(authKey, "COMPANY", "dl");
FeignClientResult<List<OrgUsrDto>> feignClientResult = jcsFeignClient.getCompanyDeptListWithAuth(authKey,
"COMPANY", "dl");
String bizOrgCode = feignClientResult.getResult().get(0).getBizOrgCode();
List<Map<String, Object>> list = fireFightingSystemMapper.systemAndEquipment(bizOrgCode);
return systemAndEquipmentTree(list);
}
@Override
public Map<String,Object> getSystemDetailByCode(String systemCode) {
Map<String,Object> map = new HashMap<>();
public Map<String, Object> getSystemDetailByCode(String systemCode) {
Map<String, Object> map = new HashMap<>();
LambdaQueryWrapper<FireFightingSystemEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(FireFightingSystemEntity::getCode, systemCode);
List<FireFightingSystemEntity> systemEntities = this.list(wrapper);
......@@ -2282,33 +2398,34 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
}
map.put("isExist", true);
if (systemEntities != null) {
FireFightingSystemVo fireFightingSystemVo = fireFightingSystemMapper.getFightingSysInfo(systemEntities.get(0).getCode(), systemEntities.get(0).getId());
FireFightingSystemVo fireFightingSystemVo = fireFightingSystemMapper
.getFightingSysInfo(systemEntities.get(0).getCode(), systemEntities.get(0).getId());
map.put("systemStatus", "异常".equals(fireFightingSystemVo.getStatus()) ? false : true);
} else {
map.put("systemStatus", true);
}
map.put("name",systemEntities.get(0).getName());
map.put("code",systemEntities.get(0).getCode());
map.put("installDate",systemEntities.get(0).getInstallDate());
map.put("chargePersonPhone",systemEntities.get(0).getChargePersonPhone());
map.put("chargePersonName",systemEntities.get(0).getChargePersonName());
map.put("designOrg",systemEntities.get(0).getDesignOrg());
map.put("designOrgTelephone",systemEntities.get(0).getDesignOrgTelephone());
map.put("leadDesigner",systemEntities.get(0).getLeadDesigner());
map.put("name", systemEntities.get(0).getName());
map.put("code", systemEntities.get(0).getCode());
map.put("installDate", systemEntities.get(0).getInstallDate());
map.put("chargePersonPhone", systemEntities.get(0).getChargePersonPhone());
map.put("chargePersonName", systemEntities.get(0).getChargePersonName());
map.put("designOrg", systemEntities.get(0).getDesignOrg());
map.put("designOrgTelephone", systemEntities.get(0).getDesignOrgTelephone());
map.put("leadDesigner", systemEntities.get(0).getLeadDesigner());
Long num = this.baseMapper.selectEquipCountBySystemId(systemEntities.get(0).getId());
String systemType = this.baseMapper.selectEquipSystemType(systemCode);
map.put("systemType",systemType);
map.put("num",num);
map.put("systemType", systemType);
map.put("num", num);
return map;
}
public static List<OrgMenuDto> systemAndEquipmentTree(List<Map<String,Object>> list) {
public static List<OrgMenuDto> systemAndEquipmentTree(List<Map<String, Object>> list) {
List<OrgMenuDto> menuList = list.stream()
.map(o -> new OrgMenuDto(Long.parseLong(o.get("id").toString()), o.get("name").toString(),
ObjectUtils.isEmpty(o.get("parentId")) ? 0L : Long.parseLong(o.get("parentId").toString()),
ObjectUtils.isEmpty(o.get("code")) ? "": o.get("code").toString(),
false, o.get("bizOrgCode").toString()))
ObjectUtils.isEmpty(o.get("code")) ? "" : o.get("code").toString(), false,
o.get("bizOrgCode").toString()))
.collect(Collectors.toList());
List<OrgMenuDto> result = new ArrayList<>();
Map<Long, OrgMenuDto> map = new HashMap<>(menuList.size());
......@@ -2336,7 +2453,6 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
return result;
}
@Override
public Map<String, Object> getStationConnectStatus() {
Map<String, Object> map = new HashMap<>();
......
package com.yeejoin.equipmanage.service.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yeejoin.equipmanage.common.entity.WlCarMileage;
import com.yeejoin.equipmanage.controller.Coordinate;
import com.yeejoin.equipmanage.fegin.IotFeign;
import com.yeejoin.equipmanage.mapper.WlCarMileageMapper;
import com.yeejoin.equipmanage.service.IWlCarMileageService;
/**
* 车量里程表 服务实现类
*
* @author duanwei
* @date 2023-02-01
*/
@Service
public class WlCarMileageServiceImpl extends ServiceImpl<WlCarMileageMapper, WlCarMileage>
implements IWlCarMileageService {
@Autowired
IotFeign iotFeign;
@Override
public Page<WlCarMileage> page(Page<WlCarMileage> page, WlCarMileage wlCarMileage) {
return this.baseMapper.page(page, wlCarMileage);
}
@Override
public Integer totalMileage(String iotCode) {
return this.baseMapper.totalMileage(iotCode);
}
@Override
public List<Coordinate> getCoordinateList(long id) {
WlCarMileage wlCarMileage = this.getById(id);
String iotCode = wlCarMileage.getIotCode();
String measurement = "0THMcLKR";
String deviceName = iotCode.replace(measurement, "");
ResponseModel<List<Object>> result = iotFeign.getLiveData(measurement, deviceName,
wlCarMileage.getStartTime(), wlCarMileage.getEndTime());
List<Object> list = result.getResult();
List<Coordinate> coordinateList = new ArrayList<Coordinate>();
if (list != null) {
for (Object object : list) {
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(object));
Coordinate coordinate = new Coordinate();
List<Double> lnglat = new ArrayList<Double>();
lnglat.add(jsonObject.getDoubleValue("FireCar_Longitude"));
lnglat.add(jsonObject.getDoubleValue("FireCar_Latitude"));
coordinate.setLnglat(lnglat);
coordinate.setSpeed(jsonObject.getIntValue("FireCar_Speed"));
coordinateList.add(coordinate);
}
}
return coordinateList;
}
}
......@@ -3,9 +3,11 @@ package com.yeejoin;
import java.net.InetAddress;
import java.net.UnknownHostException;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
......@@ -20,9 +22,11 @@ import org.springframework.core.env.Environment;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.client.RestTemplate;
import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.core.restful.exception.GlobalExceptionHandler;
import com.yeejoin.amos.boot.biz.common.utils.oConvertUtils;
import com.yeejoin.equipmanage.listener.CarIotListener;
@SpringBootApplication
@EnableTransactionManagement
......@@ -40,6 +44,12 @@ public class AmostEquipApplication {
private static final Logger logger = LoggerFactory.getLogger(AmostEquipApplication.class);
@Autowired
private EmqKeeper emqKeeper;
@Autowired
private CarIotListener carIotListener;
public static void main(String[] args) throws UnknownHostException {
ConfigurableApplicationContext context = SpringApplication.run(AmostEquipApplication.class, args);
Environment env = context.getEnvironment();
......@@ -57,4 +67,14 @@ public class AmostEquipApplication {
RestTemplate restTemplate(){
return new RestTemplate();
}
/**
* 初始化MQTT
*
* @throws MqttException
*/
@Bean
void initMqtt() throws MqttException {
emqKeeper.getMqttClient().subscribe("+/+/property", 1, carIotListener);
}
}
......@@ -1893,6 +1893,12 @@
<if test="equipTypeAmountPage.iotCode!=null and equipTypeAmountPage.iotCode!=''">
AND wlc.iot_code LIKE CONCAT('%',#{equipTypeAmountPage.iotCode},'%')
</if>
<if test="equipTypeAmountPage.carNum!=null and equipTypeAmountPage.carNum!=''">
And wlc.car_num LIKE CONCAT('%',#{equipTypeAmountPage.carNum},'%')
</if>
<if test="equipTypeAmountPage.keyword!=null and equipTypeAmountPage.keyword!=''">
And (wlc.`NAME` LIKE CONCAT('%',#{equipTypeAmountPage.keyword},'%') OR wlc.car_num LIKE CONCAT('%',#{equipTypeAmountPage.keyword},'%'))
</if>
)s2
<if test="equipTypeAmountPage.warehouseStructureName!=null and equipTypeAmountPage.warehouseStructureName!=''">
where s2.full_name LIKE CONCAT('%',#{equipTypeAmountPage.warehouseStructureName},'%')
......@@ -1900,6 +1906,7 @@
<if test="equipTypeAmountPage.bizOrgCode!=null and equipTypeAmountPage.bizOrgCode!=''">
where s2.bizOrgCode LIKE CONCAT(#{equipTypeAmountPage.bizOrgCode},'%')
</if>
order by createDate DESC
</select>
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace="com.yeejoin.equipmanage.mapper.WlCarMileageMapper">
<select id="totalMileage" resultType="Integer">
SELECT SUM(travel) FROM wl_car_mileage WHERE iot_code = #{iotCode}
</select>
<select id="page"
resultType="com.yeejoin.equipmanage.common.entity.WlCarMileage">
SELECT*,date AS name,DATE_FORMAT(from_unixtime(take_time),'%H:%i:%s') AS time FROM wl_car_mileage
LEFT JOIN wl_car ON wl_car.iot_code = wl_car_mileage.iot_code
<where>
<if test="wlCarMileage.carId != null">
AND wl_car.id = #{wlCarMileage.carId}
</if>
<if test="wlCarMileage.iotCode != null">
AND wl_car_mileage.iot_code = #{wlCarMileage.iotCode}
</if>
<if test="wlCarMileage.filterDate != null">
AND wl_car_mileage.date = #{wlCarMileage.filterDate}
</if>
</where>
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment