ID_GENERATOR中记录PAYMENT_NO值

--设置在ID_GENERATOR中记录PAYMENT_NO值
DECLARE
CURSOR c_id_gen IS
       SELECT a.pb_no id_key, max(substr(b.payment_bill_no,10)) id_value FROM mems_payment_bill b
        JOIN (SELECT distinct(substr(b.payment_bill_no,1,9)) pb_no
                FROM mems_payment_bill b) a
        ON substr(b.payment_bill_no,1,9) = a.pb_no
        GROUP BY a.pb_no;
r_id_gen c_id_gen%ROWTYPE;
v_key VARCHAR2(255);
v_value NUMBER(10);
BEGIN
   OPEN c_id_gen;
   LOOP
      FETCH c_id_gen INTO r_id_gen;
      EXIT WHEN c_id_gen%NOTFOUND;
      v_key := 'PAYMENT_NO_' || substr(r_id_gen.id_key, 1, 1) || '_' || substr(r_id_gen.id_key, 2);
      v_value := TO_NUMBER(r_id_gen.id_value)+1;
      INSERT INTO ID_GENERATOR(ID_KEY, ID_VALUE) VALUES (v_key, v_value);
   END LOOP;
   CLOSE c_id_gen;
  
   COMMIT;
   EXCEPTION
    WHEN OTHERS
    THEN
      DBMS_OUTPUT.PUT_LINE('import paymentbill error:' || SQLERRM);
      ROLLBACK;
END;

CREATE TABLE `payment_record` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id', `hjy_order_no` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '好家园订单号/工单号', `hjy_order_type` int NOT NULL COMMENT '1 订单 2工单', `hjy_user_id` int DEFAULT NULL COMMENT '下单用户Id', `hjy_user_name` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '下单用户名称', `payee_user_id` bigint DEFAULT NULL COMMENT '收款方id', `payment_amount` decimal(16,2) DEFAULT NULL COMMENT '支付金额', `refund_price` decimal(10,2) DEFAULT NULL COMMENT '退款金额', `pay_refund_id` bigint DEFAULT NULL COMMENT '退款订单编号', `refund_time` datetime DEFAULT NULL COMMENT '退款时间', `pay_order_id` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '支付订单号/流水号', `payment_time` datetime DEFAULT NULL COMMENT '支付时间', `is_settle` tinyint(1) DEFAULT NULL COMMENT '是否已结算', `pay_status` bit(1) DEFAULT NULL COMMENT '是否已支付:[0:未支付 1:已经支付过]', `settle_time` datetime DEFAULT NULL COMMENT '结算时间', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `pay_channel_code` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '支付成功的支付渠道', `create_time` datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `hjy_order_no_UNIQUE` (`hjy_order_no`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1827 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='资金流水表,仅记录已支付的金额';可不可以用这个表代替退款记录表,该如何实现
05-16
这段代码,将业务逻辑写在另一个py里 from fastapi import FastAPI, Request from fastapi.responses import StreamingResponse import asyncpg import asyncio import json from contextlib import asynccontextmanager from src.model.taskModel import TaskModel from fastapi.middleware.cors import CORSMiddleware DB_CONFIG = { "database": "iiot", "user": "postgres", "password": "123456", "host": "127.0.0.1", "port": "5000" } @asynccontextmanager async def lifespan(app: FastAPI): app.state.db_pool = await asyncpg.create_pool(**DB_CONFIG) yield await app.state.db_pool.close() app = FastAPI(lifespan=lifespan) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"] ) @app.get("/sse/tasks") async def sse_tasks(request: Request): return StreamingResponse( task_event_generator(request), media_type="text/event-stream", headers={ "Cache-Control": "no-cache", "Connection": "keep-alive", "X-Accel-Buffering": "no" } ) async def task_event_generator(request: Request): pool = request.app.state.db_pool try: while True: if await request.is_disconnected(): break db_tasks = await get_tasks_from_db(pool) tasks = [] for t in db_tasks: try: task_data = { "id": int(t["id"]), "sn": str(t["sn"]) if t["sn"] is not None else "", "label": str(t["label"]) if t["label"] is not None else "-", "type": int(t["type"]) if t["type"] is not None else 0, "status": int(t["status"]) if t["status"] is not None else 0, "priority": int(t["priority"]) if t["priority"] is not None else 1, "create_time": t["create_time"].isoformat() if t["create_time"] else None, "start_point": str(t["start_point"]) if t["start_point"] is not None else "-", "end_point": str(t["end_point"]) if t["end_point"] is not None else "-" } tasks.append(task_data) except Exception as e: print(f"Error processing task {t.get('id', 'unknown')}: {str(e)}") continue yield f"data: {json.dumps(tasks)}\n\n" await asyncio.sleep(2) except Exception as e: error_msg = {"error": str(e)} yield f"event: error\ndata: {json.dumps(error_msg)}\n\n" async def get_tasks_from_db(pool): async with pool.acquire() as conn: return await conn.fetch( "SELECT id, sn, label, type, status, priority, " "create_time, start_point, end_point " "FROM v_iiot_task ORDER BY create_time DESC" )
最新发布
07-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值