Commit 129de41f authored by kongfm's avatar kongfm

修改特种设备es 接口

parent 80ac3fea
package com.yeejoin.amos.boot.module.tzs.api.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 设备区域数量中间表
*
* @author system_generator
* @date 2021-11-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="EquipmentRegionNumDto", description="设备区域数量中间表")
public class EquipmentRegionNumDto extends BaseDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "省级code")
private String provinceCode;
@ApiModelProperty(value = "市级code")
private String cityCode;
@ApiModelProperty(value = "区级code")
private String districtCode;
@ApiModelProperty(value = "纬度")
private String latitude;
@ApiModelProperty(value = "经度")
private String longitude;
@ApiModelProperty(value = "数量")
private Long num;
@ApiModelProperty(value = "设备类别编码")
private String categoryCode;
}
package com.yeejoin.amos.boot.module.tzs.api.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 通话记录记录表
*
* @author system_generator
* @date 2021-11-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="VoiceRecordLogDto", description="通话记录记录表")
public class VoiceRecordLogDto extends BaseDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "警情id")
private Long alertId;
@ApiModelProperty(value = "cti通话id")
private String connectId;
@ApiModelProperty(value = "是否处理")
private Boolean isDeal;
@ApiModelProperty(value = "处理次数")
private Integer dealTimes;
}
package com.yeejoin.amos.boot.module.tzs.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* 设备区域数量中间表
*
* @author system_generator
* @date 2021-11-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("tz_equipment_region_num")
public class EquipmentRegionNum extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 省级code
*/
@TableField("province_code")
private String provinceCode;
/**
* 市级code
*/
@TableField("city_code")
private String cityCode;
/**
* 区级code
*/
@TableField("district_code")
private String districtCode;
/**
* 纬度
*/
@TableField("latitude")
private String latitude;
/**
* 经度
*/
@TableField("longitude")
private String longitude;
/**
* 数量
*/
@TableField("num")
private Long num;
/**
* 设备类别编码
*/
@TableField("category_code")
private String categoryCode;
}
package com.yeejoin.amos.boot.module.tzs.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* 通话记录记录表
*
* @author system_generator
* @date 2021-11-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("tz_voice_record_log")
public class VoiceRecordLog extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 警情id
*/
@TableField("alert_id")
private Long alertId;
/**
* cti通话id
*/
@TableField("connect_id")
private String connectId;
/**
* 是否处理
*/
@TableField("is_deal")
private Boolean isDeal;
/**
* 处理次数
*/
@TableField("deal_times")
private Integer dealTimes;
}
package com.yeejoin.amos.boot.module.tzs.api.mapper;
import com.yeejoin.amos.boot.module.tzs.api.entity.EquipmentRegionNum;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* 设备区域数量中间表 Mapper 接口
*
* @author system_generator
* @date 2021-11-09
*/
public interface EquipmentRegionNumMapper extends BaseMapper<EquipmentRegionNum> {
}
package com.yeejoin.amos.boot.module.tzs.api.mapper;
import com.yeejoin.amos.boot.module.tzs.api.entity.VoiceRecordLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* 通话记录记录表 Mapper 接口
*
* @author system_generator
* @date 2021-11-09
*/
public interface VoiceRecordLogMapper extends BaseMapper<VoiceRecordLog> {
}
package com.yeejoin.amos.boot.module.tzs.api.service;
/**
* 设备区域数量中间表接口类
*
* @author system_generator
* @date 2021-11-09
*/
public interface IEquipmentRegionNumService {
}
package com.yeejoin.amos.boot.module.tzs.api.service;
/**
* 通话记录记录表接口类
*
* @author system_generator
* @date 2021-11-09
*/
public interface IVoiceRecordLogService {
}
<?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.amos.boot.module.tzs.api.mapper.EquipmentRegionNumMapper">
</mapper>
<?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.amos.boot.module.tzs.api.mapper.VoiceRecordLogMapper">
</mapper>
package com.yeejoin.amos.boot.module.tzs.biz.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RestController;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import java.util.List;
import com.yeejoin.amos.boot.module.tzs.biz.service.impl.EquipmentRegionNumServiceImpl;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.tzs.api.dto.EquipmentRegionNumDto;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
/**
* 设备区域数量中间表
*
* @author system_generator
* @date 2021-11-09
*/
@RestController
@Api(tags = "设备区域数量中间表Api")
@RequestMapping(value = "/equipment-region-num")
public class EquipmentRegionNumController extends BaseController {
@Autowired
EquipmentRegionNumServiceImpl equipmentRegionNumServiceImpl;
/**
* 新增设备区域数量中间表
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增设备区域数量中间表", notes = "新增设备区域数量中间表")
public ResponseModel<EquipmentRegionNumDto> save(@RequestBody EquipmentRegionNumDto model) {
model = equipmentRegionNumServiceImpl.createWithModel(model);
return ResponseHelper.buildResponse(model);
}
/**
* 根据sequenceNbr更新
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新设备区域数量中间表", notes = "根据sequenceNbr更新设备区域数量中间表")
public ResponseModel<EquipmentRegionNumDto> updateBySequenceNbrEquipmentRegionNum(@RequestBody EquipmentRegionNumDto model,@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
model.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(equipmentRegionNumServiceImpl.updateWithModel(model));
}
/**
* 根据sequenceNbr删除
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除设备区域数量中间表", notes = "根据sequenceNbr删除设备区域数量中间表")
public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr){
return ResponseHelper.buildResponse(equipmentRegionNumServiceImpl.removeById(sequenceNbr));
}
/**
* 根据sequenceNbr查询
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET",value = "根据sequenceNbr查询单个设备区域数量中间表", notes = "根据sequenceNbr查询单个设备区域数量中间表")
public ResponseModel<EquipmentRegionNumDto> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(equipmentRegionNumServiceImpl.queryBySeq(sequenceNbr));
}
/**
* 列表分页查询
*
* @param current 当前页
* @param current 每页大小
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/page")
@ApiOperation(httpMethod = "GET",value = "设备区域数量中间表分页查询", notes = "设备区域数量中间表分页查询")
public ResponseModel<Page<EquipmentRegionNumDto>> queryForPage(@RequestParam(value = "current") int current,@RequestParam
(value = "size") int size) {
Page<EquipmentRegionNumDto> page = new Page<EquipmentRegionNumDto>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(equipmentRegionNumServiceImpl.queryForEquipmentRegionNumPage(page));
}
/**
* 列表全部数据查询
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "设备区域数量中间表列表全部数据查询", notes = "设备区域数量中间表列表全部数据查询")
@GetMapping(value = "/list")
public ResponseModel<List<EquipmentRegionNumDto>> selectForList() {
return ResponseHelper.buildResponse(equipmentRegionNumServiceImpl.queryForEquipmentRegionNumList());
}
}
package com.yeejoin.amos.boot.module.tzs.biz.service.impl;
import com.yeejoin.amos.boot.module.tzs.api.entity.EquipmentRegionNum;
import com.yeejoin.amos.boot.module.tzs.api.mapper.EquipmentRegionNumMapper;
import com.yeejoin.amos.boot.module.tzs.api.service.IEquipmentRegionNumService;
import com.yeejoin.amos.boot.module.tzs.api.dto.EquipmentRegionNumDto;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
/**
* 设备区域数量中间表服务实现类
*
* @author system_generator
* @date 2021-11-09
*/
@Service
public class EquipmentRegionNumServiceImpl extends BaseService<EquipmentRegionNumDto,EquipmentRegionNum,EquipmentRegionNumMapper> implements IEquipmentRegionNumService {
/**
* 分页查询
*/
public Page<EquipmentRegionNumDto> queryForEquipmentRegionNumPage(Page<EquipmentRegionNumDto> page) {
return this.queryForPage(page, null, false);
}
/**
* 列表查询 示例
*/
public List<EquipmentRegionNumDto> queryForEquipmentRegionNumList() {
return this.queryForList("" , false);
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.tzs.biz.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.module.tzs.api.dto.AlertCalledFormDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.VoiceRecordFileDto;
import com.yeejoin.amos.boot.module.tzs.api.entity.VoiceRecordLog;
import com.yeejoin.amos.boot.module.tzs.api.mapper.VoiceRecordLogMapper;
import com.yeejoin.amos.boot.module.tzs.api.service.ICtiService;
import com.yeejoin.amos.boot.module.tzs.api.service.IVoiceRecordLogService;
import com.yeejoin.amos.boot.module.tzs.api.dto.VoiceRecordLogDto;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 通话记录记录表服务实现类
*
* @author system_generator
* @date 2021-11-09
*/
@Service
public class VoiceRecordLogServiceImpl extends BaseService<VoiceRecordLogDto,VoiceRecordLog,VoiceRecordLogMapper> implements IVoiceRecordLogService {
private final Logger logger = LogManager.getLogger(VoiceRecordFileServiceImpl.class);
@Autowired
ICtiService ctiService;
@Autowired
AlertCalledServiceImpl iAlertCalledService;
@Autowired
EmqKeeper emqKeeper;
public final static long ONE_Minute = 60 * 1000;
@Value("${mqtt.topic.cti.push}")
private String ctiMessage;
@Autowired
private VoiceRecordFileServiceImpl voiceRecordFileServiceImpl;
@Scheduled(fixedDelay=ONE_Minute)
public void fixedDelayJob(){
// 首先查找未完成 且失败次数少于5 的 记录
List<VoiceRecordLog> logList = this.list(new LambdaQueryWrapper<VoiceRecordLog>().eq(VoiceRecordLog::getIsDeal,false).lt(VoiceRecordLog::getDealTimes,5));
if(logList != null && logList.size() >0) {
logList.stream().forEach(l -> {
// 保存录音 修改状态 发送mqtt 通知
// 获取通话人信息
Integer dealTimes = 1;
if(l.getDealTimes() != null) {
dealTimes += l.getDealTimes();
}
l.setDealTimes(dealTimes);
JSONArray ctiInfos = ctiService.getCallInfo(l.getConnectId());
if(ctiInfos == null || ctiInfos.size() == 0) {
this.updateById(l);
return;
}
VoiceRecordFileDto model = new VoiceRecordFileDto();
JSONObject recordInfo = ctiInfos.getJSONObject(0);
model.setAlertId(l.getAlertId());
model.setTel(recordInfo.getString("telephone"));
Date telStartTime = null;
Date telEndTime = null;
try {
telStartTime = DateUtils.longStr2Date(recordInfo.getString("connectTime"));
telEndTime = DateUtils.longStr2Date(recordInfo.getString("hangupTime"));
} catch (Exception e) {
this.updateById(l);
return;
}
int times = recordInfo.getIntValue("times");
model.setTelTime(DateUtils.secondsToTimeStr(times));
model.setTelStartTime(telStartTime);
model.setTelEndTime(telEndTime);
if(1 == recordInfo.getInteger("callType")) {
model.setFileType("客户呼入");
} else if(2 == recordInfo.getInteger("callType")) {
model.setFileType("坐席呼出");
}
Map<String, String> downloadFile = ctiService.downLoadRecordFile(recordInfo.getString("connectionid"));
if(downloadFile.isEmpty()) {
this.updateById(l);
return;
}
for(Map.Entry<String,String> file : downloadFile.entrySet()) {
model.setFilePath(file.getKey());
}
AlertCalledFormDto alertDto = iAlertCalledService.selectAlertCalledByIdNoCache(model.getAlertId());
if(alertDto == null || alertDto.getAlertCalledDto() == null) {
this.updateById(l);
return;
}
model.setAlertStage(alertDto.getAlertCalledDto().getAlertStage());
model.setAlertStageCode(alertDto.getAlertCalledDto().getAlertStageCode());
model.setSourceId(-1l);
voiceRecordFileServiceImpl.createWithModel(model);
JSONObject json = new JSONObject();
json.put("alertId",model.getAlertId());
try {
emqKeeper.getMqttClient().publish(ctiMessage, json.toJSONString().getBytes(), 2, false);
} catch (MqttException e) {
logger.error("推送失败");
}
l.setIsDeal(true);
this.updateById(l);
});
}
System.out.println("执行通话记录任务");
}
}
\ No newline at end of file
...@@ -42,6 +42,51 @@ ...@@ -42,6 +42,51 @@
</sql> </sql>
</changeSet> </changeSet>
<changeSet author="kongfm" id="2021-11-09-02">
<preConditions onFail="MARK_RAN">
<tableExists tableName="tz_equipment_region_num"/>
</preConditions>
<comment>create tz_equipment_region_num</comment>
<sql>
CREATE TABLE `tz_equipment_region_num` (
`sequence_nbr` bigint(30) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`province_code` varchar(30) DEFAULT NULL COMMENT '省级code',
`city_code` varchar(30) NOT NULL COMMENT '市级code',
`district_code` varchar(30) DEFAULT NULL COMMENT '区级code',
`latitude` varchar(30) DEFAULT NULL COMMENT '纬度',
`longitude` varchar(30) DEFAULT NULL COMMENT '经度',
`num` bigint(20) DEFAULT NULL COMMENT '数量',
`rec_user_id` bigint(30) DEFAULT NULL COMMENT '更新人id',
`rec_user_name` varchar(100) DEFAULT NULL COMMENT '更新人名称',
`rec_date` datetime DEFAULT NULL COMMENT '更新时间',
`category_code` varchar(32) DEFAULT NULL COMMENT '设备类别编码',
`is_delete` bit(1) DEFAULT b'0' COMMENT '是否删除(0:未删除,1:已删除)',
PRIMARY KEY (`sequence_nbr`)
) ENGINE=InnoDB AUTO_INCREMENT=1458005239746166786 DEFAULT CHARSET=utf8mb4 COMMENT='设备区域数量中间表';
</sql>
</changeSet>
<changeSet author="kongfm" id="2021-11-09-03">
<preConditions onFail="MARK_RAN">
<tableExists tableName="tz_voice_record_log"/>
</preConditions>
<comment>create tz_voice_record_log</comment>
<sql>
CREATE TABLE `tz_voice_record_log` (
`sequence_nbr` bigint(30) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`alert_id` bigint(32) DEFAULT NULL COMMENT '警情id',
`connect_id` varchar(255) NOT NULL COMMENT 'cti通话id',
`is_deal` bit(1) DEFAULT NULL COMMENT '是否处理',
`deal_times` int(11) DEFAULT NULL COMMENT '处理次数',
`rec_user_id` bigint(30) DEFAULT NULL COMMENT '更新人id',
`rec_user_name` varchar(100) DEFAULT NULL COMMENT '更新人名称',
`rec_date` datetime DEFAULT NULL COMMENT '更新时间',
`is_delete` bit(1) DEFAULT b'0' COMMENT '是否删除(0:未删除,1:已删除)',
PRIMARY KEY (`sequence_nbr`)
) ENGINE=InnoDB AUTO_INCREMENT=1456192938655657986 DEFAULT CHARSET=utf8mb4 COMMENT='通话记录记录表';
</sql>
</changeSet>
</databaseChangeLog> </databaseChangeLog>
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