x2-300中所有标准单据都有标准的json数据,es虽然保存了json数据,但是会定期清理,编写一个工具生成json。
// 提取参数
String billsId = request.getBillsId();
String className = request.getTableClassName();
// 获取类实例
Class<? extends IBillsBase > obj = (Class<? extends IBillsBase>) ClassUtil.getClassForName(className);
// 创建任务
TaskApproval task = new TaskApproval(billsId);
BillsBatchMap billsBatches = new BillsBatchMap(task,obj);
sureBiz.setHeader(billsBatches.getSures());
sureBiz.setSureView(billsBatches.getSures());
for (BillsSureEntity sure : billsBatches.getSures()) {
// 生成监控中心数据
MonitorDataRequest esData = getEsData(sure);
return esData.getData();
}
// 返回
return "";/**
* 查询数据并推送到ES 如果推送格式跟老系统不一致改这里
*
* @param bill
* @return
*/
public MonitorDataRequest getEsData(BillsSureEntity bill) {
if (null == bill.getHeader() || null == bill.getHeader().getBillsAnnontation() || null == bill.getHeader().getBillsAnnontation().billsType())
BusinessException.of(bill.getBillsId() + "不是合法定义的单据类型");
MonitorDataRequest monitorDataRequest = new MonitorDataRequest();
String billsId = bill.getBillsId();
// 发送ES的数据实体
MQSendBillsMsg mqSendBillsMsg = new MQSendBillsMsg();
//设置基本参数
mqSendBillsMsg.setBillsType(bill.getBillBase().getBillsType());
mqSendBillsMsg.setBillsId(billsId);
mqSendBillsMsg.setMainTableName(bill.getClazz().getSimpleName());
mqSendBillsMsg.setMainKeyFieldName("bills_id");
mqSendBillsMsg.setBillsTypeEnumName(bill.getHeader().getBillsAnnontation().billsType().name());
// 主表数据
IBillsBase main = dbService.query(billsId, bill.getClazz());
if (null == main) {
BusinessException.of(bill.getBillsId() + "单据没有主单内容,不能提交ES." + bill.getClazz().getName());
}
mqSendBillsMsg.setMain(main);
// 查询子表
Map<String, Object> dataMap = new HashMap<String, Object>();
Map<String, Class<?>> tablesubs = dbService.getEntitySub(bill.getTableName());
for (Map.Entry<String, Class<?>> subClazzEntry : tablesubs.entrySet()) {
Class<?> clazz = subClazzEntry.getValue();
String subKey = StringUtil.toLowerFirstCase(subClazzEntry.getKey());
SearchCriteria criteria = new SearchCriteria();
criteria.addEqual("billsId", billsId);
criteria.addEqual("approval", 1);
criteria.setPageIndex(0);
criteria.setPageSize(0);
List<?> subData = dbService.querySeach(criteria, clazz, 0, 0);
dataMap.put(subKey, subData);
//加入对应关系,为了兼容老格式2021-07-05 qdy
mqSendBillsMsg.add(clazz.getSimpleName(), subKey);
}
mqSendBillsMsg.setData(dataMap);
// es参数
monitorDataRequest.setBillsId(billsId);
monitorDataRequest.setData(JSON.toJSONString(mqSendBillsMsg));
monitorDataRequest.setEsIndex(MonitorIndexType.billsIndex);
return monitorDataRequest;
}测试环境临时地址为
http://192.168.244.33:9013/bills/json
http://192.168.244.33:9013/bills/json
一个是单据中心,一个是会员中心
请求参数是
{
"billsId":"FP240708-68KJ-000012",
"tableClassName":"com.x3.db.bills.business.invoices.InvoicesTable"
} public class test { public static void main(String[] args) { &...
java限制1个方法同一时间只能被一个线程访问public synchronized void setOrderPay(){ }加上synchronized 修饰符即可...
java判断字符是否是一个字母System.out.println(Character.isLetter('a'));java判断字符是否是一个数字System.out.println(Character.isDigit('0'));java判断字符是否是一个空白Sy...
在java中字符串属于对象,刚开始我就疑惑为什么int char等类型都是小写,结果String是大写,java太反人类,后来才知道String是对象。(1).java创建字符串String text = "net"; String tex...
(1).java获取当前日期时间Date date = new Date(); System.out.println(date.toString());输出Fri Jul 02 10:29:55 CST 2021(2).java获取时间戳秒/毫秒D...
System.out.println("当前时间戳(秒): " + System.currentTimeMillis()/1000); System.out.println("当前时间戳(毫秒): " +&nb...