当前位置:首页 > JAVA > 正文内容

x2-300通过单据生成json工具

高老师2年前 (2024-08-08)JAVA293

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"
}

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/813.html

分享给朋友:

“x2-300通过单据生成json工具” 的相关文章

Java不用编译直接执行

Java不用编译直接执行

public class test {     public static void main(String[] args) {     &...

java限制1个方法同一时间只能被一个线程访问

java限制1个方法同一时间只能被一个线程访问

java限制1个方法同一时间只能被一个线程访问public synchronized void setOrderPay(){ }加上synchronized 修饰符即可...

java增强型for循环

java增强型for循环

Java5 引入了一种主要用于数组的增强型 for 循环,类似js中的for inpublic class Member {     public static void main(String[]&...

java String 类 ,java 字符串类,java创建字符串,java获取字符串长度,java连接字符串,java格式化字符串

java String 类 ,java 字符串类,java创建字符串,java获取字符串长度,java连接字符串,java格式化字符串

在java中字符串属于对象,刚开始我就疑惑为什么int char等类型都是小写,结果String是大写,java太反人类,后来才知道String是对象。(1).java创建字符串String text = "net"; String tex...

java睡眠方法,java睡眠函数,java睡眠时间,java睡眠一分钟,java睡眠五秒钟

java睡眠方法,java睡眠函数,java睡眠时间,java睡眠一分钟,java睡眠五秒钟

(1).java睡眠函数Thread.sleep(时间);  //单位为毫秒(2).java睡眠函数例子Date dNow = new Date(); SimpleDateFormat ft = new&nbs...

java正则表达式捕获组

java正则表达式捕获组

java正则表达式的捕获组捕获组可以将匹配到的结果根据正则中的括号进行分组,这里变量我加了$符,php转java的坏习惯,懒得改了,能跑就行// 匹配字符串 String $line = "gaojiufeng 1994! ok?...