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" }
字节(Byte)是计量单位,表示数据量多少,是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位。字符(Character)计算机中使用的字母、数字、字和符号,比如'A'、'B'、'$'、'&'等。一般在英文...
public class test { public static void main(String[] args) { &...
public class test { public static void main(String[] args) { &...
在java中字符串属于对象,刚开始我就疑惑为什么int char等类型都是小写,结果String是大写,java太反人类,后来才知道String是对象。(1).java创建字符串String text = "net"; String tex...
假如有个字符串为"fatcatfatcatfat",正则为“cat”当调用appendReplacement(sb, "dog")时appendReplacement方法都会把匹配到的内容替换为dog,并把匹配到字符串的前面几个字符串+dog送给sb里,所以第...
(7).java方法重载一个类的两个方法拥有相同的名字,但是有不同的参数列表,叫做方法重载,例如public static int sum(int a, int b) { retur...