package com.tenwa.lease.app.ebank; import java.util.HashMap; import java.util.List; import java.util.Map; import jbo.app.tenwa.calc.LC_EBANK; import jbo.app.tenwa.calc.LC_EBANK_PROCESS; import jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO; import jbo.sys.USER_INFO; import jbo.voucher.LV_STACTS_CONFIG; import jbo.voucher.LV_VOUCHER_CONFIG; import jbo.voucher.LV_VOUCHER_LOAN; import jbo.voucher.TAX_CODE; import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.jbo.BizObjectManager; import com.amarsoft.are.jbo.BizObjectQuery; import com.amarsoft.are.jbo.JBOException; import com.amarsoft.are.jbo.JBOFactory; import com.amarsoft.are.jbo.JBOTransaction; import com.amarsoft.awe.util.ASResultSet; import com.amarsoft.awe.util.SqlObject; import com.amarsoft.awe.util.Transaction; import com.amarsoft.dict.als.cache.CacheLoaderFactory; import com.amarsoft.dict.als.manage.NameManager; import com.tenwa.comm.util.jboutil.DataOperatorUtil; import com.tenwa.voucher.serviceImp.CreateVoucherServiceImpl; public class EbankUse { private String ebdataid; private String VOUCHERNO; private String SUMMARY; private String userId; public String getVOUCHERNO() { return VOUCHERNO; } public void setVOUCHERNO(String vOUCHERNO) { VOUCHERNO = vOUCHERNO; } public String getSUMMARY() { return SUMMARY; } public void setSUMMARY(String sUMMARY) { SUMMARY = sUMMARY; } public String getEbdataid() { return ebdataid; } public void setEbdataid(String ebdataid) { this.ebdataid = ebdataid; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } /** * 判断网银是否在使用 */ public String isEbankUse(JBOTransaction tx) throws Exception { String sql = "select * from O where ebank_number=:ebankid"; BizObjectManager ebankbom = JBOFactory.getBizObjectManager(LC_EBANK_PROCESS.CLASS_NAME); tx.join(ebankbom); BizObjectQuery boq = ebankbom.createQuery(sql); boq.setParameter("ebankid", this.getEbdataid()); List bolist = boq.getResultList(false); if (bolist.size() != 0) { return "fail"; } return "success"; } /** * 让网银变成废弃 */ public String setEbankAbandon(JBOTransaction tx) throws Exception { String sql = "update O set invalid=:invalid where id=:id"; BizObjectManager ebankbom = JBOFactory.getBizObjectManager(LC_EBANK.CLASS_NAME); tx.join(ebankbom); ebankbom.createQuery(sql).setParameter("invalid", "Y").setParameter("id", this.getEbdataid()).executeUpdate(); return "success"; } /** * 1:导入网银生成凭证 * @param tx * @param userId * @return */ public String createEbankVoucher(JBOTransaction tx,String userId){ Transaction Sqlca = null; String returns="true"; try { Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); String voucherNo = "PZ2018081600000120"; Map param = new HashMap(); BizObjectManager ebankbom = JBOFactory.getBizObjectManager(LC_EBANK.CLASS_NAME); tx.join(ebankbom); // 金额 String fact_money = ""; // 日期 String fact_date = ""; // 银行账号 String ownnumber = ""; // 银行名称 String OWN_BANK = ""; // 本方账户 String OWN_ACCOUNT = ""; // 科目编码 String EBANK_SUBJECTS = ""; // 流水号 String EBANK_SN=""; // 业务类型 String BUSINESS_TYPE=""; // 客商类型 String CUSTOMER_TYPE=""; // 查询新增或者导入的网银 List bolist = ebankbom.createQuery("DEBIT_MONEY IS NULL or DEBIT_MONEY=0.00").getResultList(true); CreateVoucherServiceImpl vs = new CreateVoucherServiceImpl(); String VOUCHER_TYPE = "1";// 凭证分类 金蝶 String userid =userId; if(userid == null || "".equals(userid)) { userid="admin"; } for (BizObject bo : bolist) { fact_money = bo.getAttribute("fact_money").getString(); // 银行名称 OWN_BANK = bo.getAttribute("OWN_BANK").getString(); // 日期 fact_date = bo.getAttribute("fact_date").getString(); // 银行账号 ownnumber = bo.getAttribute("ownacc_number").getString(); // 网银流水号 EBANK_SN=bo.getAttribute("EBANK_SN").getString(); // 本方账户 OWN_ACCOUNT=bo.getAttribute("OWN_ACCOUNT").getString(); // 根据银行名称获取银行科目 BizObject lsc=JBOFactory.createBizObjectQuery(LV_STACTS_CONFIG.CLASS_NAME, "SUBJECTS_NAME='"+OWN_BANK+"'").getSingleResult(false); EBANK_SUBJECTS=lsc.getAttribute("SUBJECTS_CODE").getString(); // 业务类型 BUSINESS_TYPE=bo.getAttribute("BUSINESS_TYPE").getString();; // 客商类型 CUSTOMER_TYPE=bo.getAttribute("CUSTOMER_TYPE").getString();; // BizObject RESULT = JBOFactory.createBizObjectQuery(LB_CONTRACT_INFO.CLASS_NAME,"CONTRACT_NO=:CONTRACT_NO").setParameter("CONTRACT_NO", CONTRACT_NUMBER).getSingleResult(false); // String BUSINESSTYPE= RESULT.getAttribute("BUSINESSTYPE").getString(); // 判断是汽车类还是传统类, 如果是传统, 则生成传统的分录 if("传统".equals(BUSINESS_TYPE)) { voucherNo="PZ2018092500000155"; }else if("汽车类传统".equals(BUSINESS_TYPE)) { voucherNo="PZ2019072000000071"; } // 如果金额小于0, 则为反冲凭证 Map map = new HashMap(); if(Double.parseDouble(fact_money)<0) { // 判断是汽车类还是传统类, 如果是传统, 则生成传统的分录 if("传统".equals(BUSINESS_TYPE)) { voucherNo="PZ2019072000000072"; }else if("汽车类传统".equals(BUSINESS_TYPE)) { voucherNo="PZ2019072000000073"; }else{ voucherNo="PZ2018121800000005"; } } param.put("FACT_MONEY", fact_money); param.put("ACCOUNT_DATE", fact_date); param.put("FACT_DATE", fact_date); param.put("ACC_NUMBER", ownnumber); param.put("EBANK_SN", EBANK_SN); param.put("OWN_ACCOUNT", OWN_ACCOUNT); param.put("EBANK_SUBJECTS", EBANK_SUBJECTS); // 根据客商类型判断现金流编码 if("内部客商".equals(CUSTOMER_TYPE)) { param.put("CASHFLOW", "11112"); }else if("外部客商".equals(CUSTOMER_TYPE)) { param.put("CASHFLOW", "11113"); } param.put("VOUCHERNO",voucherNo); map.put("PROJ_TYPE", "02"); map.put("VOUCHER_NO", voucherNo); BizObject vouch = DataOperatorUtil.getSingleJBO(LV_VOUCHER_CONFIG.CLASS_NAME, map, Sqlca); if (vouch != null) { vs.createVoucher(vouch.getAttribute("id").getString(),vouch.getAttribute("MODULAR_NUMBER").getString(),vouch.getAttribute("OWNED_COMPANY").getString(), "02", VOUCHER_TYPE, userid, param, Sqlca); } bo.setAttributeValue("DEBIT_MONEY", fact_money); ebankbom.saveObject(bo); } Sqlca.commit(); } catch (Exception e) { returns="false"; try { Sqlca.rollback(); } catch (JBOException e1) { e1.printStackTrace(); } e.printStackTrace(); }finally { if(Sqlca!=null) { try { Sqlca.disConnect(); } catch (JBOException e) { e.printStackTrace(); } } } return returns; } /** * 2:网银新增生成凭证 * @param tx * @return */ public String createEbankVoucher2(JBOTransaction tx){ Transaction Sqlca = null; String returns="true"; try { Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); String voucherNo = "PZ2018081600000120"; Map param = new HashMap(); BizObjectManager ebankbom = JBOFactory.getBizObjectManager(LC_EBANK.CLASS_NAME); tx.join(ebankbom); // 金额 String fact_money = ""; // 日期 String fact_date = ""; // 银行账号 String ownnumber = ""; // 银行名称 String OWN_BANK = ""; // 科目编码 String EBANK_SUBJECTS = ""; // 流水号 String EBANK_SN=""; // 本方账户 String OWN_ACCOUNT = ""; // 业务类型 String BUSINESS_TYPE=""; // 客商类型 String CUSTOMER_TYPE=""; // 查询新增或者导入的网银 List bolist = ebankbom.createQuery("DEBIT_MONEY IS NULL or DEBIT_MONEY=0.00").getResultList(true); CreateVoucherServiceImpl vs = new CreateVoucherServiceImpl(); String VOUCHER_TYPE = "1";// 凭证分类 金蝶 String userid =userId; if(userid == null || "".equals(userid)) { userid="admin"; } for (BizObject bo : bolist) { fact_money = bo.getAttribute("fact_money").getString(); // 银行名称 OWN_BANK = bo.getAttribute("OWN_BANK").getString(); // 日期 fact_date = bo.getAttribute("fact_date").getString(); // 银行账号 ownnumber = bo.getAttribute("ownacc_number").getString(); // 网银流水号 EBANK_SN=bo.getAttribute("EBANK_SN").getString(); // 本方账户 OWN_ACCOUNT=bo.getAttribute("OWN_ACCOUNT").getString(); // 根据银行名称获取银行科目 BizObject lsc=JBOFactory.createBizObjectQuery(LV_STACTS_CONFIG.CLASS_NAME, "SUBJECTS_NAME='"+OWN_BANK+"'").getSingleResult(false); EBANK_SUBJECTS=lsc.getAttribute("SUBJECTS_CODE").getString(); // 业务类型 BUSINESS_TYPE=bo.getAttribute("BUSINESS_TYPE").getString();; // 客商类型 CUSTOMER_TYPE=bo.getAttribute("CUSTOMER_TYPE").getString();; // BizObject RESULT = JBOFactory.createBizObjectQuery(LB_CONTRACT_INFO.CLASS_NAME,"CONTRACT_NO=:CONTRACT_NO").setParameter("CONTRACT_NO", CONTRACT_NUMBER).getSingleResult(false); // String BUSINESSTYPE= RESULT.getAttribute("BUSINESSTYPE").getString(); // 判断是汽车类还是传统类, 如果是传统, 则生成传统的分录 if("传统".equals(BUSINESS_TYPE)) { voucherNo="PZ2018092500000155"; }else if("汽车类传统".equals(BUSINESS_TYPE)) { voucherNo="PZ2019072000000071"; } // 如果金额小于0, 则为反冲凭证 Map map = new HashMap(); if(Double.parseDouble(fact_money)<0) { // 判断是汽车类还是传统类, 如果是传统, 则生成传统的分录 if("传统".equals(BUSINESS_TYPE)) { voucherNo="PZ2019072000000072"; }else if("汽车类传统".equals(BUSINESS_TYPE)) { voucherNo="PZ2019072000000073"; }else{ voucherNo="PZ2018121800000005"; } } param.put("FACT_MONEY", fact_money); param.put("ACCOUNT_DATE", fact_date); param.put("FACT_DATE", fact_date); param.put("ACC_NUMBER", ownnumber); param.put("EBANK_SN", EBANK_SN); param.put("OWN_ACCOUNT", OWN_ACCOUNT); param.put("EBANK_SUBJECTS", EBANK_SUBJECTS); // 根据客商类型判断现金流编码 if("内部客商".equals(CUSTOMER_TYPE)) { param.put("CASHFLOW", "11112"); }else if("外部客商".equals(CUSTOMER_TYPE)) { param.put("CASHFLOW", "11113"); } param.put("VOUCHERNO",voucherNo); map.put("PROJ_TYPE", "02"); map.put("VOUCHER_NO", voucherNo); BizObject vouch = DataOperatorUtil.getSingleJBO(LV_VOUCHER_CONFIG.CLASS_NAME, map, Sqlca); if (vouch != null) { vs.createVoucher(vouch.getAttribute("id").getString(),vouch.getAttribute("MODULAR_NUMBER").getString(),vouch.getAttribute("OWNED_COMPANY").getString(), "02", VOUCHER_TYPE, userid, param, Sqlca); } bo.setAttributeValue("DEBIT_MONEY", fact_money); ebankbom.saveObject(bo); } Sqlca.commit(); } catch (Exception e) { returns="false"; try { Sqlca.rollback(); } catch (JBOException e1) { e1.printStackTrace(); } e.printStackTrace(); }finally { if(Sqlca!=null) { try { Sqlca.disConnect(); } catch (JBOException e) { e.printStackTrace(); } } } return returns; } /** * 合同到期申请-将多余还款确认为收入/将多余还款退回 * @param tx * @throws Exception */ public String createLeftEbankIncomeVoucher(JBOTransaction tx) { Transaction Sqlca = null; String sMessage = ""; try { Sqlca = Transaction.createTransaction(CacheLoaderFactory.getDataSource()); Map map = new HashMap(); Map param = new HashMap(); double mon =0; // 获取页面传入参数 String VOUCHERNO = this.getVOUCHERNO(); String ID = this.getEbdataid(); // 通过传入id查询所需数据 map.put("ID", ID); String sql1 = "SELECT ROUND((getTax(LCI.LEAS_FORM,'租金', LCCT.START_DATE) - 1) * 100,0) AS TAX_NUM,LE.MAYOPE_MONEY AS MONEY,ROUND(LE.MAYOPE_MONEY / getTax(LCI.LEAS_FORM,'租金', LCCT.START_DATE),2) AS MONEYNOTAX,LE.MAYOPE_MONEY - ROUND(LE.MAYOPE_MONEY / getTax(LCI.LEAS_FORM,'租金', LCCT.START_DATE),2) AS TAX,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS ACCOUNT_DATE,DATE_FORMAT(SYSDATE(), '%Y/%m/%d') AS FACT_DATE,LE.OWNACC_NUMBER AS ACC_NUMBER,LE.EBANK_SN,CI.CUSTOMER_NUM AS CUSTOMERID,CI.CUSTOMERNAME,LCI.ID AS CONTRACT_ID,LCI.CONTRACT_NUMBER FROM LC_EBANK LE LEFT JOIN (SELECT EBANK_NUMBER,MAX(CONTRACT_ID) AS CONTRACT_ID FROM LC_RENT_INCOME GROUP BY EBANK_NUMBER) LRI ON LRI.EBANK_NUMBER = LE.ID LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRI.CONTRACT_ID LEFT JOIN LC_CALC_CONDITION LCCT ON LCCT.CONTRACT_ID=LCI.ID LEFT JOIN LB_UNION_LESSEE LUL ON LUL.CONTRACT_ID = LCI.ID LEFT JOIN CUSTOMER_INFO CI ON CI.CUSTOMERID = LUL.CUSTOMER_ID WHERE LE.ID = :ID AND LUL.IS_MAIN = 'Y' "; List>dataList = DataOperatorUtil.getDataBySql(Sqlca, sql1, map); // 获取所需数据 String VOUCHER_TYPE = "1";// 凭证分类 金蝶 String userid = userId; if(userid == null || "".equals(userid)) { userid="admin"; } for (Map jbo : dataList) { String MONEY = jbo.get("MONEY").toString(); if ("".equals(MONEY) || MONEY == null)MONEY = "0.00"; mon = Double.parseDouble(MONEY); if (mon > 0) { String MONEYNOTAX = jbo.get("MONEYNOTAX").toString(); String TAX = jbo.get("TAX").toString(); String ACCOUNT_DATE = jbo.get("ACCOUNT_DATE").toString(); String FACT_DATE = jbo.get("FACT_DATE").toString(); String ACC_NUMBER = jbo.get("ACC_NUMBER").toString(); String EBANK_SN = jbo.get("EBANK_SN").toString(); String CUSTOMERID = jbo.get("CUSTOMERID"); String CUSTOMERNAME = jbo.get("CUSTOMERNAME"); String TAX_NUM = jbo.get("TAX_NUM"); String CONTRACT_ID = jbo.get("CONTRACT_ID"); String CONTRACT_NUMBER = jbo.get("CONTRACT_NUMBER"); // 通过税率获取编码 BizObject TAX_CODES=null; if(TAX_NUM!=null && !"".equals(TAX_NUM)) { TAX_CODES=JBOFactory.createBizObjectQuery(TAX_CODE.CLASS_NAME,"TAX_NUMBER='"+TAX_NUM+"'").getSingleResult(false); } //NameManager.getCustomerName(CUSTOMERID); // 将数据封装如param中 param.put("FACT_MONEY", MONEY); param.put("INTERESTNOTAX", MONEYNOTAX); param.put("TAX", TAX); param.put("ACCOUNT_DATE", ACCOUNT_DATE); param.put("FACT_DATE", FACT_DATE); param.put("ACC_NUMBER", ACC_NUMBER); param.put("CONTRACT_ID", CONTRACT_ID); param.put("CONTRACT_NUMBER", CONTRACT_NUMBER); param.put("EBANK_SN", EBANK_SN); param.put("CUSTID", CUSTOMERID); param.put("CUSTNAME", CUSTOMERNAME); param.put("VOUCHERNO", VOUCHERNO); if(TAX_CODES!=null) { param.put("TAX_CODE",TAX_CODES.getAttribute("TAX_CODES").getString()); } // 通过凭证编号获取对应编号的凭证信息 map.clear(); map.put("VOUCHER_NO", VOUCHERNO); BizObject voucher = DataOperatorUtil.getSingleJBO(LV_VOUCHER_CONFIG.CLASS_NAME, map, Sqlca); // 如果有有此凭证, 生成当前凭证 CreateVoucherServiceImpl vs = new CreateVoucherServiceImpl(); if (voucher != null) { vs.createVoucher(voucher.getAttribute("id").getString(),voucher.getAttribute("MODULAR_NUMBER").getString(),voucher.getAttribute("OWNED_COMPANY").getString(), "02", VOUCHER_TYPE, userid, param,Sqlca); } } } if(dataList==null || dataList.isEmpty()){ sMessage = "false1";// 网银未使用 }else if((dataList!=null || !dataList.isEmpty()) && mon==0){ sMessage = "false2";// 可核销金额为0 }else if((dataList!=null || !dataList.isEmpty()) && mon>0){ // 获取参数, 按需修改数据 String SUMMARY = this.getSUMMARY(); // 执行确认收入时, 可核销金额转入已核销金额 if("PZ2018072100000052".equals(VOUCHERNO)) { String sql2="UPDATE LC_EBANK SET HAD_MONEY=(MAYOPE_MONEY+HAD_MONEY),MAYOPE_MONEY='0.00',SUMMARY=CASE WHEN (SUMMARY IS NULL OR SUMMARY ='') THEN '"+SUMMARY+"' ELSE CONCAT_WS(',',SUMMARY,'"+ SUMMARY + "') END WHERE ID='" + ID + "'"; SqlObject s2= new SqlObject(sql2); Sqlca.executeSQL(s2); }else if("PZ2018072100000051".equals(VOUCHERNO)) {// 执行确认退回时, 可核销金额转入非业务金额 String sql3="UPDATE LC_EBANK SET NOWITH_MONEY=(MAYOPE_MONEY+NOWITH_MONEY),MAYOPE_MONEY='0.00',SUMMARY=CASE WHEN (SUMMARY IS NULL OR SUMMARY ='') THEN '"+SUMMARY+"' ELSE CONCAT_WS(',',SUMMARY,'"+ SUMMARY + "') END WHERE ID='" + ID + "'"; SqlObject s3= new SqlObject(sql3); Sqlca.executeSQL(s3); } sMessage = "true"; } Sqlca.commit(); } catch (Exception e) { try { sMessage="false"; Sqlca.rollback(); } catch (JBOException e1) { e1.printStackTrace(); } e.printStackTrace(); }finally { if(Sqlca!=null) { try { Sqlca.disConnect(); } catch (JBOException e) { e.printStackTrace(); } } } return sMessage; } }