仅供参考视图2(现金银行)

现金银行表:

CREATE TABLE bank

(

  database_id bigint NOT NULL, -- 表主键||表主健

  branch_id character varying(50), -- branch_id||branch_id(传输相关)

  copy_version bigint, -- copy_version||copy_version(传输相关)

  created_time date, -- created_time||created_time(传输相关)

  data_creator character varying(50), -- data_creator||data_creator(传输相关)

  data_owner character varying(50), -- data_owner||data_owner(传输相关)

  handle_person character varying(100),-- handle_person||handle_person(from order to orderitem)

  last_modify_time date, -- last_modify_time||last_modify_time(传输相关)

  last_overwrite_time date, -- last_overwrite_time||last_overwrite_time(传输相关)

  last_uploaded_time date, -- last_uploaded_time||last_uploaded_time(传输相关)

  target_branch character varying(50), -- target_branch||target_branch(传输相关)

  transmit_status integer, -- transmit_status||transmit_status(传输相关)

  "version" bigint, -- version||version(传输相关)

 

  bank_id character varying(255), -- 账户ID||账户ID

  bank_short character varying(255), -- 账户名称||账户名称

  bank_type character varying(128), -- 账户类型(现金类/银行存款类)||账户类型

  bank_account character varying(255), -- 银行账号||银行账号

  bank_fullname character varying(100), -- 银行全名||银行全名

  init_date date, -- 开户日期||开户日期

  init_amount numeric(18,8), -- 初始金额||初始金额

  balance numeric(18,8), -- 当前的余额||余额

  subject_code character varying(255),

  CONSTRAINT pk_bank PRIMARY KEY (database_id)

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

订单支付记录表:

CREATE TABLE order_payment_record

(

  database_id bigint NOT NULL, -- 主键||主键

  "version" bigint,

  target_branch character varying(50),

  transmit_status bigint,

  branch_id character varying(50), -- branch_id||branch_id(传输相关)

  copy_version bigint, -- copy_version||copy_version(传输相关)

  created_time date, -- created_time||created_time(传输相关)

  data_creator character varying(50), -- data_creator||data_creator(传输相关)

  data_owner character varying(50), -- data_owner||data_owner(传输相关)

  handle_person character varying(100), -- handle_person||handle_person(from order to orderitem)

  last_modify_time date, -- last_modify_time||last_modify_time(传输相关)

  last_overwrite_time date, -- last_overwrite_time||last_overwrite_time(传输相关)

  last_uploaded_time date, -- last_uploaded_time||last_uploaded_time(传输相关)

 

  order_number character varying(255), -- 订单号||订单号

  self_order_number character varying(255), -- 自编单号||自编单号

  order_type character varying(255), -- 订单类型||订单类型

  order_total numeric(18,8), -- 订单总额||订单总额

  balance numeric(18,8), -- 当前的余额||余额

  bank_account character varying(255), -- 银行账号||银行账号

  bank_fullname character varying(100), -- 银行全名||银行全名

  bank_short character varying(255), -- 账户名称||账户名称

  bank_type character varying(128), -- 账户类型(现金类/银行存款类)||账户类型

  init_amount numeric(18,8), -- 初始金额||初始金额

  init_date date, -- 开户日期||开户日期

  bank_id character varying(255), -- 账户ID||账户ID

  payment_flag boolean, -- 收付款标志||收付款标志

  cur_paid_amount numeric(18,8), -- 本次付款金额||本次付款金额

  payment_method character varying(255), -- 付款方式||付款方式(多付款/其他)

  order_date date, -- order_date||order_date(订单日期相关)

  order_month character varying(20), -- order_month||order_month(订单日期相关)

  order_state character varying(64), -- order_state||order_state(from order to orderitem)

  order_year character varying(20), -- order_year||order_year(订单日期相关)           

  user_define1 character varying(64), -- 用户定义字段1||用户定义字段1

  user_define2 character varying(64), -- 用户定义字段2||用户定义字段2

  user_define3 character varying(64), -- 用户定义字段3||用户定义字段3

  user_define4 character varying(64), -- 用户定义字段4||用户定义字段4

  user_define5 character varying(64), -- 用户定义字段5||用户定义字段5

  plus_minus_flag integer, -- 表明金额是正还是付||表明金额是正还是付

  CONSTRAINT pk_order_payment_info PRIMARY KEY (database_id)

日期表:(用户动态选择时间查询)

CREATE TABLE dates

(

  database_id bigint NOT NULL,

  date_id integer,

  start_date timestamp without time zone,

  end_date timestamp without time zone,

  stock_benchmark integer,

  partner_name character varying(50),

  notes character varying(255),

  partner_id character varying(128),

  CONSTRAINT dates_pkey PRIMARY KEY (database_id)

)

 

 

 

 

1.       初始银行当前余额

CREATE OR REPLACE VIEW view_class_bank_balance_info AS

SELECT tempv_bank_current_balance_info.database_id, tempv_bank_current_balance_info.bank_fullname, tempv_bank_current_balance_info.balance, tempv_bank_current_balance_info.current_balance

FROM tempv_bank_current_balance_info

       WHERE tempv_bank_current_balance_info.balance<>tempv_bank_current_balance_info.current_balance;

 

    

CREATE OR REPLACE VIEW tempv_bank_current_balance_info AS

 SELECT b.database_id, b.bank_fullname,

        CASE

            WHEN b.balance IS NULL THEN 0::numeric

            ELSE b.balance

        END AS balance, c.current_balance

   FROM bank b

   LEFT JOIN ( SELECT a.bank_fullname, sum(a.balance_each) AS current_balance

           FROM(SELECT order_payment_record.database_id, order_payment_record.bank_fullname,

                        CASE

                            WHEN order_payment_record.plus_minus_flag = 1 THEN order_payment_record.cur_paid_amount

                            WHEN order_payment_record.plus_minus_flag = -1 THEN - order_payment_record.cur_paid_amount

                            ELSE 0::numeric

                        END AS balance_each

                   FROM order_payment_record

                  WHERE order_payment_record.cur_paid_amount IS NOT NULL

        UNION ALL

                 SELECT bank.database_id, bank.bank_fullname, bank.init_amount AS balance_each

                   FROM bank) a

          GROUP BY a.bank_fullname) c ON b.bank_fullname::text = c.bank_fullname::text;

 

 

 

 

2.选择时间处理明细

CREATE OR REPLACE VIEW view_class_bank_flow_detail AS

 SELECT a.database_id, a.order_number, a.self_order_number, a.order_date, a.order_type, a.bank_fullname, a.cur_paid_amount AS balance,

        CASE

            WHEN a.plus_minus_flag = 1 THEN '收入'::text

            WHEN a.plus_minus_flag = -1 THEN '支出'::text

            ELSE ''::text

        END AS inout_flag, a.plus_minus_flag

   FROM order_payment_record a

  WHERE a.cur_paid_amount IS NOT NULL AND a.cur_paid_amount <> 0::numeric AND a.bank_fullname::text = ((( SELECT dates.partner_name

           FROM dates

          WHERE dates.date_id = 3))::text) AND a.order_date >= (( SELECT dates.start_date

           FROM dates

          WHERE dates.date_id = 3)) AND a.order_date < (( SELECT dates.end_date

           FROM dates

          WHERE dates.date_id = 3));

 

 

 

 

 

 

private void refreshBalanceDetail() {

        String bankFullName = m_bank.getText();

        Date[] orig = changeDate((Date) m_startDate.getValue(),

                (Date) m_endDate.getValue(), getDateID(), bankFullName);

        try {

            List bankDetaillist = null;

            String query = "from ViewClassBankFlowDetail o";

  bankDetaillist = getDataSourceManager().universalQuery(query, null);

  m_balanceDetailTable.insertList(bankDetaillist, true);

 

 

 

            List list = null;

            String query2 = "from ViewClassBankFlowGeneral o";

            list = getDataSourceManager().universalQuery(query2, null);

ViewClassBankFlowGeneral balanceGeneral = new ViewClassBankFlowGeneral();

            balanceGeneral.addBalanceList(list);

            restoreBalanceGeneral(balanceGeneral);

        } catch (Exception ex) {

            ex.printStackTrace();

        }

        changeDate(orig, getDateID());

}

 

 

 

private Date[] changeDate(Date[] dates, int id) {

        Date start = dates[0];

        Date end = dates[1];

        return changeDate(start, end, id, null);

}

 

//Date[0]--> startDate, Date[1]-->endDate

    private Date[] changeDate(Date newStartDate, Date newEndDate, int id,

            String partName) {

        try {

            String query = "from Dates d where d.dateID=" + id;

         List list = getDataSourceManager().universalQuery(query, null);

            Dates dates = (Dates) list.get(0);

            Date oldStartDate = dates.getStartDate();

            Date oldEndDate = dates.getEndDate();

            // set new dates and save it

            if (null != newStartDate) {

                dates.setStartDate(newStartDate);

            }

            if (null != newEndDate) {

                Calendar calendar = Calendar

                        .getInstance(new Locale("zh", "cn"));

                calendar.setTime(newEndDate);

                calendar.add(Calendar.DATE, 1);

                newEndDate = calendar.getTime();

                dates.setEndDate(newEndDate);

            }

            if (null != partName) {

                dates.setPartnerName(partName);

            } else {

                dates.setPartnerName(null);

            }

            getDataSourceManager().universalSaver(dates);

            Date[] result = new Date[2];

            result[0] = oldStartDate;

            result[1] = oldEndDate;

            return result;

        } catch (Exception ex) {

            ex.printStackTrace();

            return null;

        }

    }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.       选择时间处理期初,本期收入,本期支出等

 

CREATE OR REPLACE VIEW view_class_bank_flow_general AS

( SELECT a.bank_fullname, '期初余额' AS balance_name, sum(a.balance) AS balance

   FROM ( SELECT a.order_number, a.order_type, a.bank_fullname,

                CASE

                    WHEN a.plus_minus_flag = 1 THEN a.cur_paid_amount

                    WHEN a.plus_minus_flag = -1 THEN - a.cur_paid_amount

                    ELSE 0::numeric

                END AS balance,

                CASE

                    WHEN a.plus_minus_flag = 1 THEN '收入'::text

                    WHEN a.plus_minus_flag = -1 THEN '支出'::text

                    ELSE ''::text

                END AS inout_flag

           FROM order_payment_record a

          WHERE a.cur_paid_amount IS NOT NULL AND a.cur_paid_amount <> 0::numeric AND a.bank_fullname::text = ((( SELECT dates.partner_name

                   FROM dates

                  WHERE dates.date_id = 3))::text) AND a.order_date < (( SELECT dates.start_date

                   FROM dates

                  WHERE dates.date_id = 3))

UNION ALL

         SELECT '', '', a.bank_fullname, a.init_amount, '余额'

           FROM bank a

          WHERE a.bank_fullname::text = ((( SELECT dates.partner_name

                   FROM dates

                  WHERE dates.date_id = 3))::text)) a

  GROUP BY a.bank_fullname

UNION ALL

 SELECT a.bank_fullname, '本期支出' AS balance_name, sum(a.balance) AS balance

   FROM ( SELECT a.order_number, a.order_type, a.bank_fullname, a.cur_paid_amount AS balance,

                CASE

                    WHEN a.plus_minus_flag = 1 THEN '收入'::text

                    WHEN a.plus_minus_flag = -1 THEN '支出'::text

                    ELSE ''::text

                END AS inout_flag

           FROM order_payment_record a

          WHERE a.cur_paid_amount IS NOT NULL AND a.cur_paid_amount <> 0::numeric AND a.bank_fullname::text = ((( SELECT dates.partner_name

                   FROM dates

                  WHERE dates.date_id = 3))::text) AND a.order_date >= (( SELECT dates.start_date

                   FROM dates

                  WHERE dates.date_id = 3)) AND a.order_date < (( SELECT dates.end_date

                   FROM dates

                  WHERE dates.date_id = 3))) a

  WHERE a.inout_flag = '支出'::text

  GROUP BY a.bank_fullname)

UNION ALL

 SELECT a.bank_fullname, '本期收入' AS balance_name, sum(a.balance) AS balance

   FROM ( SELECT a.order_number, a.order_type, a.bank_fullname, a.cur_paid_amount AS balance,

                CASE

                    WHEN a.plus_minus_flag = 1 THEN '收入'::text

                    WHEN a.plus_minus_flag = -1 THEN '支出'::text

                    ELSE ''::text

                END AS inout_flag

           FROM order_payment_record a

          WHERE a.cur_paid_amount IS NOT NULL AND a.cur_paid_amount <> 0::numeric AND a.bank_fullname::text = ((( SELECT dates.partner_name

                   FROM dates

                  WHERE dates.date_id = 3))::text) AND a.order_date >= (( SELECT dates.start_date

                   FROM dates

                  WHERE dates.date_id = 3)) AND a.order_date < (( SELECT dates.end_date

                   FROM dates

                  WHERE dates.date_id = 3))) a

  WHERE a.inout_flag = '收入'::text

  GROUP BY a.bank_fullname;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tof21

支持原创

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值