Compare commits

...

4 Commits

Author SHA1 Message Date
姜玉琦 e55d2cd939 提交代码 2024-12-04 22:54:35 +08:00
姜玉琦 9d3cbc5237 Merge branch 'dev' of http://62.234.3.186:3000/sxyanzhu/jhprjv2 into dev 2024-12-04 21:57:18 +08:00
姜玉琦 6d14455417 Merge branch 'dev' of http://62.234.3.186:3000/sxyanzhu/jhprjv2 into dev 2024-11-22 00:40:31 +08:00
姜玉琦 7c4c765124 提交diamagnetic 2024-11-22 00:40:13 +08:00
16 changed files with 306 additions and 64 deletions

View File

@ -1,5 +1,7 @@
package com.ruoyi.api.labour.controller; package com.ruoyi.api.labour.controller;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.api.base.PubTokenReqVo; import com.ruoyi.api.base.PubTokenReqVo;
import com.ruoyi.api.labour.domain.AiBoxApiReqVo; import com.ruoyi.api.labour.domain.AiBoxApiReqVo;
import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.annotation.Anonymous;
@ -16,6 +18,7 @@ import com.ruoyi.common.enums.*;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.sign.Md5Utils;
import com.ruoyi.framework.web.service.SysLoginService; import com.ruoyi.framework.web.service.SysLoginService;
import com.ruoyi.system.domain.SysApplyConfig; import com.ruoyi.system.domain.SysApplyConfig;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
@ -170,4 +173,27 @@ public class AiBoxApiController extends BaseController {
} }
return getDataTable(list); return getDataTable(list);
} }
private static final String baseUrl = "http://localhost:8090/jhapi";
public static void main(String[] args) {
String appId = "jhcf17140956314490N6VSHsPjx008";
String AppSecret = "xx+UsVJ9cIJ8PTWpWU5GcNx+x+chJBQIDAQAB";
Long time = System.currentTimeMillis();
String sign = Md5Utils.hash(appId+AppSecret+time);
System.out.println(time);
System.out.println(sign);
String url = baseUrl + "/api/aiboxs/v1/getToken";
Map<String, Object> body = new HashMap<>();
body.put("appId",appId);
body.put("sign",sign);
body.put("timestamp",time);
String result = HttpUtil.post(url, body);
JSONObject jsonObject = JSONObject.parseObject(result);
if(jsonObject.getInteger("code")==200){
// 获取到存入redis设置30分钟有效期
String token = jsonObject.getString("Authorization");
}
}
} }

View File

@ -52,6 +52,11 @@ public class CacheConstants
*/ */
public static final String YANZHU_DEVICE_TOWER = "device.tower_cfg:"; public static final String YANZHU_DEVICE_TOWER = "device.tower_cfg:";
/**
* yanzhu redis key
*/
public static final String YANZHU_DEVICE_AI = "device.aibox_cfg:";
/** /**
* redis key * redis key
*/ */

View File

@ -61,6 +61,15 @@
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['project:checkDetection:export']"
>导出</el-button
>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -725,7 +734,7 @@ export default {
{ {
...this.queryParams, ...this.queryParams,
}, },
`checkDetection_${new Date().getTime()}.xlsx` `材料取样复试_${new Date().getTime()}.xlsx`
); );
}, },
/** 选择见证人*/ /** 选择见证人*/

View File

@ -58,6 +58,15 @@
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['project:materialSeal:export']"
>导出</el-button
>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -586,7 +595,7 @@ export default {
{ {
...this.queryParams, ...this.queryParams,
}, },
`materialSeal_${new Date().getTime()}.xlsx` `材料封样_${new Date().getTime()}.xlsx`
); );
}, },
/** 选择见证人*/ /** 选择见证人*/

View File

@ -64,6 +64,15 @@
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['project:projectChecking:export']"
>导出</el-button
>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -618,7 +627,7 @@ export default {
{ {
...this.queryParams, ...this.queryParams,
}, },
`projectChecking_${new Date().getTime()}.xlsx` `举牌验收_${new Date().getTime()}.xlsx`
); );
}, },
/** 选择质量专员*/ /** 选择质量专员*/

View File

