Commit 337f46a0 by 高晓磊

散户预警功能

parent d5568749
......@@ -7,6 +7,8 @@ import com.xyst.dinas.biz.constant.RetailInfoConstant;
import com.xyst.dinas.biz.dao.RetailInfoDao;
import com.xyst.dinas.biz.internal.dao.RetailInfoDaoImpl;
import com.xyst.dinas.biz.internal.service.RetailInfoServiceImpl;
import com.xyst.dinas.biz.processor.RetailInfoBuyAmountWarningCalculator;
import com.xyst.dinas.biz.processor.RetailInfoBuyCountWarningCalculator;
import com.xyst.dinas.biz.service.RetailInfoService;
import com.xyst.dinas.biz.web.RetailInfoController;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -44,5 +46,14 @@ public class RetailInfoConfiguration {
new ClassPathResource("/com/xyst/dinas/biz/datamodel/RetailInfo.jmx", KClass.class));
}
@Bean("com.xyst.dinas.biz.processor.RetailInfoBuyCountWarningCalculator")
public RetailInfoBuyCountWarningCalculator retailInfoBuyCountWarningCalculator () {
return new RetailInfoBuyCountWarningCalculator();
}
@Bean("com.xyst.dinas.biz.processor.RetailInfoBuyAmountWarningCalculator")
public RetailInfoBuyAmountWarningCalculator retailInfoBuyAmountWarningCalculator () {
return new RetailInfoBuyAmountWarningCalculator();
}
}
......@@ -5,5 +5,35 @@ public interface RetailInfoConstant {
* 实体名
*/
String ENTITY = "com.xyst.dinas.biz.datamodel.RetailInfo";
/**
* 实体名
*/
String DETAIL_ENTITY = "com.xyst.dinas.biz.datamodel.RetailInfoAssociatedDinasTypeDetail";
/**
* 散客购买预警类型
*/
public static final String RETAIL_INFO_WARN_BILL_TYPE = "散客购买";
/**
* 散客购买预警指标-购买次数
*/
public static final String RETAIL_INFO_WARN_BUY_COUNT = "购买次数";
/**
* 散客购买预警指标-购买重量
*/
public static final String RETAIL_INFO_WARN_BUY_AMOUNT = "购买重量";
/**
* 购买次数预警计算器
*/
public static final String RETAIL_INFO_BUY_COUNT_WARNING_CALCULATOR = "com.xyst.dinas.biz.processor.RetailInfoBuyCountWarningCalculator";
/**
* 购买重量(总量)预警计算器
*/
public static final String RETAIL_INFO_BUY_AMOUNT_WARNING_CALCULATOR = "com.xyst.dinas.biz.processor.RetailInfoBuyAmountWarningCalculator";
}
......@@ -4,6 +4,7 @@ import com.beecode.bap.attachment.common.Page;
import com.beecode.bcp.type.KObject;
import com.beecode.inz.basis.dao.BaseDao;
import java.math.BigDecimal;
import java.util.List;
import java.util.UUID;
......@@ -23,6 +24,11 @@ public interface RetailInfoDao extends BaseDao {
List<KObject> getByName(String name, UUID id);
void modify(KObject kobject);
void modify(KObject kobject, KObject oldKObject);
void deleteDetailByMasterId(UUID uuid);
Long selectBuyCountByIdCard(String idCard, UUID uuid);
BigDecimal selectBuyAmountByIdCard(String idCard, UUID fromString);
}
......@@ -2,12 +2,25 @@ package com.xyst.dinas.biz.internal.service;
import com.beecode.bap.attachment.common.Page;
import com.beecode.bcp.type.KObject;
import com.beecode.bcp.type.json.JSONObjectUtils;
import com.beecode.inz.common.BaseConstants;
import com.xyst.dinas.biz.constant.RetailInfoConstant;
import com.xyst.dinas.biz.dao.DinasTypeDao;
import com.xyst.dinas.biz.dao.RetailInfoDao;
import com.xyst.dinas.biz.processor.RetailInfoBuyAmountWarningCalculate;
import com.xyst.dinas.biz.processor.RetailInfoBuyCountWarningCalculate;
import com.xyst.dinas.biz.service.RetailInfoService;
import com.xyst.dinas.biz.warn.BaseBusinessWarn;
import com.xyst.dinas.biz.warn.WarnSetting;
import com.xyst.dinas.biz.warn.WarnSettingEntity;
import com.xyst.dinas.biz.warn.WarnTargetTypeEnum;
import com.xyst.dinas.biz.warn.service.WarningService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
......@@ -17,6 +30,11 @@ public class RetailInfoServiceImpl implements RetailInfoService {
@Autowired
private RetailInfoDao retailInfoDao;
@Autowired
private DinasTypeDao dinasTypeDao;
@Autowired
private WarningService warningService;
@Override
public Page<KObject> queryByPaging(Page<KObject> page, Integer retailInfoStatus) throws Exception {
if(page.getPageNo()==0||page.getPageSize()==0) {
......@@ -25,13 +43,88 @@ public class RetailInfoServiceImpl implements RetailInfoService {
return retailInfoDao.listRetailInfoInfoPaging(page,retailInfoStatus);
}
@Override
public List<KObject> listRetailInfoInfoByRegionalCompany(UUID regionalCompanyId) throws Exception {
public List<KObject> listRetailInfoInfoByRegionalCompany(UUID regionalCompanyId) {
return retailInfoDao.listRetailInfoInfoByRegionalCompany(regionalCompanyId);
}
@Override
public UUID addRetailInfo(KObject kObject) {
return retailInfoDao.create(kObject);
public UUID addRetailInfo(KObject newKobject) {
UUID uuid = retailInfoDao.create(newKobject);
setDetail(newKobject, uuid);
//新增散户信息触发预警设置和预警记录
String newRetailInfoName = newKobject.getString("retailInfoName");
String newIdCard = newKobject.getString("idCard");
UUID newStation = newKobject.get("station").getUuid(BaseConstants.ID);
setWarnInfo(newKobject, uuid, newRetailInfoName, newIdCard, newStation);
return uuid;
}
private void setWarnInfo(KObject newKobject, UUID uuid, String retailInfoName, String idCard, UUID station) {
//购买次数预警
//查询场站是否有对应的预警模板
WarnSetting templateCount = warningService.queryOneWarnSettingsByMemoAndType(RetailInfoConstant.RETAIL_INFO_WARN_BUY_COUNT, station.toString(),"template");
if(templateCount==null){
templateCount = setWarningSettingEntity(newKobject, UUID.randomUUID(), RetailInfoConstant.RETAIL_INFO_WARN_BUY_COUNT, RetailInfoConstant.RETAIL_INFO_BUY_COUNT_WARNING_CALCULATOR,"0",true,false);
}
WarnSetting warnSetting = warningService.queryOneWarnSettingsByMemoAndType(RetailInfoConstant.RETAIL_INFO_WARN_BUY_COUNT, idCard, station.toString());
if (warnSetting != null) {
BaseBusinessWarn warn = warningService.createWarn(warnSetting.getSettingId());
warn.setWarningCalculate(new RetailInfoBuyCountWarningCalculate(retailInfoName, idCard, station, selectBuyCountByIdCard(idCard, station)));
warn.warn(false);
} else {
setWarningSettingEntity(newKobject, uuid, RetailInfoConstant.RETAIL_INFO_WARN_BUY_COUNT, RetailInfoConstant.RETAIL_INFO_BUY_COUNT_WARNING_CALCULATOR,templateCount.getMax(),false,true);
}
//购买重量预警
//查询场站是否有对应的预警模板
templateCount = warningService.queryOneWarnSettingsByMemoAndType(RetailInfoConstant.RETAIL_INFO_WARN_BUY_AMOUNT, station.toString(),"template");
if(templateCount==null){
templateCount = setWarningSettingEntity(newKobject, UUID.randomUUID(), RetailInfoConstant.RETAIL_INFO_WARN_BUY_AMOUNT, RetailInfoConstant.RETAIL_INFO_BUY_AMOUNT_WARNING_CALCULATOR,"0",true,false);
}
warnSetting = warningService.queryOneWarnSettingsByMemoAndType(RetailInfoConstant.RETAIL_INFO_WARN_BUY_AMOUNT, idCard, station.toString());
if (warnSetting != null) {
BaseBusinessWarn warn = warningService.createWarn(warnSetting.getSettingId());
warn.setWarningCalculate(new RetailInfoBuyAmountWarningCalculate(retailInfoName, idCard, selectBuyAmountByIdCard(idCard, station).doubleValue()));
warn.warn(false);
} else {
setWarningSettingEntity(newKobject, uuid, RetailInfoConstant.RETAIL_INFO_WARN_BUY_AMOUNT, RetailInfoConstant.RETAIL_INFO_BUY_AMOUNT_WARNING_CALCULATOR,templateCount.getMax(),false,true);
}
}
private WarnSettingEntity setWarningSettingEntity(KObject kObject, UUID uuid,String target,String warnCalculator,String max,boolean isTemplate,boolean isOpen) {
WarnSettingEntity warnSettingEntity = new WarnSettingEntity();
warnSettingEntity.setBillType(RetailInfoConstant.RETAIL_INFO_WARN_BILL_TYPE);
warnSettingEntity.setBillId(uuid);
warnSettingEntity.setTarget(target);
warnSettingEntity.setMax(max);
warnSettingEntity.setTargetType(WarnTargetTypeEnum.INT_TYPE.name());
warnSettingEntity.setOpen(isOpen);
HashMap<String, String> stringStringHashMap = new HashMap<>();
stringStringHashMap.put("stationId", kObject.get("station").getString(BaseConstants.ID));
if(isTemplate){
stringStringHashMap.put("template", "template");
}else{
stringStringHashMap.put("idCard", kObject.getString("idCard"));
stringStringHashMap.put("retailInfoName", kObject.getString("retailInfoName"));
}
warnSettingEntity.setMemo(JSONObjectUtils.toJson(stringStringHashMap).toString());
warnSettingEntity.setWarnCalculator(warnCalculator);
warningService.insertWarnSettingToIsNotice(warnSettingEntity,false);
return warnSettingEntity;
}
private void setDetail(KObject kObject, UUID uuid) {
KObject kObject1 = kObject.get("dinasTypeDetails");
List<KObject> kObjects = kObject1.toList();
for (KObject object : kObjects) {
object.set("master",retailInfoDao.load(uuid));
object.set("dinasType",dinasTypeDao.load(object.get("dinasType").getUuid(BaseConstants.ID)));
object.set(BaseConstants.ID,UUID.randomUUID());
retailInfoDao.saveOrUpdate(object);
}
}
@Override
......@@ -54,9 +147,27 @@ public class RetailInfoServiceImpl implements RetailInfoService {
}
@Override
public void update(KObject kobject) {
public void update(KObject newKobject) {
UUID uuid = newKobject.getUuid(BaseConstants.ID);
KObject oldKObject = retailInfoDao.load(uuid);
retailInfoDao.modify(newKobject,oldKObject);
retailInfoDao.deleteDetailByMasterId(uuid);
setDetail(newKobject, uuid);
//新增散户信息触发预警设置和预警记录
String newRetailInfoName = newKobject.getString("retailInfoName");
String newIdCard = newKobject.getString("idCard");
UUID newStation = newKobject.get("station").getUuid(BaseConstants.ID);
String oldRetailInfoName = oldKObject.getString("retailInfoName");
String oldIdCard = oldKObject.getString("idCard");
UUID oldStation = oldKObject.get("station").getUuid(BaseConstants.ID);
retailInfoDao.modify(kobject);
//购买预警
setWarnInfo(newKobject, uuid, newRetailInfoName, newIdCard, newStation);
if(!oldIdCard.equals(newIdCard)){
//旧的购买预警
setWarnInfo(oldKObject, uuid, oldRetailInfoName, oldIdCard, oldStation);
}
}
@Override
......@@ -64,5 +175,16 @@ public class RetailInfoServiceImpl implements RetailInfoService {
retailInfoDao.deleteById(id);
}
@Override
public Long selectBuyCountByIdCard(String idCard, UUID uuid) {
return retailInfoDao.selectBuyCountByIdCard(idCard,uuid);
}
@Override
public BigDecimal selectBuyAmountByIdCard(String idCard, UUID fromString) {
return retailInfoDao.selectBuyAmountByIdCard(idCard,fromString);
}
}
package com.xyst.dinas.biz.processor;
import com.xyst.dinas.biz.warn.IWarningCalculator;
import com.xyst.dinas.biz.warn.WarnSetting;
import java.util.UUID;
/**
* retail散客购买重量(总量)预警
*
* @author
* @date 2021年4月1日
*/
public class RetailInfoBuyAmountWarningCalculate implements IWarningCalculator{
private String warnMessage;
private final String retailInfoName;
private final String idCard;
private final double buyAmount;
/**
* 散客购买次数预警
* @param buyAmount 购买次数
*/
public RetailInfoBuyAmountWarningCalculate(String retailInfoName, String idCard, double buyAmount) {
this.retailInfoName = retailInfoName;
this.idCard = idCard;
this.buyAmount = buyAmount;
}
@Override
public boolean isWarning(WarnSetting warnSetting) {
String max = warnSetting.getMax();
String target = warnSetting.getTarget();
if(max==null || max.trim().length()==0) {
return false;
}
//业务数据与设置的阀值做比较,计算是否预警
if (buyAmount >= Integer.parseInt(max)) {
warnMessage = "["+target+"]"+retailInfoName+":"+idCard+"购买总量:"+buyAmount+",超出预警值"+max;
return true;
}
return false;
}
@Override
public String warnMessage() {
return warnMessage;
}
@Override
public String getActualValue() {
return buyAmount+"";
}
}
package com.xyst.dinas.biz.processor;
import com.beecode.bcp.type.json.JSONObjectUtils;
import com.xyst.dinas.biz.service.RetailInfoService;
import com.xyst.dinas.biz.warn.IWarningCalculator;
import com.xyst.dinas.biz.warn.WarnSetting;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Map;
import java.util.UUID;
/**
* retail散客购买重量预警
*
* @author
* @date 2021年4月23日
*/
public class RetailInfoBuyAmountWarningCalculator implements IWarningCalculator{
/**重量
*
*/
private double buyAmount;
private String message;
@Autowired
private RetailInfoService retailInfoService;
@Override
public boolean isWarning(WarnSetting warnSetting) {
String max = warnSetting.getMax();
String target = warnSetting.getTarget();
if(max==null || max.trim().length()==0) {
return false;
}
Map<String, Object> stringObjectMap = JSONObjectUtils.toMap(warnSetting.getMemo());
if(!stringObjectMap.containsKey("idCard")){
return false;
}
Object idCard = stringObjectMap.get("idCard");
Object stationId = stringObjectMap.get("stationId");
Object retailInfoName = stringObjectMap.get("retailInfoName");
this.buyAmount = retailInfoService.selectBuyAmountByIdCard(idCard.toString(),UUID.fromString(stationId.toString())).doubleValue();
//业务数据与设置的阀值做比较,计算是否预警
double i = Double.parseDouble(max);
if (i>0 && buyAmount >= i) {
message = "["+target+"]"+retailInfoName+":"+idCard+",购买总量:"+buyAmount+",超出预警值"+max;
return true;
}
return false;
}
/**
* 预警消息
*
* @return
*/
@Override
public String warnMessage() {
return this.message;
}
/**
* 实际值
*
* @return
*/
@Override
public String getActualValue() {
return this.buyAmount+"";
}
}
package com.xyst.dinas.biz.processor;
import com.xyst.dinas.biz.warn.IWarningCalculator;
import com.xyst.dinas.biz.warn.WarnSetting;
import java.util.UUID;
/**
* retail散客购买次数预警
*
* @author
* @date 2021年4月1日
*/
public class RetailInfoBuyCountWarningCalculate implements IWarningCalculator{
private String warnMessage;
private final String retailInfoName;
private final String idCard;
private final long buyCount;
/**
* 散客购买次数预警
* @param buyCount 购买次数
*/
public RetailInfoBuyCountWarningCalculate(String retailInfoName, String idCard, UUID stationId, Long buyCount) {
this.retailInfoName = retailInfoName;
this.idCard = idCard;
this.buyCount = buyCount;
}
@Override
public boolean isWarning(WarnSetting warnSetting) {
String max = warnSetting.getMax();
String target = warnSetting.getTarget();
if(max==null || max.trim().length()==0) {
return false;
}
//业务数据与设置的阀值做比较,计算是否预警
int i = (int)Double.parseDouble(max);
if (i>0&&buyCount >= i ) {
warnMessage = "["+target+"]"+retailInfoName+":"+idCard+"购买次数"+buyCount+",超出预警值"+max;
return true;
}
return false;
}
@Override
public String warnMessage() {
return warnMessage;
}
@Override
public String getActualValue() {
return buyCount+"";
}
}
package com.xyst.dinas.biz.processor;
import com.beecode.bcp.type.json.JSONObjectUtils;
import com.xyst.dinas.biz.service.RetailInfoService;
import com.xyst.dinas.biz.warn.IWarningCalculator;
import com.xyst.dinas.biz.warn.WarnSetting;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Map;
import java.util.UUID;
/**
* retail散客购买次数预警
*
* @author
* @date 2021年4月23日
*/
public class RetailInfoBuyCountWarningCalculator implements IWarningCalculator{
/**
* 购买次数
*/
private long buyCount;
private String message;
@Autowired
private RetailInfoService retailInfoService;
@Override
public boolean isWarning(WarnSetting warnSetting) {
String max = warnSetting.getMax();
String target = warnSetting.getTarget();
if(max==null || max.trim().length()==0) {
return false;
}
Map<String, Object> stringObjectMap = JSONObjectUtils.toMap(warnSetting.getMemo());
if(!stringObjectMap.containsKey("idCard")){
return false;
}
Object idCard = stringObjectMap.get("idCard");
Object stationId = stringObjectMap.get("stationId");
Object retailInfoName = stringObjectMap.get("retailInfoName");
this.buyCount = retailInfoService.selectBuyCountByIdCard(idCard.toString(),UUID.fromString(stationId.toString()));
//业务数据与设置的阀值做比较,计算是否预警
int i = (int)Double.parseDouble(max);
if (i>0 && buyCount >= i) {
message = "["+target+"]"+retailInfoName+":"+idCard+"购买次数"+buyCount+",超出预警值"+max;
return true;
}
return false;
}
/**
* 预警消息
*
* @return
*/
@Override
public String warnMessage() {
return this.message;
}
/**
* 实际值
*
* @return
*/
@Override
public String getActualValue() {
return this.buyCount+"";
}
}
......@@ -3,6 +3,7 @@ package com.xyst.dinas.biz.service;
import com.beecode.bap.attachment.common.Page;
import com.beecode.bcp.type.KObject;
import java.math.BigDecimal;
import java.util.List;
import java.util.UUID;
......@@ -23,4 +24,8 @@ public interface RetailInfoService {
void update(KObject kobject);
void deleteById(UUID id);
Long selectBuyCountByIdCard(String toString, UUID uuid);
BigDecimal selectBuyAmountByIdCard(String idCard, UUID fromString);
}
......@@ -293,4 +293,25 @@ public class WarnSettingDao {
detachedCriteria.add(dis);
}
}
public WarnSetting queryOneWarnSettingsByMemoAndType(String retailInfoWarnBuyCount, String ...memo) {
List<?> byCriteria = queryWarnSettingsListByMemoAndType(retailInfoWarnBuyCount, memo);
if(!byCriteria.isEmpty()){
Object o = byCriteria.get(0);
return warnSettingToEntity((KObject) o);
}
return null;
}
public List<?> queryWarnSettingsListByMemoAndType(String retailInfoWarnBuyCount, String... memo) {
KClass bean = Amino.getStaticMetadataContext().getBean(WarnSettingConstant.ENTITY_WARNSETTING, KClass.class);
DetachedCriteria detachedCriteria = DetachedCriteria.forEntityName(bean.getName());
for (String s : memo) {
detachedCriteria.add(Restrictions.like(WarnSettingConstant.memo,s,MatchMode.ANYWHERE));
}
detachedCriteria.add(Restrictions.eq(WarnSettingConstant.target, retailInfoWarnBuyCount));
return template.findByCriteria(detachedCriteria);
}
}
......@@ -45,6 +45,8 @@ public interface WarningService {
*/
KObject queryWarnSettingById(UUID id);
UUID insertWarnSettingToIsNotice(WarnSetting warnSetting, boolean isNotice);
/**
* 更新预警设置
* @param warnSetting
......@@ -98,4 +100,8 @@ public interface WarningService {
HashMap<String, Object> warnRecodeGroupInfo(List<UUID> regionalCompanyIds, List<String> targets);
ArrayList<String> getExistedWarningSettingPersonnelByBillType(UUID id);
WarnSetting queryOneWarnSettingsByMemoAndType(String target, String ... memo);
void updateRetailInfoWarnSettingAllByTypeAndMemo(String target, String toString, Double max);
}
......@@ -9,6 +9,8 @@ import com.beecode.inz.basis.team.pojo.ResponseObj;
import com.beecode.nlib.utils.StringUtils;
import com.xyst.dinas.biz.constant.RetailInfoConstant;
import com.xyst.dinas.biz.service.RetailInfoService;
import com.xyst.dinas.biz.warn.WarnSetting;
import com.xyst.dinas.biz.warn.service.WarningService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -28,6 +30,8 @@ public class RetailInfoController {
@Autowired
private RetailInfoService retailInfoService;
@Autowired
private WarningService warningService;
@RequestMapping(value = "list/page", method = RequestMethod.GET)
public ResponseObj getListPage(
......@@ -122,4 +126,38 @@ public class RetailInfoController {
return ResponseObj.success();
}
/**
* 修改预警设置
* @param target
* @return
*/
@PutMapping("/updateWarnSetting")
public ResponseObj updateWarnSetting(@RequestParam("target") String target,@RequestParam(value = "max") String max,@RequestParam(value = "stationId") UUID stationId){
if(StringUtils.isEmpty(target)){
return ResponseObj.error(400,"指标错误");
}
warningService.updateRetailInfoWarnSettingAllByTypeAndMemo(target,stationId.toString(),Double.parseDouble(max));
return ResponseObj.success();
}
/**
* 获取预警设置模板
* @param target
* @return
*/
@GetMapping("/getWarnSetting")
public ResponseObj updateWarnSetting(@RequestParam("target") String target,@RequestParam(value = "stationId",required = false) UUID stationId){
if(StringUtils.isEmpty(target)){
return ResponseObj.error(400,"指标错误");
}
WarnSetting warnSetting = warningService.queryOneWarnSettingsByMemoAndType(target, stationId.toString(), "template");
return ResponseObj.success("查询成功",warnSetting);
}
}
\ No newline at end of file
<model>
<header>
<type>inz.query.Query</type>
<package>com.xyst.dinas.biz.query</package>
<name>RetailInfoWarningExe</name>
<title>散户预警记录</title>
<tags></tags>
<description></description>
</header>
<content>
<customQuery id='a68b7ed6-e37c-447b-8f70-342afa606607'>
<kclass>com.xyst.dinas.biz.datamodel.WarningExe</kclass>
<innerScene title='全部'>
<id>8376206c-b50c-4c52-bb5a-e0c9f6696056</id>
<javaImplement>com.beecode.inz.common.scene.CommonAllScene</javaImplement>
<defaultExecute></defaultExecute>
<hide></hide>
</innerScene>
<innerScene title='已废弃'>
<id>7840dd0d-0c7b-413d-85c7-89e4a4a7957f</id>
<javaImplement>com.beecode.inz.common.scene.DefaultDiscardScene</javaImplement>
<defaultExecute></defaultExecute>
<hide></hide>
</innerScene>
<field title='id'>
<name>id</name>
<type>uuid</type>
<ref>
<type></type>
<name></name>
</ref>
<description></description>
</field>
<field title='开始时间'>
<name>startTime</name>
<type>datetime</type>
<ref>
<type></type>
<name></name>
</ref>
<description></description>
</field>
<field title='结束时间'>
<name>endTime</name>
<type>datetime</type>
<ref>
<type></type>
<name></name>
</ref>
<description></description>
</field>
<field title='业务id'>
<name>billId</name>
<type>uuid</type>
<ref>
<type></type>
<name></name>
</ref>
<description></description>
</field>
<field title='预警指标'>
<name>target</name>
<type>string</type>
<ref>
<type></type>
<name></name>
</ref>
<description></description>
</field>
<field title='预警消息'>
<name>message</name>
<type>string</type>
<ref>
<type></type>
<name></name>
</ref>
<description></description>
</field>
<field title='备注'>
<name>memo</name>
<type>string</type>
<ref>
<type></type>
<name></name>
</ref>
<description></description>
</field>
<field title='预警值'>
<name>max</name>
<type>string</type>
<ref>
<type></type>
<name></name>
</ref>
<description></description>
</field>
<field title='实际值'>
<name>actualValue</name>
<type>string</type>
<ref>
<type></type>
<name></name>
</ref>
<description></description>
</field>
<field title='创建时间'>
<name>createTime</name>
<type>datetime</type>
<ref>
<type></type>
<name></name>
</ref>
<description></description>
</field>
<field title='修改时间'>
<name>modifyTime</name>
<type>datetime</type>
<ref>
<type></type>
<name></name>
</ref>
<description></description>
</field>
</customQuery>
</content>
</model>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/inz-query">
<specification>1.0</specification>
<id>a68b7ed6-e37c-447b-8f70-342afa606607</id>
<name>com.xyst.dinas.biz.query.RetailInfoWarningExe</name>
<title>散户预警记录</title>
<define>inz.query.Query</define>
<define-version>1.0</define-version>
<dependency>com.xyst.dinas.biz.datamodel.WarningExe</dependency>
<content>
<m:query>
<m:type>com.xyst.dinas.biz.datamodel.WarningExe</m:type>
<m:dataProcessor></m:dataProcessor>
<m:authorityItem></m:authorityItem>
<m:innerScenes>
<m:innerScene>
<m:id>8376206c-b50c-4c52-bb5a-e0c9f6696056</m:id>
<m:title>全部</m:title>
<m:javaImplement>com.beecode.inz.common.scene.CommonAllScene</m:javaImplement>
<m:defaultExecute></m:defaultExecute>
<m:hide></m:hide>
</m:innerScene>
<m:innerScene>
<m:id>7840dd0d-0c7b-413d-85c7-89e4a4a7957f</m:id>
<m:title>已废弃</m:title>
<m:javaImplement>com.beecode.inz.common.scene.DefaultDiscardScene</m:javaImplement>
<m:defaultExecute></m:defaultExecute>
<m:hide></m:hide>
</m:innerScene>
</m:innerScenes>
<m:fields>
<m:field>
<m:name>id</m:name>
<m:title>id</m:title>
<m:type>uuid</m:type>
<m:ref>
<m:name></m:name>
<m:type></m:type>
</m:ref>
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>startTime</m:name>
<m:title>开始时间</m:title>
<m:type>datetime</m:type>
<m:ref>
<m:name></m:name>
<m:type></m:type>
</m:ref>
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>endTime</m:name>
<m:title>结束时间</m:title>
<m:type>datetime</m:type>
<m:ref>
<m:name></m:name>
<m:type></m:type>
</m:ref>
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>billId</m:name>
<m:title>业务id</m:title>
<m:type>uuid</m:type>
<m:ref>
<m:name></m:name>
<m:type></m:type>
</m:ref>
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>target</m:name>
<m:title>预警指标</m:title>
<m:type>string</m:type>
<m:ref>
<m:name></m:name>
<m:type></m:type>
</m:ref>
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>memo</m:name>
<m:title>备注</m:title>
<m:type>string</m:type>
<m:ref>
<m:name></m:name>
<m:type></m:type>
</m:ref>
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>max</m:name>
<m:title>预警值</m:title>
<m:type>string</m:type>
<m:ref>
<m:name></m:name>
<m:type></m:type>
</m:ref>
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>actualValue</m:name>
<m:title>实际值</m:title>
<m:type>string</m:type>
<m:ref>
<m:name></m:name>
<m:type></m:type>
</m:ref>
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>message</m:name>
<m:title>预警消息</m:title>
<m:type>string</m:type>
<m:ref>
<m:name></m:name>
<m:type></m:type>
</m:ref>
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>createTime</m:name>
<m:title>创建时间</m:title>
<m:type>datetime</m:type>
<m:ref>
<m:name></m:name>
<m:type></m:type>
</m:ref>
<m:desc></m:desc>
</m:field>
<m:field>
<m:name>modifyTime</m:name>
<m:title>修改时间</m:title>
<m:type>datetime</m:type>
<m:ref>
<m:name></m:name>
<m:type></m:type>
</m:ref>
<m:desc></m:desc>
</m:field>
</m:fields>
</m:query>
</content>
</metadata>
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