云音箱
parent
b96003d454
commit
4c0e199490
|
|
@ -0,0 +1,20 @@
|
|||
package com.njzscloud.supervisory.config;
|
||||
|
||||
import com.njzscloud.common.http.HttpClientDecorator;
|
||||
import com.njzscloud.supervisory.voicebox.service.VoiceboxApi;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
@EnableConfigurationProperties({CloudVoiceboxProperties.class})
|
||||
@ConditionalOnBean(HttpClientDecorator.class)
|
||||
public class CloudVoiceboxAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public VoiceboxApi voiceboxApi(HttpClientDecorator httpClientDecorator) {
|
||||
return httpClientDecorator.decorate(VoiceboxApi.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package com.njzscloud.supervisory.config;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
|
||||
/**
|
||||
* <a href="https://www.yuque.com/lingdutuandui/ugcpag/umbzsd#yG8IS">文档地址</a>
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@ConfigurationProperties("cloud-voicebox")
|
||||
public class CloudVoiceboxProperties {
|
||||
/**
|
||||
* 服务器地址:https://speaker.17laimai.cn
|
||||
*/
|
||||
private String baseUrl = "https://speaker.17laimai.cn";
|
||||
|
||||
/**
|
||||
* 接口秘钥
|
||||
*/
|
||||
private String token;
|
||||
|
||||
/**
|
||||
* 版本号:3
|
||||
*/
|
||||
private String version = "3";
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@ package com.njzscloud.supervisory.order.mapper;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.njzscloud.supervisory.biz.pojo.entity.BizCompanyEntity;
|
||||
import com.njzscloud.supervisory.biz.pojo.entity.BizTruckEntity;
|
||||
import com.njzscloud.supervisory.order.pojo.entity.OrderInfoEntity;
|
||||
import com.njzscloud.supervisory.order.pojo.result.OrderPagingResult;
|
||||
|
|
@ -33,4 +34,6 @@ public interface OrderInfoMapper extends BaseMapper<OrderInfoEntity> {
|
|||
PaymentContextResult paymentContext(@Param("orderId") Long orderId);
|
||||
|
||||
BizTruckEntity getTruckInfo(@Param("truckId") Long truckId);
|
||||
|
||||
BizCompanyEntity getTransInfo(@Param("transCompanyId") Long transCompanyId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,10 +22,7 @@ import com.njzscloud.common.security.util.SecurityUtil;
|
|||
import com.njzscloud.common.sn.support.SnUtil;
|
||||
import com.njzscloud.supervisory.biz.constant.AuditStatus;
|
||||
import com.njzscloud.supervisory.biz.constant.BizObj;
|
||||
import com.njzscloud.supervisory.biz.pojo.entity.BizAuditConfigEntity;
|
||||
import com.njzscloud.supervisory.biz.pojo.entity.BizTruckEntity;
|
||||
import com.njzscloud.supervisory.biz.pojo.entity.BizWarnEntity;
|
||||
import com.njzscloud.supervisory.biz.pojo.entity.TruckLocationTrackEntity;
|
||||
import com.njzscloud.supervisory.biz.pojo.entity.*;
|
||||
import com.njzscloud.supervisory.biz.service.BizAuditConfigService;
|
||||
import com.njzscloud.supervisory.biz.service.BizWarnService;
|
||||
import com.njzscloud.supervisory.biz.service.TruckLocationTrackService;
|
||||
|
|
@ -45,6 +42,7 @@ import com.njzscloud.supervisory.station.pojo.entity.StationManageEntity;
|
|||
import com.njzscloud.supervisory.station.service.StationManageService;
|
||||
import com.njzscloud.supervisory.sys.auth.pojo.result.MyResult;
|
||||
import com.njzscloud.supervisory.sys.stationletter.constant.WarnCategory;
|
||||
import com.njzscloud.supervisory.voicebox.service.CloudVoiceboxService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -85,6 +83,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
private final AppProperties appProperties;
|
||||
private final StationManageService stationManageService;
|
||||
private final PlatformTransactionManager transactionManager;
|
||||
private final CloudVoiceboxService cloudVoiceboxService;
|
||||
private final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(10, 100, 60, TimeUnit.SECONDS, new ArrayBlockingQueue<>(100), new ThreadPoolExecutor.CallerRunsPolicy());
|
||||
|
||||
private static void stopTuqiangTrack(String gpsId) {
|
||||
|
|
@ -118,8 +117,9 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
|
||||
Long orderGoodsId = orderGoodsService.add(goodsId);
|
||||
|
||||
String orderSn = SnUtil.next();
|
||||
OrderInfoEntity orderInfoEntity = BeanUtil.copyProperties(addOrderInfoParam, OrderInfoEntity.class)
|
||||
.setSn(SnUtil.next())
|
||||
.setSn(orderSn)
|
||||
.setCargoPlaceId(cargoPlaceId)
|
||||
.setUserId(userId)
|
||||
.setOrderStatus(orderStatus)
|
||||
|
|
@ -144,6 +144,12 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
this.updateById(new OrderInfoEntity().setId(addOrderInfoParam.getTargetOrderId())
|
||||
.setTargetOrderId(orderId));
|
||||
}
|
||||
if (transCompanyId != null) {
|
||||
BizCompanyEntity transCompanyEntity = baseMapper.getTransInfo(transCompanyId);
|
||||
cloudVoiceboxService.play(transCompanyEntity.getUserId(), "您有新的待分配订单,请及时处理");
|
||||
} else {
|
||||
cloudVoiceboxService.play(1L, "您有新的待分配订单,请及时处理");
|
||||
}
|
||||
}
|
||||
|
||||
public PaymentContextResult paymentContext(Long orderId) {
|
||||
|
|
@ -583,6 +589,11 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
oldOrder.setOrderStatus(OrderStatus.DaiPaiDan);
|
||||
}
|
||||
assignmentDriver(assignmentOrderParam, oldOrder);
|
||||
if (assignmented) {
|
||||
Long transCompanyId = assignmentOrderParam.getTransCompanyId();
|
||||
BizCompanyEntity transCompanyEntity = baseMapper.getTransInfo(transCompanyId);
|
||||
cloudVoiceboxService.play(transCompanyEntity.getUserId(), "您有新的待分配订单,请及时处理");
|
||||
}
|
||||
}
|
||||
|
||||
private void assignmentDriver(AssignmentOrderParam assignmentOrderParam, OrderInfoEntity orderInfo) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
package com.njzscloud.supervisory.voicebox.controller;
|
||||
|
||||
import com.njzscloud.common.core.utils.R;
|
||||
import com.njzscloud.common.mp.support.PageParam;
|
||||
import com.njzscloud.common.mp.support.PageResult;
|
||||
import com.njzscloud.supervisory.voicebox.pojo.entity.CloudVoiceboxEntity;
|
||||
import com.njzscloud.supervisory.voicebox.pojo.param.SearchCloudVoiceboxParam;
|
||||
import com.njzscloud.supervisory.voicebox.pojo.result.SearchCloudVoiceboxResult;
|
||||
import com.njzscloud.supervisory.voicebox.service.CloudVoiceboxService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 云音箱
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/cloud_voicebox")
|
||||
@RequiredArgsConstructor
|
||||
public class CloudVoiceboxController {
|
||||
|
||||
private final CloudVoiceboxService cloudVoiceboxService;
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*/
|
||||
@PostMapping("/add")
|
||||
public R<?> add(@RequestBody CloudVoiceboxEntity cloudVoiceboxEntity) {
|
||||
cloudVoiceboxService.add(cloudVoiceboxEntity);
|
||||
return R.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
@PostMapping("/modify")
|
||||
public R<?> modify(@RequestBody CloudVoiceboxEntity cloudVoiceboxEntity) {
|
||||
cloudVoiceboxService.modify(cloudVoiceboxEntity);
|
||||
return R.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
@PostMapping("/del")
|
||||
public R<?> del(@RequestBody List<Long> ids) {
|
||||
cloudVoiceboxService.del(ids);
|
||||
return R.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 详情
|
||||
*/
|
||||
@GetMapping("/detail")
|
||||
public R<CloudVoiceboxEntity> detail(@RequestParam Long id) {
|
||||
return R.success(cloudVoiceboxService.detail(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*/
|
||||
@GetMapping("/paging")
|
||||
public R<PageResult<SearchCloudVoiceboxResult>> paging(PageParam pageParam, SearchCloudVoiceboxParam searchCloudVoiceboxParam) {
|
||||
return R.success(cloudVoiceboxService.paging(pageParam, searchCloudVoiceboxParam));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
package com.njzscloud.supervisory.voicebox.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.njzscloud.supervisory.voicebox.pojo.entity.CloudVoiceboxEntity;
|
||||
import com.njzscloud.supervisory.voicebox.pojo.result.SearchCloudVoiceboxResult;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 云音箱
|
||||
*/
|
||||
@Mapper
|
||||
public interface CloudVoiceboxMapper extends BaseMapper<CloudVoiceboxEntity> {
|
||||
|
||||
IPage<SearchCloudVoiceboxResult> paging(Page<Object> page, @Param("ew") QueryWrapper<CloudVoiceboxEntity> ew);
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
package com.njzscloud.supervisory.voicebox.pojo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 云音箱
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@TableName("cloud_voicebox")
|
||||
public class CloudVoiceboxEntity {
|
||||
|
||||
/**
|
||||
* Id
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 设备序列号
|
||||
*/
|
||||
private String sn;
|
||||
|
||||
/**
|
||||
* 用户 Id
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
package com.njzscloud.supervisory.voicebox.pojo.param;
|
||||
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.njzscloud.supervisory.config.CloudVoiceboxProperties;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
public class NotifyParam {
|
||||
private String id;
|
||||
private String token;
|
||||
private String version;
|
||||
private String message;
|
||||
private String seq;
|
||||
private String trace_no;
|
||||
|
||||
public NotifyParam() {
|
||||
CloudVoiceboxProperties bean = SpringUtil.getBean(CloudVoiceboxProperties.class);
|
||||
token = bean.getToken();
|
||||
version = bean.getVersion();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
package com.njzscloud.supervisory.voicebox.pojo.param;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
public class SearchCloudVoiceboxParam {
|
||||
/**
|
||||
* 设备序列号
|
||||
*/
|
||||
private String sn;
|
||||
|
||||
private String nickname;
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
package com.njzscloud.supervisory.voicebox.pojo.result;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
public class NotifyResult {
|
||||
private Integer errcode;
|
||||
private String errmsg;
|
||||
private Object detail;
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package com.njzscloud.supervisory.voicebox.pojo.result;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
public class SearchCloudVoiceboxResult {
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 设备序列号
|
||||
*/
|
||||
private String sn;
|
||||
|
||||
/**
|
||||
* 用户 Id
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
private String username;
|
||||
|
||||
private String nickname;
|
||||
}
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
package com.njzscloud.supervisory.voicebox.service;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njzscloud.common.mp.support.PageParam;
|
||||
import com.njzscloud.common.mp.support.PageResult;
|
||||
import com.njzscloud.supervisory.voicebox.mapper.CloudVoiceboxMapper;
|
||||
import com.njzscloud.supervisory.voicebox.pojo.entity.CloudVoiceboxEntity;
|
||||
import com.njzscloud.supervisory.voicebox.pojo.param.NotifyParam;
|
||||
import com.njzscloud.supervisory.voicebox.pojo.param.SearchCloudVoiceboxParam;
|
||||
import com.njzscloud.supervisory.voicebox.pojo.result.NotifyResult;
|
||||
import com.njzscloud.supervisory.voicebox.pojo.result.SearchCloudVoiceboxResult;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 云音箱
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class CloudVoiceboxService extends ServiceImpl<CloudVoiceboxMapper, CloudVoiceboxEntity> implements IService<CloudVoiceboxEntity> {
|
||||
|
||||
@Autowired(required = false)
|
||||
private VoiceboxApi voiceboxApi;
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*/
|
||||
public void add(CloudVoiceboxEntity cloudVoiceboxEntity) {
|
||||
this.save(cloudVoiceboxEntity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
public void modify(CloudVoiceboxEntity cloudVoiceboxEntity) {
|
||||
this.updateById(cloudVoiceboxEntity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void del(List<Long> ids) {
|
||||
this.removeBatchByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 详情
|
||||
*/
|
||||
public CloudVoiceboxEntity detail(Long id) {
|
||||
return this.getById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*/
|
||||
public PageResult<SearchCloudVoiceboxResult> paging(PageParam pageParam, SearchCloudVoiceboxParam searchCloudVoiceboxParam) {
|
||||
String sn = searchCloudVoiceboxParam.getSn();
|
||||
String nickname = searchCloudVoiceboxParam.getNickname();
|
||||
return PageResult.of(baseMapper.paging(pageParam.toPage(), Wrappers.<CloudVoiceboxEntity>query()
|
||||
.eq(StrUtil.isNotBlank(sn), "a.sn", sn)
|
||||
.and(StrUtil.isNotBlank(nickname), it -> it.like("c.username", sn)
|
||||
.or().like("b.nickname", nickname))
|
||||
));
|
||||
}
|
||||
|
||||
public void play(Long userId, String message, Object... param) {
|
||||
if (voiceboxApi == null) {
|
||||
return;
|
||||
}
|
||||
CloudVoiceboxEntity cloudVoiceboxEntity = this.getOne(Wrappers.<CloudVoiceboxEntity>lambdaQuery().eq(CloudVoiceboxEntity::getUserId, userId));
|
||||
if (cloudVoiceboxEntity == null) {
|
||||
log.warn("当前用户未配置云音箱:{}", userId);
|
||||
return;
|
||||
}
|
||||
try {
|
||||
NotifyResult notify = voiceboxApi.notify(new NotifyParam()
|
||||
.setId(cloudVoiceboxEntity.getSn())
|
||||
.setMessage(StrUtil.format(message, param))
|
||||
);
|
||||
log.info("播放结果:{}", JSON.toJSONString(notify));
|
||||
} catch (Exception e) {
|
||||
log.error("云音箱播放失败", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
package com.njzscloud.supervisory.voicebox.service;
|
||||
|
||||
import com.njzscloud.common.http.annotation.PostEndpoint;
|
||||
import com.njzscloud.common.http.annotation.RemoteServer;
|
||||
import com.njzscloud.supervisory.voicebox.pojo.param.NotifyParam;
|
||||
import com.njzscloud.supervisory.voicebox.pojo.result.NotifyResult;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
@RemoteServer(value = "${cloud-voicebox.base-url}")
|
||||
public interface VoiceboxApi {
|
||||
@PostEndpoint("/notify.php")
|
||||
NotifyResult notify(@RequestBody NotifyParam notifyParam);
|
||||
}
|
||||
|
|
@ -238,4 +238,9 @@
|
|||
FROM biz_truck
|
||||
WHERE id = #{truckId}
|
||||
</select>
|
||||
<select id="getTransInfo" resultType="com.njzscloud.supervisory.biz.pojo.entity.BizCompanyEntity">
|
||||
SELECT *
|
||||
FROM biz_company
|
||||
WHERE id = #{transCompanyId}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
<?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.njzscloud.supervisory.voicebox.mapper.CloudVoiceboxMapper">
|
||||
|
||||
<select id="paging" resultType="com.njzscloud.supervisory.voicebox.pojo.result.SearchCloudVoiceboxResult">
|
||||
SELECT a.id, a.sn, b.nickname, c.username
|
||||
FROM cloud_voicebox a
|
||||
INNER JOIN sys_user b ON b.id = a.user_id AND b.deleted = 0
|
||||
INNER JOIN sys_user_account c ON c.user_id = a.user_id AND c.deleted = 0
|
||||
<if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
|
||||
${ew.customSqlSegment}
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
"avatar": "data:image/png;base64,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",
|
||||
"version": "4.9.4",
|
||||
"createdTime": "2023-4-13 11:53:52",
|
||||
"updatedTime": "2025-9-28 13:34:44",
|
||||
"updatedTime": "2025-10-10 18:09:04",
|
||||
"dbConns": [],
|
||||
"profile": {
|
||||
"default": {
|
||||
|
|
@ -18818,6 +18818,206 @@
|
|||
"correlations": [],
|
||||
"indexes": [],
|
||||
"type": "P"
|
||||
},
|
||||
{
|
||||
"id": "8FED849B-4811-4BA5-AFB5-DBB52BA92542",
|
||||
"env": {
|
||||
"base": {
|
||||
"nameSpace": "",
|
||||
"codeRoot": ""
|
||||
}
|
||||
},
|
||||
"defKey": "cloud_voicebox",
|
||||
"defName": "云音箱",
|
||||
"comment": "",
|
||||
"properties": {},
|
||||
"sysProps": {
|
||||
"nameTemplate": "{defKey}[{defName}]"
|
||||
},
|
||||
"notes": {},
|
||||
"headers": [
|
||||
{
|
||||
"refKey": "hideInGraph",
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "defKey",
|
||||
"freeze": false,
|
||||
"hideInGraph": false
|
||||
},
|
||||
{
|
||||
"refKey": "type",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "len",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "scale",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "defaultValue",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "defName",
|
||||
"freeze": false,
|
||||
"hideInGraph": false
|
||||
},
|
||||
{
|
||||
"refKey": "comment",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "notNull",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "primaryKey",
|
||||
"freeze": false,
|
||||
"hideInGraph": false
|
||||
},
|
||||
{
|
||||
"refKey": "autoIncrement",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "refDict",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "domain",
|
||||
"freeze": false,
|
||||
"hideInGraph": false
|
||||
},
|
||||
{
|
||||
"refKey": "isStandard",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "uiHint",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "extProps",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr1",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr2",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr3",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr4",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr5",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr6",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr7",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr8",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
},
|
||||
{
|
||||
"refKey": "attr9",
|
||||
"freeze": false,
|
||||
"hideInGraph": true
|
||||
}
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
"defKey": "id",
|
||||
"defName": "Id",
|
||||
"comment": "",
|
||||
"type": "BIGINT",
|
||||
"len": "",
|
||||
"scale": "",
|
||||
"primaryKey": true,
|
||||
"notNull": true,
|
||||
"autoIncrement": false,
|
||||
"defaultValue": "",
|
||||
"hideInGraph": false,
|
||||
"refDict": "",
|
||||
"extProps": {},
|
||||
"domain": "",
|
||||
"id": "EEBD7FE9-AFCF-4DE9-9266-4BF65BA33036",
|
||||
"baseType": "9B6B9E10-DB11-4409-878B-5868A19CD9B0"
|
||||
},
|
||||
{
|
||||
"defKey": "sn",
|
||||
"defName": "设备序列号",
|
||||
"comment": "",
|
||||
"type": "VARCHAR",
|
||||
"len": 255,
|
||||
"scale": "",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoIncrement": false,
|
||||
"defaultValue": "",
|
||||
"hideInGraph": false,
|
||||
"refDict": "",
|
||||
"baseType": "AA07828C-4FCB-4EDA-9B51-53A3F264F231",
|
||||
"extProps": {},
|
||||
"id": "1A1B3ACF-9EC9-43C0-8977-8844AC4FFF74"
|
||||
},
|
||||
{
|
||||
"defKey": "user_id",
|
||||
"defName": "用户 Id",
|
||||
"comment": "",
|
||||
"type": "BIGINT",
|
||||
"len": "",
|
||||
"scale": "",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoIncrement": false,
|
||||
"defaultValue": "",
|
||||
"hideInGraph": false,
|
||||
"refDict": "",
|
||||
"baseType": "9B6B9E10-DB11-4409-878B-5868A19CD9B0",
|
||||
"extProps": {},
|
||||
"id": "B2A40BF6-3A62-4607-AA5C-E9F19BD2266A"
|
||||
}
|
||||
],
|
||||
"correlations": [],
|
||||
"indexes": [],
|
||||
"type": "P"
|
||||
}
|
||||
],
|
||||
"views": [],
|
||||
|
|
|
|||
Loading…
Reference in New Issue