@ -63,6 +63,15 @@
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['project:projectMeasure:export']"
>导出</el-button
>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -605,7 +614,7 @@ export default {
{ {
...this.queryParams, ...this.queryParams,
}, },
`projectMeasure_${new Date().getTime()}.xlsx` `实测实量_${new Date().getTime()}.xlsx`
); );
}, },
/** 选择质量专员*/ /** 选择质量专员*/

View File

@ -21,15 +21,19 @@ public class SurProjectCheckDetection extends BaseEntity
private Long id; private Long id;
/** 项目主键 */ /** 项目主键 */
@Excel(name = "项目主键")
private Long projectId; private Long projectId;
/** 单位主键 */ /** 单位主键 */
@Excel(name = "单位主键")
private Long deptId; private Long deptId;
@Excel(name = "项目名称")
private String projectName;
@Excel(name = "单位名称")
private String deptName;
/** 送检类型 */ /** 送检类型 */
@Excel(name = "送检类型") @Excel(name = "送检类型",dictType = "check_detection_check_type")
private String checkType; private String checkType;
/** 材料名称 */ /** 材料名称 */
@ -45,19 +49,16 @@ public class SurProjectCheckDetection extends BaseEntity
private String sampleNum; private String sampleNum;
/** 提供合格证 */ /** 提供合格证 */
@Excel(name = "提供合格证") @Excel(name = "是否提供合格证",dictType = "sys_yes_no")
private String qualifiedFlag; private String qualifiedFlag;
/** 代表数量 */ /** 代表数量 */
@Excel(name = "代表数量")
private String represenNum; private String represenNum;
/** 取样人 */ /** 取样人 */
@Excel(name = "取样人")
private String sampleUser; private String sampleUser;
/** 取样人名称 */ /** 取样人名称 */
@Excel(name = "取样人名称")
private String sampleUserName; private String sampleUserName;
/** 见证人 */ /** 见证人 */
@ -78,19 +79,15 @@ public class SurProjectCheckDetection extends BaseEntity
private Date checkTime; private Date checkTime;
/** 送检状态 */ /** 送检状态 */
@Excel(name = "送检状态")
private String checkState; private String checkState;
/** 检测结果 */ /** 检测结果 */
@Excel(name = "检测结果")
private String detectionResult; private String detectionResult;
/** 检测报告 */ /** 检测报告 */
@Excel(name = "检测报告")
private String detectionFile; private String detectionFile;
/** 数据状态 */ /** 数据状态 */
@Excel(name = "数据状态")
private String isDel; private String isDel;
private String attachment; private String attachment;
@ -121,13 +118,12 @@ public class SurProjectCheckDetection extends BaseEntity
} }
private String specimenPhoto; private String specimenPhoto;
/** 审核状态 */ /** 审核状态 */
@Excel(name = "审核状态") @Excel(name = "审核状态",dictType = "project_check_status")
private String approveStatus; private String approveStatus;
private String checkTypeName; private String checkTypeName;
private String projectName;
private String deptName;
private String createByName; private String createByName;
private String updateByName; private String updateByName;

View File

@ -63,7 +63,6 @@ public class SurProjectChecking extends BaseEntity
private Long checkingNum; private Long checkingNum;
/** 验收结果 */ /** 验收结果 */
@Excel(name = "验收结果")
private String checkResult; private String checkResult;
/** 验收描述 */ /** 验收描述 */
@ -87,11 +86,9 @@ public class SurProjectChecking extends BaseEntity
private String superviseUserName; private String superviseUserName;
/** 分包单位用户 */ /** 分包单位用户 */
@Excel(name = "分包单位用户")
private String groupDeptUser; private String groupDeptUser;
/** 分包单位用户名称 */ /** 分包单位用户名称 */
@Excel(name = "分包单位用户名称")
private String groupDeptUserName; private String groupDeptUserName;
/** 验收时间 */ /** 验收时间 */
@ -100,19 +97,16 @@ public class SurProjectChecking extends BaseEntity
private Date checkingDate; private Date checkingDate;
/** 验收附件 */ /** 验收附件 */
@Excel(name = "验收附件")
private String checkingFiles; private String checkingFiles;
/** 数据状态 */ /** 数据状态 */
@Excel(name = "数据状态")
private Long isDel; private Long isDel;
/** 审核状态 */ /** 审核状态 */
@Excel(name = "审核状态") @Excel(name = "审核状态",dictType = "project_check_status")
private String approveStatus; private String approveStatus;
@Excel(name = "验收类型")
private String dataTypeLvl1; private String dataTypeLvl1;
public String getDataTypeLvl1() { public String getDataTypeLvl1() {
@ -131,7 +125,6 @@ public class SurProjectChecking extends BaseEntity
this.dataTypeLvl2 = dataTypeLvl2; this.dataTypeLvl2 = dataTypeLvl2;
} }
@Excel(name = "子验收类型")
private String dataTypeLvl2; private String dataTypeLvl2;
public void setId(Long id) public void setId(Long id)

