Commit b415eab0 by 王衍超

新增预警功能;

parent 6205299f
......@@ -60,7 +60,8 @@ public class MobileMessageProducerImpl implements MessageProducer {
UUID userId = UUID.fromString(message.getPartId());
logger.debug("userId为:{}", userId);
KObject part = null;
if(message.getIsToCustomer()){
Boolean isToCustomer = message.getIsToCustomer();
if(isToCustomer!=null && isToCustomer){
part = customerTemporaryDao.load(userId);//获取customer
}else{
part = staffService.getByUserId(userId);
......@@ -76,7 +77,7 @@ public class MobileMessageProducerImpl implements MessageProducer {
// System.out.println(registrationId);
JSONObject obj = new JSONObject();
obj.put(DEVICE_ID, registrationId);
if(message.getIsToCustomer()){
if(isToCustomer!=null && isToCustomer){
obj.put(UESR_NAME, part.getString("username"));
}else{
obj.put(UESR_NAME, part.getString("name"));
......
package com.xyst.dinas.biz.config;
import com.xyst.dinas.biz.warn.WarnSettingDao;
/**
* 预警配置
*
* @author Jackpot
* @date 2021年4月1日
*/
import com.xyst.dinas.biz.warn.dao.WarnSettingDao;
import com.xyst.dinas.biz.warn.service.IWarningSettingService;
import com.xyst.dinas.biz.warn.service.WarningSettingServiceImpl;
import org.springframework.context.annotation.Bean;
......@@ -18,6 +14,12 @@ public class WarningConfiguration {
}
@Bean
public IWarningSettingService warningSettingService() {
return new WarningSettingServiceImpl();
}
}
package com.xyst.dinas.biz.warn;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import com.beecode.amino.core.Amino;
import com.beecode.bap.staff.Staff;
import com.beecode.bap.staff.service.StaffService;
import com.beecode.bcp.type.KObject;
import com.beecode.bcp.type.json.JSONObjectUtils;
import com.beecode.inz.message.CommonConstants;
import com.beecode.inz.message.RemPartRelationConstants;
import com.beecode.inz.message.enumeration.ParterType;
import com.beecode.inz.message.service.RemindService;
import com.beecode.inz.message.util.MessageUtils;
import com.jiuqi.np.util.DateUtil;
import com.xyst.dinas.biz.warn.dao.WarnSettingDao;
import com.xyst.dinas.biz.warn.service.IWarningSettingService;
/**
* 业务预警基类
......@@ -29,9 +44,11 @@ public class BaseBusinessWarn {
private IWarningCalculate warningCalculate;
private WarnSettingDao warnSettingDao;
private IWarningSettingService warningSettingService;
private RemindService remindService;
private StaffService staffService;
public BaseBusinessWarn(@NonNull String billType, @Nullable UUID billId, @Nullable String target) {
Assert.notNull(billType, "The billType must not be null!");
......@@ -39,27 +56,31 @@ public class BaseBusinessWarn {
this.billId = billId;
this.target = target;
remindService = getRemindService();
warnSettingDao = getWarnSettingDao();
staffService = getStaffService();
warningSettingService = getWarningSettingService();
}
/** 预警设置*/
protected WarnSetting getWarnSetting() {
//通过billType, billId, target 在数据库查询预警设置数据
warnSettingDao.getWarnSetting(billType, billId, target);
WarnSettingEntity warnSettingEntity = new WarnSettingEntity();
// warnSettingEntity.setNoticePersons(null);
return warnSettingEntity;
};
return warningSettingService.getWarnSetting(billType, billId, target);
}
/** 计算是否预警*/
public final void setWarningCalculate(IWarningCalculate warningCalculate) {
this.warningCalculate = warningCalculate;
};
}
/** 预警*/
public final boolean warn() {
return warn(true);
}
/**
* 预警
* @param isNotice 是否发送通知
* @return
*/
public final boolean warn(boolean isNotice) {
boolean isWarning = false;
WarnSetting warnSetting = getWarnSetting();
......@@ -68,24 +89,113 @@ public class BaseBusinessWarn {
//计算业务实际的值, 与预警设置中的值做比较, 计算是否预警
isWarning = warningCalculate.isWarning(warnSetting);
if(!isWarning) return false;
if(!isWarning) isNotice= false;
UUID warnSettingId = warnSetting.getSettingId();
//记录预警日志
WarnExeRecord warnExeRecord = warningSettingService.queryWarnExeRecord(warnSettingId);
if (warnExeRecord == null) {
//新增预警执行信息
warnExeRecord = createWarnExeRecord(warnSetting);
warningSettingService.insertWarnExe(warnExeRecord);
}else {
//修改预警执行信息
Date currentTime = new Date();
warnExeRecord.setRecentlyTime(currentTime);
if(!isWarning) {
warnExeRecord.setEndTime(currentTime);
}
warningSettingService.updateWarnExe(warnExeRecord);
}
String[] noticePerson = warnSetting.getPersonnel();
notice(noticePerson);
//TODO 记录预警日志
String[] noticePerson = warnSetting.getPersonnel();
try {
if (isNotice)
notice(noticePerson,"message",warnSetting.getBillId());
} catch (Exception e) {
e.printStackTrace();
}
return true;
};
public void notice(String[] noticePerson) {
//TODO 通知所有人员
// remindService.
private WarnExeRecord createWarnExeRecord(WarnSetting warnSetting) {
WarnExeRecord warnExeRecord = new WarnExeRecord();
Date currentTime = new Date();
warnExeRecord.setStratTime(currentTime);
warnExeRecord.setRecentlyTime(currentTime);
warnExeRecord.setTarget(warnSetting.getTarget());
warnExeRecord.setMin(warnSetting.getMin());
warnExeRecord.setMax(warnSetting.getMax());
warnExeRecord.setWarnSettingId(warnSetting.getSettingId());
warnExeRecord.setBillId(warnSetting.getBillId());
return warnExeRecord;
}
private WarnSettingDao getWarnSettingDao() {
return Amino.getApplicationMetadataContext().getBean(WarnSettingDao.class);
private void notice(String[] noticePerson,String message,UUID billId) throws Exception{
// 通知所有人员
Date currentTime = new Date();
String currentTimeStr = DateUtil.dateTime2String(currentTime);
JSONObject remObject = new JSONObject();
UUID remindId = UUID.randomUUID();
remObject.put("id", remindId);
remObject.put("createTime", currentTimeStr);
remObject.put("remindContent", "合同预警通知");
remObject.put("remindTime", currentTimeStr);
remObject.put("data",billId );//param.getString("id")
remObject.put("lookName", "contractY");
remObject.put("lookType", "Contract");
remObject.put("_type", CommonConstants.REMIND_ENTITY);
remObject.put("isToCustomer", false);
KObject kobject =(KObject)JSONObjectUtils.toObject(remObject.toString());
KObject creater = MessageUtils.gerCurrentStaff();
kobject.set("sender", creater);//
kobject.validate();
JSONArray parts = new JSONArray();
for (String person : noticePerson) {
JSONObject part = new JSONObject();
part.put("participateId", person);
part.put("participateType", "person");
parts.put(part);
}
List<KObject> listRes = new ArrayList<KObject>();
for(int i=0;i<parts.length();i++) {
JSONObject item = parts.getJSONObject(i);
item.put("_type", CommonConstants.REM_PART_RELATION_ENTITTY);
item.put("remindId", remindId);
item.put("id", UUID.randomUUID());
String partType = item.getString(RemPartRelationConstants.PARTICIPATE_TYPE);
if(ParterType.PERSON.getPartnerType().equals(partType)){
//参与者id是员工的id
String staffPartId = item.getString(RemPartRelationConstants.PARTICIPATE_ID);
//根据员工的参与者id获得userId
KObject staffKObject = staffService.getById(UUID.fromString(staffPartId));
KObject userKObject = staffKObject.get(Staff.USER);
String userId = userKObject.getString("id");
item.put(RemPartRelationConstants.PARTICIPATE_ID, userId);
}
KObject entity =(KObject) JSONObjectUtils.toObject(item.toString());
listRes.add(entity);
entity.validate();
}
remindService.add(kobject, listRes);
}
private IWarningSettingService getWarningSettingService() {
return Amino.getApplicationMetadataContext().getBean(IWarningSettingService.class);
}
private RemindService getRemindService() {
return Amino.getApplicationMetadataContext().getBean(RemindService.class);
}
private StaffService getStaffService() {
return Amino.getApplicationMetadataContext().getBean(StaffService.class);
}
}
package com.xyst.dinas.biz.warn;
import java.util.Date;
import java.util.UUID;
/**
* 预警执行记录
*
* @author Jackpot
* @date 2021年4月2日
*/
public class WarnExeRecord {
private UUID id;
private Long version;
private Date stratTime;
private Date endTime;
private Date recentlyTime;
private UUID warnSettingId;
private String warnState;
private UUID billId;
private String target;
private String max;
private String min;
private String message;
public Long getVersion() {
return version;
}
public void setVersion(Long version) {
this.version = version;
}
public Date getRecentlyTime() {
return recentlyTime;
}
public void setRecentlyTime(Date recentlyTime) {
this.recentlyTime = recentlyTime;
}
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public Date getStratTime() {
return stratTime;
}
public void setStratTime(Date stratTime) {
this.stratTime = stratTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public UUID getWarnSettingId() {
return warnSettingId;
}
public void setWarnSettingId(UUID warnSettingId) {
this.warnSettingId = warnSettingId;
}
public String getWarnState() {
return warnState;
}
public void setWarnState(String warnState) {
this.warnState = warnState;
}
public UUID getBillId() {
return billId;
}
public void setBillId(UUID billId) {
this.billId = billId;
}
public String getTarget() {
return target;
}
public void setTarget(String target) {
this.target = target;
}
public String getMax() {
return max;
}
public void setMax(String max) {
this.max = max;
}
public String getMin() {
return min;
}
public void setMin(String min) {
this.min = min;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
......@@ -40,5 +40,8 @@ public interface WarnSetting {
/** 人员*/
String[] getPersonnel();
/** 备注*/
String getMemo();
}
......@@ -2,9 +2,11 @@ package com.xyst.dinas.biz.warn;
public class WarnSettingConstant {
/** 实体名:合同信息表 */
public static final String ENTITY = "com.xyst.dinas.biz.datamodel.WarnSetting";
/** 实体名:预警设置 */
public static final String ENTITY_WARNSETTING = "com.xyst.dinas.biz.datamodel.WarnSetting";
/** 实体名:预警执行记录 */
public static final String ENTITY_WARNINGEXE = "com.xyst.dinas.biz.datamodel.WarningExe";
/** 项目 */
public static final String PROJECT = "project";
......
......@@ -12,9 +12,20 @@ public class WarnSettingEntity implements WarnSetting{
private String max;
private String min;
private String[] personnel;
private String memo;
private boolean isOpen;
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
public UUID getSettingId() {
return settingId;
}
......
......@@ -13,24 +13,10 @@ public class WarnTest {
int count = 10000;//青砂余量
ContractBusinessWarn contractBusinessWarn = new ContractBusinessWarn(billType, billId,target);
DinasCountWarningCalculate dinasCountWarningCalculate = new DinasCountWarningCalculate(count);
contractBusinessWarn.setWarningCalculate(dinasCountWarningCalculate);
contractBusinessWarn.warn();
// BaseBusinessWarn contractBusinessWarn = new BaseBusinessWarn(billType, billId,target);
// DinasCountWarningCalculate dinasCountWarningCalculate = new DinasCountWarningCalculate(count);
// contractBusinessWarn.setWarningCalculate(dinasCountWarningCalculate);
// contractBusinessWarn.warn();
}
/**
* 合同预警
*
* @author Jackpot
* @date 2021年3月26日
*/
public class ContractBusinessWarn extends BaseBusinessWarn{
public ContractBusinessWarn(String billType, UUID billId,String target) {
super(billType, billId,target);
}
}
}
package com.xyst.dinas.biz.warn;
package com.xyst.dinas.biz.warn.dao;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.hibernate.query.Query;
import org.json.JSONArray;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateOperations;
import org.springframework.stereotype.Repository;
import com.beecode.bcp.type.KObject;
import com.jiuqi.np.util.DateUtil;
import com.xyst.dinas.biz.warn.WarnExeRecord;
import com.xyst.dinas.biz.warn.WarnSetting;
import com.xyst.dinas.biz.warn.WarnSettingConstant;
import com.xyst.dinas.biz.warn.WarnSettingEntity;
@Repository
public class WarnSettingDao {
......@@ -21,40 +21,31 @@ public class WarnSettingDao {
@Autowired
private HibernateOperations template;
public UUID create(KObject kObject) {
return (UUID) template.save(kObject.getType().getName(), kObject);
}
public void update(KObject kobject) {
template.update(kobject.getType().getName(), kobject);
}
public KObject load(UUID id) {
return (KObject) template.get(WarnSettingConstant.ENTITY, id);
public KObject queryWarnSettingById(UUID id) {
return (KObject) template.get(WarnSettingConstant.ENTITY_WARNSETTING, id);
}
public UUID create(KObject kObject) {
return (UUID) template.save(kObject.getType().getName(), kObject);
public KObject queryWarningExeById(UUID id) {
return (KObject) template.get(WarnSettingConstant.ENTITY_WARNINGEXE, id);
}
/**
* 通过合同编号查找合同
* @param contractCode
* @return
*/
public List<KObject> queryContractByCode(String contractCode) {
return (List<KObject>)template.execute((session)->{
Query<KObject> query = session.createQuery("from " + WarnSettingConstant.ENTITY + " where billType =:billType", KObject.class);
query.setParameter("contractCode", contractCode);
return query.getResultList();
});
}
private String QUERY_HQL = "from " + WarnSettingConstant.ENTITY + " where billType =:billType";
public WarnSetting getWarnSetting(String billType, UUID billId, String target) {
return
template.execute(session -> {
String QUERY_HQL = "from " + WarnSettingConstant.ENTITY_WARNSETTING + " where billType =:billType";
return template.execute(session -> {
StringBuilder hql = new StringBuilder(QUERY_HQL);
if(billId!=null) hql.append(" and billId =:billId");
......@@ -73,6 +64,7 @@ public class WarnSettingDao {
String min = singleResult.getString("min");
String personnel = singleResult.getString("personnel");
boolean isOpen = singleResult.getBoolean("isOpen");
String memo = singleResult.getString("memo");
WarnSettingEntity warnSettingEntity = new WarnSettingEntity();
warnSettingEntity.setBillType(billType);
......@@ -82,33 +74,58 @@ public class WarnSettingDao {
warnSettingEntity.setMin(min);
warnSettingEntity.setMax(max);
warnSettingEntity.setOpen(isOpen);
warnSettingEntity.setMemo(memo);
// List<String> personnel
String[] person = personnel.split(",");
warnSettingEntity.setPersonnel(person);
String[] personnelArray= personnel!=null && !personnel.isEmpty()?personnel.split(","):null;
warnSettingEntity.setPersonnel(personnelArray);
return warnSettingEntity;
});
}
public List<KObject> getProjectListByPurSand(UUID purchaseSandId,UUID projectType,String projectName) {
public WarnExeRecord queryWarnExeRecord(UUID warnSettingId) {
String QUERY_HQL = "from " + WarnSettingConstant.ENTITY_WARNINGEXE + " where endTime is null and warnSetting.id =:warnSettingId";
return template.execute(session -> {
StringBuilder hql = new StringBuilder(QUERY_HQL);
if(projectType!=null) hql.append(" and project.projectType.id =:projectType");
if(projectName!=null) hql.append(" and project.projectName like :projectName");
Query<KObject> query = session.createQuery(QUERY_HQL, KObject.class);//KObject
query.setParameter("warnSettingId", warnSettingId);
List<KObject> resultList = query.getResultList();
if (resultList.isEmpty()) {
return null;
}
KObject singleResult = query.getSingleResult();
Query<KObject> query = session.createQuery(hql.toString(), KObject.class);//KObject
query.setParameter("purchaseSandUnit", purchaseSandId);
query.setParameter("contractState", "");//只查询执行中状态的合同
if(projectType!=null) query.setParameter("projectType", projectType);
if(projectName!=null) query.setParameter("projectName", "%"+projectName+"%");
List<KObject> list = query.list();
return list;
Date stratTime = singleResult.getDate("stratTime");
Date endTime = singleResult.getDate("endTime");
Date recentlyTime = singleResult.getDate("recentlyTime");
String max = singleResult.getString("max");
String min = singleResult.getString("min");
String message = singleResult.getString("message");
String target = singleResult.getString("target");
UUID billId = singleResult.getUuid("billId");
UUID id = singleResult.getUuid("id");
Long version = singleResult.getLong("version");
WarnExeRecord warnExeRecord = new WarnExeRecord();
warnExeRecord.setStratTime(stratTime);
warnExeRecord.setEndTime(endTime);
warnExeRecord.setRecentlyTime(recentlyTime);
warnExeRecord.setWarnSettingId(warnSettingId);
warnExeRecord.setMax(max);
warnExeRecord.setMin(min);
warnExeRecord.setMessage(message);
warnExeRecord.setTarget(target);
warnExeRecord.setBillId(billId);
warnExeRecord.setWarnState("warnState");
warnExeRecord.setId(id);
warnExeRecord.setVersion(version);
return warnExeRecord;
});
}
}
package com.xyst.dinas.biz.warn.service;
import java.util.List;
import java.util.UUID;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
import com.xyst.dinas.biz.warn.WarnExeRecord;
import com.xyst.dinas.biz.warn.WarnSetting;
public interface IWarningSettingService {
/**
* 新增预警设置
* @param warnSetting
* @return
*/
public UUID insertWarnSetting(WarnSetting warnSetting) ;
WarnSetting getWarnSetting(@NonNull String billType, @Nullable UUID billId, @Nullable String target);
public UUID insertWarnExe(WarnExeRecord warnExeRecord);
public void updateWarnExe(WarnExeRecord warnExeRecord);
/**
* 查询未结束的预警执行记录
* @param warnSettingId
* @return
*/
WarnExeRecord queryWarnExeRecord(UUID warnSettingId);
/**
* 查询一条预警设置的所有预警执行记录
* @param warnSettingId
* @return
*/
List<WarnExeRecord> queryWarnExeRecords(UUID warnSettingId);
}
package com.xyst.dinas.biz.warn.service;
import java.util.List;
import java.util.UUID;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import com.beecode.amino.core.Amino;
import com.beecode.bcp.type.KClass;
import com.beecode.bcp.type.KObject;
import com.beecode.bcp.type.json.JSONObjectUtils;
import com.fasterxml.jackson.databind.JsonNode;
import com.xyst.dinas.biz.warn.WarnExeRecord;
import com.xyst.dinas.biz.warn.WarnSetting;
import com.xyst.dinas.biz.warn.WarnSettingConstant;
import com.xyst.dinas.biz.warn.dao.WarnSettingDao;
@Transactional
public class WarningSettingServiceImpl implements IWarningSettingService{
@Autowired
private WarnSettingDao warnSettingDao;
/**
* 新增预警设置
*/
public UUID insertWarnSetting(WarnSetting warnSetting) {
KClass type = Amino.getApplicationMetadataContext().getBean(WarnSettingConstant.ENTITY_WARNSETTING, KClass.class);
JsonNode json = JSONObjectUtils.toJson(warnSetting);
KObject object = JSONObjectUtils.toObject(json, type);
return warnSettingDao.create(object);
}
/**
* 新增预警执行记录
* @param warnExeRecord
* @return
*/
public UUID insertWarnExe(WarnExeRecord warnExeRecord) {
KClass type = Amino.getApplicationMetadataContext().getBean(WarnSettingConstant.ENTITY_WARNINGEXE, KClass.class);
JsonNode json = JSONObjectUtils.toJson(warnExeRecord);
KObject object = JSONObjectUtils.toObject(json, type);
return warnSettingDao.create(object);
}
@Override
public WarnSetting getWarnSetting(String billType, UUID billId, String target) {
return warnSettingDao.getWarnSetting(billType, billId, target);
}
@Override
public WarnExeRecord queryWarnExeRecord(UUID warnSettingId) {
return warnSettingDao.queryWarnExeRecord(warnSettingId);
}
@Override
public List<WarnExeRecord> queryWarnExeRecords(UUID warnSettingId) {
return null;
}
@Override
public void updateWarnExe(WarnExeRecord warnExeRecord) {
KClass type = Amino.getApplicationMetadataContext().getBean(WarnSettingConstant.ENTITY_WARNINGEXE, KClass.class);
JsonNode json = JSONObjectUtils.toJson(warnExeRecord);
KObject object = JSONObjectUtils.toObject(json, type);
warnSettingDao.update(object);
}
}
......@@ -35,6 +35,9 @@
<attribute id='cbb5b983-299b-4259-97d9-6470651bb18b' name='personnel' columnName='personnel' title='人员' type='string' default='' precision='' isArray='false'>
<annotation id='ea154cb8-f939-4e9f-9793-9673d984161f' attributeId='ffc0a199-4038-4ebf-a94f-a0f12bfc76dd' name='length' value='1000'></annotation>
</attribute>
<attribute id='cbb5b983-299b-4259-97d9-6470651bb18b' name='memo' columnName='memo' title='备注' type='string' default='' precision='' isArray='false'>
<annotation id='ea154cb8-f939-4e9f-9793-9673d984161f' attributeId='ffc0a199-4038-4ebf-a94f-a0f12bfc76dd' name='length' value='1000'></annotation>
</attribute>
<hibernate>/xyst.dinas.biz/src/main/resources/config/WarnSetting.hbm.xml</hibernate>
......
......@@ -20,6 +20,9 @@
<attribute id='cbb5b983-299b-4259-97d9-6470651bb18b' name='endTime' columnName='end_time' title='预警结束时间' type='datetime' default='' precision='' isArray='false'>
<annotation id='ea154cb8-f939-4e9f-9793-9673d984161f' attributeId='ffc0a199-4038-4ebf-a94f-a0f12bfc76dd' name='length' value='undefined'></annotation>
</attribute>
<attribute id='cbb5b983-299b-4259-97d9-6470651bb18b' name='recentlyTime' columnName='recently_time' title='最近预警时间' type='datetime' default='' precision='' isArray='false'>
<annotation id='ea154cb8-f939-4e9f-9793-9673d984161f' attributeId='ffc0a199-4038-4ebf-a94f-a0f12bfc76dd' name='length' value='undefined'></annotation>
</attribute>
<attribute id='c4154a1b-f727-48cf-9ef0-ad1bee512504' name='warnSetting' columnName='warn_setting_id' title='预警设置' type='com.xyst.dinas.biz.datamodel.WarnSetting' default='' precision='' isArray='false'>
<annotation id='00caecc1-35aa-4342-90c8-250f84609fe4' attributeId='55efd3f5-036a-4ac4-83c9-14e22cf5465a' name='length' value='undefined'></annotation>
<annotation id='95a6dd6d-c676-4265-9c8b-d115c13b472f' attributeId='43768653-e259-4b0f-8c9d-8739f030675b' name='mappingType' value='many-to-one'></annotation>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-sequence">
<specification>1.0</specification>
<id>3f3be07f-0141-41e5-88b5-f5de7da5fc0e</id>
<id>b6504505-63b0-43bf-bfc7-39e163c48236</id>
<name>com.xyst.dinas.biz.bill.Organization$sequence</name>
<title>组织机构$sequence</title>
<description>组织机构</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-serial">
<specification>1.0</specification>
<id>2a6f9eae-b476-40f7-a790-3b14011af7d6</id>
<id>6d2da1fe-a214-4a86-9687-d704f73ab436</id>
<name>com.xyst.dinas.biz.bill.Organization$serial</name>
<title>组织机构$serial</title>
<description>组织机构</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-biztype">
<specification>1.0</specification>
<id>011ee4f0-16a6-43f7-86de-e6b2f290a1aa</id>
<id>a0223fad-af26-4d66-a617-596590057a97</id>
<name>com.xyst.dinas.biz.bill.Organization</name>
<title>组织机构</title>
<description>组织机构</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-sequence">
<specification>1.0</specification>
<id>e29ab6c9-17ff-499a-8a90-c37e329775ca</id>
<id>1b890f66-2ba9-4f3c-8280-13b925a98295</id>
<name>com.xyst.dinas.biz.bill.Position$sequence</name>
<title>岗位$sequence</title>
<description>岗位</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-serial">
<specification>1.0</specification>
<id>0a48f787-2529-4591-8b8f-c935d27c5af4</id>
<id>a2a79dc3-349e-42de-b2e2-c1499d998ce9</id>
<name>com.xyst.dinas.biz.bill.Position$serial</name>
<title>岗位$serial</title>
<description>岗位</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-biztype">
<specification>1.0</specification>
<id>53d1941c-afc6-4a2d-8ee8-51f1a4ad425e</id>
<id>5e5a8858-0b5d-46be-9f40-7055eda3963b</id>
<name>com.xyst.dinas.biz.bill.Position</name>
<title>岗位</title>
<description>岗位</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-sequence">
<specification>1.0</specification>
<id>719e0971-0cae-4490-9f2a-c7696d20c414</id>
<id>4f0581c6-e8ec-49e2-8ff6-5e0d2733831f</id>
<name>com.xyst.dinas.biz.bill.ShipInfo$sequence</name>
<title>船舶备案$sequence</title>
<description>船舶备案</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-serial">
<specification>1.0</specification>
<id>33693a0f-c58c-46f0-8b5e-db2adae2ee2b</id>
<id>3c9cb123-f6ed-4912-bc51-81fb04287954</id>
<name>com.xyst.dinas.biz.bill.ShipInfo$serial</name>
<title>船舶备案$serial</title>
<description>船舶备案</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-biztype">
<specification>1.0</specification>
<id>1f1bd289-14eb-4efb-a61f-e23506505c90</id>
<id>77b6abb6-a300-4628-a1db-2cbda1ac09e2</id>
<name>com.xyst.dinas.biz.bill.ShipInfo</name>
<title>船舶备案</title>
<description>船舶备案</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-sequence">
<specification>1.0</specification>
<id>1dc11db8-112a-403b-a658-0f8df141e721</id>
<id>5e9e0a6d-d45a-463a-8056-dd16ab133d45</id>
<name>com.xyst.dinas.biz.bill.Station$sequence</name>
<title>场站$sequence</title>
<description>场站</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-serial">
<specification>1.0</specification>
<id>464778a2-0db8-4580-8f93-94ddf76d6c95</id>
<id>9f69f089-510d-4dc3-a1df-c7fdab4afae7</id>
<name>com.xyst.dinas.biz.bill.Station$serial</name>
<title>场站$serial</title>
<description>场站</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-biztype">
<specification>1.0</specification>
<id>9dc7caf4-54bf-4d1a-84cb-fef1b5e46f43</id>
<id>280523dd-ab45-4e62-a025-bc64964e6c98</id>
<name>com.xyst.dinas.biz.bill.Station</name>
<title>场站</title>
<description>场站</description>
......
......@@ -104,6 +104,20 @@
<m:description></m:description>
<m:default></m:default>
</m:attribute>
<m:attribute>
<m:annotations>
<m:annotation>
<m:type>bcp.type.constraint.StringLength</m:type>
<m:value>1000</m:value>
</m:annotation>
</m:annotations>
<m:id>cbb5b983-299b-4259-97d9-6470651bb18b</m:id>
<m:name>memo</m:name>
<m:title>备注</m:title>
<m:type>string</m:type>
<m:description></m:description>
<m:default></m:default>
</m:attribute>
</m:attributes>
</m:class>
</content>
......
......@@ -37,6 +37,15 @@
</m:attribute>
<m:attribute>
<m:annotations/>
<m:id>cbb5b983-299b-4259-97d9-6470651bb18b</m:id>
<m:name>recentlyTime</m:name>
<m:title>最近预警时间</m:title>
<m:type>datetime</m:type>
<m:description></m:description>
<m:default></m:default>
</m:attribute>
<m:attribute>
<m:annotations/>
<m:id>c4154a1b-f727-48cf-9ef0-ad1bee512504</m:id>
<m:name>warnSetting</m:name>
<m:title>预警设置</m:title>
......
......@@ -65,6 +65,9 @@
<property name="personnel" type="nstring" not-null="false">
<column name="personnel" length="1000"></column>
</property>
<property name="memo" type="nstring" not-null="false">
<column name="memo" length="1000"></column>
</property>
</class>
......
......@@ -19,6 +19,9 @@
<property name="endTime" type="timestamp" not-null="false">
<column name="end_time" length="10"></column>
</property>
<property name="recentlyTime" type="timestamp" not-null="false">
<column name="recently_time" length="10"></column>
</property>
<many-to-one name="warnSetting" entity-name="com.xyst.dinas.biz.datamodel.WarnSetting" fetch="select">
<column name="warn_setting_id" not-null="false"/>
</many-to-one>
......
......@@ -13,8 +13,11 @@ import com.beecode.inz.workflow.config.TriggerCondition;
import com.xyst.dinas.contract.constant.ContractConstant;
import com.xyst.dinas.contract.internal.dao.ContractInfoDao;
import com.xyst.dinas.contract.internal.service.ContractServiceImpl;
import com.xyst.dinas.contract.internal.service.ContractWarnServiceImpl;
import com.xyst.dinas.contract.listener.ContractProcessEventListener;
import com.xyst.dinas.contract.query.processor.PerformWarningProcessor;
import com.xyst.dinas.contract.service.ContractService;
import com.xyst.dinas.contract.service.ContractWarnService;
import com.xyst.dinas.contract.web.ContractController;
/**
* 开启自动配置,无需手动注册Bean
......@@ -38,6 +41,11 @@ public class ContractConfiguration {
return new ContractInfoDao();
}
@Bean
public ContractWarnService ContractWarnService() {
return new ContractWarnServiceImpl();
}
......@@ -64,4 +72,10 @@ public class ContractConfiguration {
public PerformWarningProcessor performWarningProcessor() {
return new PerformWarningProcessor();
}
@Bean
public ContractProcessEventListener createContractProcessEventListener() {
return new ContractProcessEventListener();
}
}
package com.xyst.dinas.contract.internal.service;
import java.util.List;
import java.util.UUID;
import org.springframework.beans.factory.annotation.Autowired;
import com.beecode.bcp.type.KObject;
import com.xyst.dinas.biz.warn.WarnSettingEntity;
import com.xyst.dinas.biz.warn.service.IWarningSettingService;
import com.xyst.dinas.contract.service.ContractWarnService;
public class ContractWarnServiceImpl implements ContractWarnService{
@Autowired
private IWarningSettingService warningSettingService;
@Override
public void afterApproved(KObject contract) {
//合同审批通过后,自动新增砂石余量预警设置
UUID contractId = contract.getUuid("id");
List<KObject> detials = contract.get("contractDetail").toList();
//
for (KObject detail : detials) {
String dinasTypeName = detail.get("dinasType").getString("dinasTypeName");
String billType = "合同";
WarnSettingEntity warnSetting = new WarnSettingEntity();
warnSetting.setBillType(billType);
warnSetting.setBillId(contractId);
warnSetting.setTarget(dinasTypeName);
warnSetting.setOpen(true);
warningSettingService.insertWarnSetting(warnSetting);
}
}
}
package com.xyst.dinas.contract.listener;
import org.springframework.beans.factory.annotation.Autowired;
import com.beecode.bap.workflow.core.BizProcessState;
import com.beecode.inz.workflow.listener.InzBizProcessEvent;
import com.beecode.inz.workflow.listener.InzBizProcessEventListener;
import com.xyst.dinas.contract.service.ContractWarnService;
public class ContractProcessEventListener implements InzBizProcessEventListener {
@Autowired
private ContractWarnService contractWarnService;
@Override
public void beforeProcessStarted(InzBizProcessEvent event) {
......@@ -15,7 +21,6 @@ public class ContractProcessEventListener implements InzBizProcessEventListener
@Override
public void afterProcessStarted(InzBizProcessEvent event) {
//do nothing
System.out.println("afterProcessStarted..");
}
@Override
......@@ -26,7 +31,9 @@ public class ContractProcessEventListener implements InzBizProcessEventListener
@Override
public void afterProcessCompleted(InzBizProcessEvent event) {
//自动新增合同预警条目
System.out.println("自动新增合同预警条目..");
if(event.getInzBizProcess().getWorkflowState() == BizProcessState.DONE_WITH_AGREE.getValue()){
contractWarnService.afterApproved(event.getInzBizProcess().getBizDataObject());
}
}
}
package com.xyst.dinas.contract.service;
import com.beecode.bcp.type.KObject;
/**
* 合同预警服务
*
* @author Jackpot
* @date 2021年4月1日
*/
public interface ContractWarnService {
/**
* 审批通过后的回调
* @param object
*/
void afterApproved(KObject object);
}
package com.xyst.dinas.biz.warn;
package com.xyst.dinas.contract.warn;
import com.xyst.dinas.biz.warn.IWarningCalculate;
import com.xyst.dinas.biz.warn.WarnSetting;
/**
* 砂石余量预警计算器
*
......@@ -11,7 +15,7 @@ public class DinasCountWarningCalculate implements IWarningCalculate{
private int dinsaCount;
/**
*
* 砂石余量预警计算器
* @param dinsaCount 砂石余量
*/
public DinasCountWarningCalculate(int dinsaCount) {
......
......@@ -17,6 +17,10 @@ import com.beecode.amino.core.Amino;
import com.beecode.bcp.type.KClass;
import com.beecode.bcp.type.KObject;
import com.beecode.bcp.type.json.JSONObjectUtils;
import com.xyst.dinas.biz.warn.BaseBusinessWarn;
import com.xyst.dinas.contract.warn.DinasCountWarningCalculate;
import com.xyst.dinas.biz.warn.WarnSettingEntity;
import com.xyst.dinas.biz.warn.service.IWarningSettingService;
import com.xyst.dinas.contract.constant.ContractConstant;
import com.xyst.dinas.contract.entity.BaseEntity;
import com.xyst.dinas.contract.entity.CommonResult;
......@@ -91,4 +95,31 @@ public class ContractController {
}
@Autowired
private IWarningSettingService warningSettingService;
@PostMapping("/contract/test")
public void afterApproved() {
//合同审批通过后,自动新增砂石余量预警设置
String billType = "合同";
UUID contractId = UUID.fromString("598A9B1B-34C7-4BFB-A846-40EDEF357752");
String target = "清砂";
int count = 100;//青砂余量
BaseBusinessWarn contractBusinessWarn = new BaseBusinessWarn(billType, contractId,target);
DinasCountWarningCalculate dinasCountWarningCalculate = new DinasCountWarningCalculate(count);
contractBusinessWarn.setWarningCalculate(dinasCountWarningCalculate);
contractBusinessWarn.warn();
// WarnSettingEntity warnSetting = new WarnSettingEntity();
// warnSetting.setBillType(billType);
// warnSetting.setBillId(contractId);
// warnSetting.setTarget(dinasTypeName);
// warnSetting.setOpen(true);
// warningSettingService.insertWarnSetting(warnSetting);
}
}
\ No newline at end of file
......@@ -43,9 +43,6 @@
<attribute id='0933ceb1-f327-4372-a316-cffa1c80991a' name='contractCode' columnName='contract_code' title='合同编号' type='string' default='' precision='' isArray='false'>
<annotation id='6f08f4ca-1f77-4ed4-a627-0fb8843959fa' attributeId='dfbeaa83-63dc-4638-b55a-8dda62d74dd4' name='length' value='50'></annotation>
</attribute>
<attribute id='0933ceb1-f327-4372-a316-cffa1c80991a' name='currentVersion' columnName='current_version' title='版本号' type='int' default='' precision='' isArray='false'>
<annotation id='6f08f4ca-1f77-4ed4-a627-0fb8843959fa' attributeId='dfbeaa83-63dc-4638-b55a-8dda62d74dd4' name='length' value='11'></annotation>
</attribute>
<attribute id='0933ceb1-f327-4372-a316-cffa1c80991a' name='contractState' columnName='contract_state' title='合同状态' type='string' default='' precision='' isArray='false'>
<annotation id='6f08f4ca-1f77-4ed4-a627-0fb8843959fa' attributeId='dfbeaa83-63dc-4638-b55a-8dda62d74dd4' name='length' value='50'></annotation>
</attribute>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-sequence">
<specification>1.0</specification>
<id>c908b1b1-d83c-42a8-b36d-295cc09cf4f4</id>
<id>b6aed80e-65b8-4a09-b6fe-80e1d4121f6b</id>
<name>com.xyst.dinas.contract.bill.ContractBill$sequence</name>
<title>合同单据$sequence</title>
<description>合同单据</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-serial">
<specification>1.0</specification>
<id>cf040bd4-83fa-490a-9e46-fd275b53f11d</id>
<id>eba21aa3-e272-427b-b63a-05f1ee4e12d1</id>
<name>com.xyst.dinas.contract.bill.ContractBill$serial</name>
<title>合同单据$serial</title>
<description>合同单据</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-biztype">
<specification>1.0</specification>
<id>610e8116-8e01-4c5c-93eb-5c6511e39886</id>
<id>63768a7d-4403-4419-8866-1b19a7ba636e</id>
<name>com.xyst.dinas.contract.bill.ContractBill</name>
<title>合同单据</title>
<description>合同单据</description>
......
......@@ -122,15 +122,6 @@
<m:default></m:default>
</m:attribute>
<m:attribute>
<m:annotations/>
<m:id>0933ceb1-f327-4372-a316-cffa1c80991a</m:id>
<m:name>currentVersion</m:name>
<m:title>版本号</m:title>
<m:type>int</m:type>
<m:description></m:description>
<m:default></m:default>
</m:attribute>
<m:attribute>
<m:annotations>
<m:annotation>
<m:type>bcp.type.constraint.StringLength</m:type>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-sequence">
<specification>1.0</specification>
<id>379aa872-c4db-451c-b387-31ddd6492f60</id>
<id>da26179f-26dd-4b75-82be-3f0d89c2bbde</id>
<name>com.xyst.dinas.oa.bill.BusinessTripApply$sequence</name>
<title>出差申请$sequence</title>
<description>出差申请</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-serial">
<specification>1.0</specification>
<id>21ff5891-b785-4fd5-8467-33256f7881db</id>
<id>1aef3fc7-8d69-4805-921a-014b2b4da479</id>
<name>com.xyst.dinas.oa.bill.BusinessTripApply$serial</name>
<title>出差申请$serial</title>
<description>出差申请</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-biztype">
<specification>1.0</specification>
<id>a5aba365-3fe4-40b7-bf20-99cf3407f840</id>
<id>4b897e00-d7f2-45de-900a-13b482a663e8</id>
<name>com.xyst.dinas.oa.bill.BusinessTripApply</name>
<title>出差申请</title>
<description>出差申请</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-sequence">
<specification>1.0</specification>
<id>7e58000c-1110-45cb-8865-42499a608f2e</id>
<id>ab399931-41f4-44ef-97b5-549225bbcb6e</id>
<name>com.xyst.dinas.oa.bill.ProtocolDocument$sequence</name>
<title>拟文$sequence</title>
<description>拟文</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-serial">
<specification>1.0</specification>
<id>9a8fd244-d2b2-41c7-8cff-fd419218d5d9</id>
<id>b19e13de-1421-40f4-9452-e32c9a17a4ed</id>
<name>com.xyst.dinas.oa.bill.ProtocolDocument$serial</name>
<title>拟文$serial</title>
<description>拟文</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-biztype">
<specification>1.0</specification>
<id>f6467133-57fa-47b5-b4f4-f7d937c4ae92</id>
<id>0196dd56-8596-49b3-be39-b829f966d244</id>
<name>com.xyst.dinas.oa.bill.ProtocolDocument</name>
<title>拟文</title>
<description>拟文</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-sequence">
<specification>1.0</specification>
<id>43afecf9-b7a6-4cb0-865d-3486d0b7467e</id>
<id>2efcf528-0636-423b-8aaa-5ee582c0ce31</id>
<name>com.xyst.dinas.oa.bill.SealBorrow$sequence</name>
<title>证章借出$sequence</title>
<description>证章借出</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-serial">
<specification>1.0</specification>
<id>ac0d4796-1c41-4ee8-90cc-7453016ad414</id>
<id>ca8e5738-189a-45c7-9ba4-e49ace867002</id>
<name>com.xyst.dinas.oa.bill.SealBorrow$serial</name>
<title>证章借出$serial</title>
<description>证章借出</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-biztype">
<specification>1.0</specification>
<id>eb09f88a-cb2c-4ac1-8afa-2c6e25db018d</id>
<id>ea1f0c09-6c6d-4ca1-999a-03b30bb9430d</id>
<name>com.xyst.dinas.oa.bill.SealBorrow</name>
<title>证章借出</title>
<description>证章借出</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-sequence">
<specification>1.0</specification>
<id>b6c2431a-713a-464c-8b33-0c4da74c859e</id>
<id>3b5333b7-e842-49d1-bcf4-4b9fe79aa5f6</id>
<name>com.xyst.dinas.oa.bill.UseCarApply$sequence</name>
<title>用车申请$sequence</title>
<description>用车申请</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-serial">
<specification>1.0</specification>
<id>02689845-286a-417a-809d-fadf87754742</id>
<id>075d4d9c-f6fd-41d9-8665-4737c2b939a1</id>
<name>com.xyst.dinas.oa.bill.UseCarApply$serial</name>
<title>用车申请$serial</title>
<description>用车申请</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-biztype">
<specification>1.0</specification>
<id>4509cc76-64b5-4516-8d31-6e36f85c0946</id>
<id>153f1b2e-a89a-4d73-adc9-aec0643e801b</id>
<name>com.xyst.dinas.oa.bill.UseCarApply</name>
<title>用车申请</title>
<description>用车申请</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-sequence">
<specification>1.0</specification>
<id>9ad5102b-c2cd-47fd-91a8-88057d555d0f</id>
<id>bfd59e56-c83a-427d-ad06-564c51c59466</id>
<name>com.xyst.dinas.project.bill.ProjectFiled$sequence</name>
<title>项目备案$sequence</title>
<description>项目备案</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-serial">
<specification>1.0</specification>
<id>ba188aef-0139-4dcc-967b-0ed7ed184573</id>
<id>8dfa92f9-c40e-4243-9889-be5cb65dcd97</id>
<name>com.xyst.dinas.project.bill.ProjectFiled$serial</name>
<title>项目备案$serial</title>
<description>项目备案</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-biztype">
<specification>1.0</specification>
<id>17ccf318-83df-435a-a3a8-59cf757957f4</id>
<id>2f30072c-2a5a-4ef4-b1ff-ccc81106f90c</id>
<name>com.xyst.dinas.project.bill.ProjectFiled</name>
<title>项目备案</title>
<description>项目备案</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-sequence">
<specification>1.0</specification>
<id>2497dbae-e18f-45a4-8132-e63670861d12</id>
<id>649423ac-67a3-4423-9d50-1ae1aac9bfd6</id>
<name>com.xyst.dinas.project.bill.PurchaseSandCompany$sequence</name>
<title>购砂单位$sequence</title>
<description>购砂单位</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-serial">
<specification>1.0</specification>
<id>55689028-2756-4f36-88e0-9f7d6d99292b</id>
<id>6232b7c3-582c-4b6c-abfc-cd46cadd57f3</id>
<name>com.xyst.dinas.project.bill.PurchaseSandCompany$serial</name>
<title>购砂单位$serial</title>
<description>购砂单位</description>
......
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.beecode.cn/schema/amino-metadata" xmlns:m="http://www.beecode.cn/schema/bcp-biztype">
<specification>1.0</specification>
<id>a01d444c-ea23-4630-a333-823aacc8987a</id>
<id>f659a42e-6221-4b11-b327-2dbf1a391263</id>
<name>com.xyst.dinas.project.bill.PurchaseSandCompany</name>
<title>购砂单位</title>
<description>购砂单位</description>
......
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