View File

@ -33,11 +33,9 @@ public class SurProjectMaterialSeal extends BaseEntity
private String deptName; private String deptName;
/** 封样主图 */ /** 封样主图 */
@Excel(name = "封样主图")
private String mainImage; private String mainImage;
/** 图片集合 */ /** 图片集合 */
@Excel(name = "图片集合")
private String imageUrls; private String imageUrls;
/** 封样名称 */ /** 封样名称 */
@ -62,25 +60,11 @@ public class SurProjectMaterialSeal extends BaseEntity
private Date sealDate; private Date sealDate;
/** 会签单 */ /** 会签单 */
@Excel(name = "会签单")
private String signFiles; private String signFiles;
/** 变更单 */ /** 变更单 */
@Excel(name = "变更单")
private String alterationFiles; private String alterationFiles;
/** 数据状态 */
@Excel(name = "数据状态")
private String isDel;
/** 审核状态 */
@Excel(name = "审核状态")
private String approveStatus;
/** 封样状态 */
@Excel(name = "封样状态")
private String materialResult;
/** 监理人 */ /** 监理人 */
@Excel(name = "监理人") @Excel(name = "监理人")
private String witnessUser; private String witnessUser;
@ -89,6 +73,16 @@ public class SurProjectMaterialSeal extends BaseEntity
@Excel(name = "监理人名称") @Excel(name = "监理人名称")
private String witnessUserName; private String witnessUserName;
/** 数据状态 */
private String isDel;
/** 审核状态 */
@Excel(name = "审核状态",dictType = "project_check_status")
private String approveStatus;
/** 封样状态 */
private String materialResult;
public void setId(Long id) public void setId(Long id)
{ {
this.id = id; this.id = id;

View File

@ -33,15 +33,13 @@ public class SurProjectMeasure extends BaseEntity
private String deptName; private String deptName;
/** 测量主图 */ /** 测量主图 */
@Excel(name = "测量主图")
private String mainImage; private String mainImage;
/** 图片集合 */ /** 图片集合 */
@Excel(name = "图片集合")
private String imageUrls; private String imageUrls;
/** 测量类型 */ /** 测量类型 */
@Excel(name = "测量类型") @Excel(name = "测量类型",dictType = "project_measure_type")
private String measureType; private String measureType;
/** 测量部位 */ /** 测量部位 */
@ -49,7 +47,7 @@ public class SurProjectMeasure extends BaseEntity
private String measurePosition; private String measurePosition;
/** 测量内容 */ /** 测量内容 */
@Excel(name = "测量内容") @Excel(name = "测量内容",dictType = "project_measure_info_type")
private String measureInfo; private String measureInfo;
/** 测量时间 */ /** 测量时间 */
@ -62,11 +60,9 @@ public class SurProjectMeasure extends BaseEntity
private String measurePointPosition; private String measurePointPosition;
/** 测量结果 */ /** 测量结果 */
@Excel(name = "测量结果")
private String measureResult; private String measureResult;
/** 测量文件 */ /** 测量文件 */
@Excel(name = "测量文件")
private String measureFiles; private String measureFiles;
/** 质量专员 */ /** 质量专员 */
@ -86,11 +82,10 @@ public class SurProjectMeasure extends BaseEntity
private String superviseUserName; private String superviseUserName;
/** 数据状态 */ /** 数据状态 */
@Excel(name = "数据状态")
private String isDel; private String isDel;
/** 审核状态 */ /** 审核状态 */
@Excel(name = "审核状态") @Excel(name = "审核状态",dictType = "project_check_status")
private String approveStatus; private String approveStatus;
private String measureTypeName; private String measureTypeName;

View File

@ -6,6 +6,7 @@ import com.ruoyi.common.annotation.RateLimiter;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.enums.LimitType; import com.ruoyi.common.enums.LimitType;
import com.yanzhu.jh.video.domain.DevAiProjectDataVO; import com.yanzhu.jh.video.domain.DevAiProjectDataVO;
import com.yanzhu.jh.video.domain.DevBwAiProjectDataVo;
import com.yanzhu.jh.video.service.IDevAiProjectDataService; import com.yanzhu.jh.video.service.IDevAiProjectDataService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -34,11 +35,11 @@ public class AIBoxController extends BaseController {
private static final Logger logger = LoggerFactory.getLogger("AIBoxController"); private static final Logger logger = LoggerFactory.getLogger("AIBoxController");
/** /**
* aibox * aibox
*/ */
@PostMapping("/v1/push") @PostMapping("/v1/push")
@RateLimiter(count = 10, limitType = LimitType.IP) @RateLimiter(count = 10, limitType = LimitType.IP)
public void push(@RequestBody Map<String,Object> dataMap) public void boGuanPush(@RequestBody Map<String,Object> dataMap)
{ {
try{ try{
List<Map<String,Object>> list = (List<Map<String,Object>>)dataMap.get("BehaviorResults"); List<Map<String,Object>> list = (List<Map<String,Object>>)dataMap.get("BehaviorResults");
@ -46,10 +47,24 @@ public class AIBoxController extends BaseController {
devAiProjectDataService.insertHttpDevAiProjectData(devAiProjectDataVO); devAiProjectDataService.insertHttpDevAiProjectData(devAiProjectDataVO);
}catch (Exception e){ }catch (Exception e){
logger.info("AiBox解析参数失败"); logger.info("AiBox解析参数失败");
logger.info(dataMap.toString());
e.printStackTrace(); e.printStackTrace();
} }
} }
/**
* aibox
*/
@PostMapping("/v2/push")
public void boWaPush(@RequestBody DevBwAiProjectDataVo data)
{
try{
logger.info("BOWAN...{}");
devAiProjectDataService.insertHttpBwDevAiProjectData(data);
}catch (Exception e){
logger.info("BW...AiBox解析参数失败");
e.printStackTrace();
}
}
} }

View File

@ -0,0 +1,23 @@
package com.yanzhu.jh.video.domain;
import lombok.Data;
import java.util.Map;
/**
*
*/
@Data
public class DevBwAiProjectDataVo {
private String device_sn;
private String device_version;
private String date;
private Long timestamp;
private String label;
private String alias;
private String count;
private String img;
private Map<String, Object> extend;
}

View File

@ -11,6 +11,12 @@ import com.yanzhu.jh.video.domain.DevAiProjectConfig;
*/ */
public interface IDevAiProjectConfigService public interface IDevAiProjectConfigService
{ {
/**
*
*/
public void loadingDevAiConfigCache();
/** /**
* *
* *

View File

@ -5,6 +5,7 @@ import java.util.Map;
import com.yanzhu.jh.video.domain.DevAiProjectData; import com.yanzhu.jh.video.domain.DevAiProjectData;
import com.yanzhu.jh.video.domain.DevAiProjectDataVO; import com.yanzhu.jh.video.domain.DevAiProjectDataVO;
import com.yanzhu.jh.video.domain.DevBwAiProjectDataVo;
/** /**
* Service * Service
@ -46,6 +47,14 @@ public interface IDevAiProjectDataService
*/ */
public void insertHttpDevAiProjectData(DevAiProjectDataVO devAiProjectDataVO); public void insertHttpDevAiProjectData(DevAiProjectDataVO devAiProjectDataVO);
/**
*
*
* @param devBwAiProjectDataVo
* @return
*/
public void insertHttpBwDevAiProjectData(DevBwAiProjectDataVo devBwAiProjectDataVo);
/** /**
* *
* *

View File

@ -3,8 +3,11 @@ package com.yanzhu.jh.video.service.impl;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.enums.PublicStateEnum; import com.ruoyi.common.enums.PublicStateEnum;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
@ -15,6 +18,9 @@ import com.yanzhu.jh.video.mapper.DevAiProjectConfigMapper;
import com.yanzhu.jh.video.domain.DevAiProjectConfig; import com.yanzhu.jh.video.domain.DevAiProjectConfig;
import com.yanzhu.jh.video.service.IDevAiProjectConfigService; import com.yanzhu.jh.video.service.IDevAiProjectConfigService;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import javax.annotation.PostConstruct;
/** /**
* Service * Service
* *
@ -24,9 +30,35 @@ import com.ruoyi.common.utils.SecurityUtils;
@Service @Service
public class DevAiProjectConfigServiceImpl implements IDevAiProjectConfigService public class DevAiProjectConfigServiceImpl implements IDevAiProjectConfigService
{ {
@Autowired
private RedisCache redisCache;
@Autowired @Autowired
private DevAiProjectConfigMapper devAiProjectConfigMapper; private DevAiProjectConfigMapper devAiProjectConfigMapper;
/**
*
*/
@PostConstruct
public void init()
{
loadingDevAiConfigCache();
}
/**
*
*/
@Override
public void loadingDevAiConfigCache()
{
List<DevAiProjectConfig> configList = devAiProjectConfigMapper.selectDevAiProjectConfigList(new DevAiProjectConfig());
if(CollectionUtils.isNotEmpty(configList)){
for (DevAiProjectConfig devConfig : configList) {
redisCache.setCacheObject(CacheConstants.YANZHU_DEVICE_AI + devConfig.getSerialNumber(), devConfig);
}
}
}
/** /**
* *
* *
@ -71,6 +103,9 @@ public class DevAiProjectConfigServiceImpl implements IDevAiProjectConfigService
devAiProjectConfig.setCreateTime(DateUtils.getNowDate()); devAiProjectConfig.setCreateTime(DateUtils.getNowDate());
int rows = devAiProjectConfigMapper.insertDevAiProjectConfig(devAiProjectConfig); int rows = devAiProjectConfigMapper.insertDevAiProjectConfig(devAiProjectConfig);
insertDevAiProjectConfigPassage(devAiProjectConfig); insertDevAiProjectConfigPassage(devAiProjectConfig);
if(rows>0){
this.loadingDevAiConfigCache();
}
return rows; return rows;
} }
@ -88,7 +123,11 @@ public class DevAiProjectConfigServiceImpl implements IDevAiProjectConfigService
devAiProjectConfig.setUpdateTime(DateUtils.getNowDate()); devAiProjectConfig.setUpdateTime(DateUtils.getNowDate());
devAiProjectConfigMapper.deleteDevAiProjectConfigPassageByAiboxId(devAiProjectConfig.getId()); devAiProjectConfigMapper.deleteDevAiProjectConfigPassageByAiboxId(devAiProjectConfig.getId());
insertDevAiProjectConfigPassage(devAiProjectConfig); insertDevAiProjectConfigPassage(devAiProjectConfig);
return devAiProjectConfigMapper.updateDevAiProjectConfig(devAiProjectConfig); int rows = devAiProjectConfigMapper.updateDevAiProjectConfig(devAiProjectConfig);
if(rows>0){
this.loadingDevAiConfigCache();
}
return rows;
} }
/** /**
@ -102,7 +141,11 @@ public class DevAiProjectConfigServiceImpl implements IDevAiProjectConfigService
public int deleteDevAiProjectConfigByIds(Long[] ids) public int deleteDevAiProjectConfigByIds(Long[] ids)
{ {
devAiProjectConfigMapper.deleteDevAiProjectConfigPassageByAiboxIds(ids); devAiProjectConfigMapper.deleteDevAiProjectConfigPassageByAiboxIds(ids);
return devAiProjectConfigMapper.deleteDevAiProjectConfigByIds(ids); int rows = devAiProjectConfigMapper.deleteDevAiProjectConfigByIds(ids);
if(rows>0){
this.loadingDevAiConfigCache();
}
return rows;
} }
/** /**
@ -116,7 +159,11 @@ public class DevAiProjectConfigServiceImpl implements IDevAiProjectConfigService
public int deleteDevAiProjectConfigById(Long id) public int deleteDevAiProjectConfigById(Long id)
{ {
devAiProjectConfigMapper.deleteDevAiProjectConfigPassageByAiboxId(id); devAiProjectConfigMapper.deleteDevAiProjectConfigPassageByAiboxId(id);
return devAiProjectConfigMapper.deleteDevAiProjectConfigById(id); int rows = devAiProjectConfigMapper.deleteDevAiProjectConfigById(id);
if(rows>0){
this.loadingDevAiConfigCache();
}
return rows;
} }
/** /**

View File

@ -3,14 +3,20 @@ package com.yanzhu.jh.video.service.impl;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.PublicStateEnum; import com.ruoyi.common.enums.PublicStateEnum;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.MultipartFileUtils; import com.ruoyi.common.utils.file.MultipartFileUtils;
import com.yanzhu.jh.video.domain.DevAiProjectConfig; import com.yanzhu.jh.video.domain.DevAiProjectConfig;
import com.yanzhu.jh.video.domain.DevAiProjectDataVO; import com.yanzhu.jh.video.domain.DevAiProjectDataVO;
import com.yanzhu.jh.video.domain.DevBwAiProjectDataVo;
import com.yanzhu.jh.video.mapper.DevAiProjectConfigMapper; import com.yanzhu.jh.video.mapper.DevAiProjectConfigMapper;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -32,6 +38,9 @@ public class DevAiProjectDataServiceImpl implements IDevAiProjectDataService
{ {
private static final Logger logger = LoggerFactory.getLogger("DevAiProjectDataServiceImpl"); private static final Logger logger = LoggerFactory.getLogger("DevAiProjectDataServiceImpl");
@Autowired
private RedisCache redisCache;
@Autowired @Autowired
private DevAiProjectDataMapper devAiProjectDataMapper; private DevAiProjectDataMapper devAiProjectDataMapper;
@ -84,6 +93,11 @@ public class DevAiProjectDataServiceImpl implements IDevAiProjectDataService
@Override @Override
public void insertHttpDevAiProjectData(DevAiProjectDataVO devAiProjectDataVO) public void insertHttpDevAiProjectData(DevAiProjectDataVO devAiProjectDataVO)
{ {
//根据设备配置查询设备绑定的项目和单位信息
DevAiProjectConfig config = redisCache.getCacheObject(CacheConstants.YANZHU_DEVICE_AI+devAiProjectDataVO.getSerialNumber());
if(Objects.isNull(config)){
throw new ServiceException("设备信息未注册...");
}
logger.info("AiBox消息解析成功开始转换实体"); logger.info("AiBox消息解析成功开始转换实体");
DevAiProjectData devAiProjectData = new DevAiProjectData(); DevAiProjectData devAiProjectData = new DevAiProjectData();
devAiProjectData.setDeviceId(devAiProjectDataVO.getDeviceId()); devAiProjectData.setDeviceId(devAiProjectDataVO.getDeviceId());
@ -150,18 +164,101 @@ public class DevAiProjectDataServiceImpl implements IDevAiProjectDataService
} }
devAiProjectData.setCreateTime(DateUtils.getNowDate()); devAiProjectData.setCreateTime(DateUtils.getNowDate());
devAiProjectData.setIsDel(PublicStateEnum.OK.getCode()); devAiProjectData.setIsDel(PublicStateEnum.OK.getCode());
//根据设备配置查询设备绑定的项目和单位信息 devAiProjectData.setProjectId(config.getProjectId());
DevAiProjectConfig devAiProjectConfig = new DevAiProjectConfig(); devAiProjectData.setDeptId(config.getDeptId());
devAiProjectConfig.setSerialNumber(devAiProjectData.getSerialNumber());
List<DevAiProjectConfig> devAiProjectConfigList = devAiProjectConfigMapper.selectDevAiProjectConfigList(devAiProjectConfig);
if(devAiProjectConfigList!=null && devAiProjectConfigList.size()>0){
devAiProjectData.setProjectId(devAiProjectConfigList.get(0).getProjectId());
devAiProjectData.setDeptId(devAiProjectConfigList.get(0).getDeptId());
}
logger.info("新增AI设备数据成功"); logger.info("新增AI设备数据成功");
devAiProjectDataMapper.insertDevAiProjectData(devAiProjectData); devAiProjectDataMapper.insertDevAiProjectData(devAiProjectData);
} }
/**
*
*
* @param devBwAiProjectDataVo
* @return
*/
@Override
public void insertHttpBwDevAiProjectData(DevBwAiProjectDataVo devBwAiProjectDataVo){
//根据设备配置查询设备绑定的项目和单位信息
DevAiProjectConfig config = redisCache.getCacheObject(CacheConstants.YANZHU_DEVICE_AI+devBwAiProjectDataVo.getDevice_sn());
if(Objects.isNull(config)){
throw new ServiceException("设备信息未注册...");
}
Map<String, Object> extendMap = devBwAiProjectDataVo.getExtend();
logger.info("AiBox消息解析成功开始转换实体");
DevAiProjectData devAiProjectData = new DevAiProjectData();
devAiProjectData.setDeviceName(config.getDeviceName());
/** 设备的序列号 */
devAiProjectData.setSerialNumber(devBwAiProjectDataVo.getDevice_sn());
/** 相机的序列号 */
devAiProjectData.setIpcSerialNum(devBwAiProjectDataVo.getDevice_sn());
if(Objects.nonNull(extendMap)){
devAiProjectData.setChannelId(Convert.toLong(extendMap.get("ch")));
devAiProjectData.setChannelName(Convert.toStr(extendMap.get("source_name")));
}
/** 报警类型 */
String type = this.switchAlarmType(devBwAiProjectDataVo.getLabel());
if(!type.equals("-1")){
devAiProjectData.setAlarmType(Convert.toLong(type));
/** 采集时间 */
devAiProjectData.setTimestamp(new Date(devBwAiProjectDataVo.getTimestamp()));
logger.info("实体转换成功Base64开始转换图片");
String objImg64 = devBwAiProjectDataVo.getImg();
try {
MultipartFile file = MultipartFileUtils.base64ToMultipartFile("data:image/png;base64,"+objImg64);
// 上传文件路径
String filePath = RuoYiConfig.getUploadPath();
// 上传并返回新文件名称
String profileFile = FileUploadUtils.upload(filePath, file);
devAiProjectData.setImageUrl(profileFile);
logger.info("Base64上传图片成功");
} catch (Exception e) {
e.printStackTrace();
}
devAiProjectData.setCreateTime(DateUtils.getNowDate());
devAiProjectData.setIsDel(PublicStateEnum.OK.getCode());
devAiProjectData.setProjectId(config.getProjectId());
devAiProjectData.setDeptId(config.getDeptId());
logger.info("新增AI设备数据成功");
devAiProjectDataMapper.insertDevAiProjectData(devAiProjectData);
}
}
/**
*
* @return
*/
private String switchAlarmType(String aliasLabel){
String alarmType;
switch (aliasLabel){
case "nohelmet" : alarmType="4";break;
case "head" : alarmType="4";break;
case "helmet" : alarmType="4";break;
case "fire" : alarmType="8";break;
case "vest" : alarmType="65";break;
case "smoke" : alarmType="7";break;
case "smoking" : alarmType="8";break;
case "calling" : alarmType="6";break;
case "face" : alarmType="face";break;
case "mask" : alarmType="mask";break;
case "garbage" : alarmType="garbage";break;
case "tricycle" : alarmType="tricycle";break;
case "person" : alarmType="person";break;
case "clothes" : alarmType="65";break;
case "down" : alarmType="62";break;
case "phone" : alarmType="6";break;
case "body" : alarmType="body";break;
case "ponding" : alarmType="ponding";break;
case "car" : alarmType="car";break;
case "bicycle" : alarmType="bicycle";break;
case "motorcycle" : alarmType="motorcycle";break;
case "bus" : alarmType="bus";break;
case "truck" : alarmType="truck";break;
case "van" : alarmType="van";break;
default : alarmType="0";
}
return alarmType;
}
/** /**
* *
* *