Commit 6c0ff312 authored by panhong18943's avatar panhong18943

汇丰银企直连

parent 93dc6f80
...@@ -113,6 +113,12 @@ ...@@ -113,6 +113,12 @@
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.32</version>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>com.hand.hls</groupId> <groupId>com.hand.hls</groupId>
<artifactId>leaf-core-db</artifactId> <artifactId>leaf-core-db</artifactId>
...@@ -200,6 +206,16 @@ ...@@ -200,6 +206,16 @@
<artifactId>activation</artifactId> <artifactId>activation</artifactId>
<version>1.1</version> <version>1.1</version>
</dependency> </dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.14</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
<finalName>hlcm</finalName> <finalName>hlcm</finalName>
......
package com.hand.hsbc;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;
public class AuthTypeMode {
public String authType;
public String authValue;
public AuthTypeMode(String authType, String authValue) {
this.authType = authType;
this.authValue = authValue;
}
String getAuthType() {
return authType;
}
String getAuthValue() {
return authValue;
}
public static String getProperties(String item) {
String value = "";
System.out.println("连接成功建立333" + item);
System.out.println("连接成功建立444" + Thread.currentThread().getContextClassLoader().getResource("").getPath());
Properties prop = new Properties();
try {
//
InputStream in = new BufferedInputStream(new FileInputStream(Thread
.currentThread().getContextClassLoader().getResource("")
.getPath()
+ "/paraconfig.properties"));
//
prop.load(in);
value = prop.getProperty(item);
in.close();
} catch (Exception e) {
}
return value;
}
}
package com.hand.hsbc;
import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Namespace;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class SaxReaderXml {
/**
* <p>
* 解析汇丰银行确认文件1,确认文件1无误则有2
* </p>
*
* @author keyouyuan16914
* @version 1.0.0
* @date 2020/01/18
*/
public static String parseacKnowledge1(String path) {
path = "C:\\Users\\User\\Desktop\\testfiledir\\down_confirm\\error1.xml";
SAXReader reader = new SAXReader();
Document document;
String error_msg = "";
try {
document = reader.read(new File(path));
Element root = document.getRootElement();
Element Body = root.element("CstmrPmtStsRpt");
List<Element> OrgnlGrpInfAndSts = Body.element("OrgnlGrpInfAndSts").elements();
for (int i = 0; i < OrgnlGrpInfAndSts.size(); i++) {
Element item = OrgnlGrpInfAndSts.get(i);
String GrpSts = null;
if (item.getName() == "GrpSts") {
GrpSts = item.getTextTrim();
/* System.out.println(GrpSts); */
if ("".equals(GrpSts)) {
GrpSts = null;
}
}
if (GrpSts == "ACCP") {
return "SUCCESS";
} else {
if (item.getName() == "StsRsnInf") {
List<Element> StsRsnInfs = item.elements();
for (int j = 0; j < StsRsnInfs.size(); j++) {
Element item2 = StsRsnInfs.get(j);
if (item2.getName() == "AddtlInf") {
error_msg += item2.getTextTrim();
}
}
}
/* System.out.println(error_msg); */
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
return error_msg;
}
/**
* <p>
* 解析汇丰银行确认文件2
* </p>
*
* @author keyouyuan16914
* @version 1.0.0
* @date 2020/01/18
*/
public static String parseacKnowledge2(String path) {
path = "C:\\Users\\User\\Desktop\\testfiledir\\down_confirm\\正确确认文件2.xml";
SAXReader reader = new SAXReader();
Document document;
String error_msg = "";
try {
document = reader.read(new File(path));
Element root = document.getRootElement();
Element Body = root.element("CstmrPmtStsRpt");
List<Element> OrgnlGrpInfAndSts = Body.element("OrgnlPmtInfAndSts").elements();
for (int i = 0; i < OrgnlGrpInfAndSts.size(); i++) {
Element item = OrgnlGrpInfAndSts.get(i);
String PmtInfSts = null;
if (item.getName() == "PmtInfSts") {
PmtInfSts = item.getTextTrim();
/* System.out.println(GrpSts); */
if ("".equals(PmtInfSts)) {
PmtInfSts = null;
}
}
if (PmtInfSts == "ACCP") {
return "SUCCESS";
} else {
// 此处需要进行判断
/*
* if(item.getName()=="StsRsnInf") { List<Element> StsRsnInfs=item.elements();
* for (int j=0; j<StsRsnInfs.size(); j++) { Element item2 = StsRsnInfs.get(j);
* if(item2.getName()=="AddtlInf"){ error_msg+= item2.getTextTrim();
*
* } }
*
* }
*/
/* System.out.println(error_msg); */
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
return error_msg;
}
/**
* <p>
* 解析汇丰银行日中文件2
* </p>
*
* @author keyouyuan16914
* @version 1.0.0
* @date 2020/01/18
*/
public static String parseDayMidFile(String path, String cdValue) {
cdValue="ITBD";
path = "C:\\Users\\User\\Desktop\\testfiledir\\down_day_mid_result\\testMid.xml";
SAXReader reader = new SAXReader();
Document document;
String error_msg = "";
try {
document = reader.read(new File(path));
Element root = document.getRootElement();
Element Body = root.element("BkToCstmrAcctRpt");
Element Rpt = Body.element("Rpt");
List<Element> Rpts = Rpt.elements();
System.out.println(Rpts.size());
for (int i = 0; i < Rpts.size(); i++) {
Element item = Rpts.get(i);
String amt = null;
if (item.getName() == "Bal") {
System.out.println(item.element("Tp").getName());
System.out.println(item.element("Tp").element("CdOrPrtry").getName());
System.out.println(item.element("Tp").element("CdOrPrtry").element("Cd").getName());
System.out.println(item.element("Tp").element("CdOrPrtry").element("Cd").getTextTrim());
String ss=item.element("Tp").element("CdOrPrtry").element("Cd").getTextTrim();
System.out.println("1111");
System.out.println(ss.toString());
if(ss.toString().equals(cdValue)) {
System.out.println("2222");
System.out.println(item.element("Amt").getTextTrim());
}
}
if (amt == "ACCP") {
return "SUCCESS";
} else {
// 此处需要进行判断
/*
* if(item.getName()=="StsRsnInf") { List<Element> StsRsnInfs=item.elements();
* for (int j=0; j<StsRsnInfs.size(); j++) { Element item2 = StsRsnInfs.get(j);
* if(item2.getName()=="AddtlInf"){ error_msg+= item2.getTextTrim();
*
* } }
*
* }
*/
/* System.out.println(error_msg); */
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
return error_msg;
}
public static String xmlToString(String xmlFileName){
SAXReader saxReader=new SAXReader();
org.dom4j.Document document;
String xmlString="";
try {
document = saxReader.read(new File(xmlFileName));
xmlString=document.asXML();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
xmlString="";
}
//String xmlString = document.asXML();
return xmlString;
}
public static void main(String[] args) throws Exception {
System.out.println(xmlToString("C:\\Users\\User\\Desktop\\testfiledir\\down_confirm\\ACK1PSRV3.PC000018926.20201231113053992299.20210121114031002.XML"));
}
}
package com.hand.hsbc;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.Assert;
import java.io.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Vector;
/**
* <p>
* Sftp工具类
* </p>
*
* @author huqingniu
* @version 1.0.0
* @date 2018/12/24
*/
public class SftpTool {
public static final Logger logger = LoggerFactory.getLogger(SftpTool.class);
private String host;
private String username;
private int port;
public SftpTool(String host, String username, int port) {
this.host = host;
this.username = username;
this.port = port;
}
/**
* 登陆sftp
*
* @param authTypeMode 认证方式
* @return 登陆信息
*/
public Map<String, Object> loginIn(AuthTypeMode authTypeMode) {
// 解决JSch日志打印问题
/* JSch.setLogger(new SettleJschLogPrint()); */
System.setProperty("java.net.preferIPv4Stack", "true");
try {
ChannelSftp sftp = null;
Session session = null;
JSch jsch = new JSch();
/* logger.info("获取SFTP服务器连接username:{},host:{},port:{}",username,host,port); */
session = jsch.getSession(username, host, port);
logger.info("连接成功建立");
System.out.println("连接成功建立" + "333333");
System.out.println("连接成功建立" + username);
System.out.println("连接成功建立" + host);
System.out.println("连接成功建立" + port);
if (AuthTypeEnum.RSA.getCode().equals(authTypeMode.getAuthType())) {
jsch.addIdentity(authTypeMode.getAuthValue(), "");
} else {
session.setPassword(authTypeMode.getAuthValue());
}
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
sshConfig.put("PreferredAuthentications", "publickey,gssapi-with-mic,keyboard-interactive,password");
session.setConfig(sshConfig);
session.connect();
logger.info("用户" + username + "成功登陆");
System.out.println("成功登陆" + "333333");
Channel channel = session.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
HashMap<String, Object> loginInfo = new HashMap<>();
loginInfo.put("sftp", sftp);
loginInfo.put("session", session);
return loginInfo;
} catch (JSchException e) {
throw new RuntimeException("user login SFTP server occur exception:" + e);
}
}
/**
* 退出登陆
*
* @param sftp sftp对象
* @param session session对象
*/
public void loginOut(ChannelSftp sftp, Session session) {
try {
if (null != sftp && sftp.isConnected()) {
sftp.disconnect();
}
if (null != session && session.isConnected()) {
session.disconnect();
}
} catch (Exception e) {
logger.warn("用户退出SFTP服务器出现异常:" + e);
}
}
/**
* 下载文件
*
* @param downloadFilePath 要下载的文件所在绝对路径
* @param downloadFileName 要下载的文件名(sftp服务器上的文件名)
* @param saveFile 文件存放位置(文件所在绝对路径)
* @param authTypeMode 用户认证方式
*/
/*public String download(String downloadFilePath, String downloadFileName, String saveFile, AuthTypeMode authTypeMode)
throws Exception {
Assert.notNull(downloadFilePath, "download file absolute path is not null");
Assert.notNull(downloadFileName, "download file is not null");
Assert.notNull(saveFile, "save file location is not null");
Assert.notNull(authTypeMode, "auth type way is not null");
OutputStream outputStream = null;
ChannelSftp sftp = null;
Session session = null;
try {
Map<String, Object> loginInfo = loginIn(authTypeMode);
sftp = (ChannelSftp) loginInfo.get("sftp");
session = (Session) loginInfo.get("session");
logger.info("待下载文件地址为:" + downloadFilePath + ",文件名为:" + downloadFileName + ",认证方式:"
+ authTypeMode.getAuthValue());
sftp.cd(downloadFilePath);
*//* sftp.ls(downloadFilePath); *//*
Vector vector = sftp.ls(downloadFilePath);
Iterator iterator = vector.iterator();
String returnFileName ="";
String conn="";
while (iterator.hasNext()) {
ChannelSftp.LsEntry file = (ChannelSftp.LsEntry) iterator.next();
// 文件名称
String fileName = file.getFilename();
if (fileName.indexOf(".XML") != -1) {
if (returnFileName!="") {
conn=";";
}
outputStream = new FileOutputStream(saveFile + "\\" + fileName);
System.out.println(fileName + "fileName");
sftp.get(fileName, outputStream);
returnFileName=returnFileName+conn+fileName;
}
}
System.out.println("下载成功" + "333333");
return returnFileName;
*//*
* outputStream = new FileOutputStream(saveFile); sftp.get(downloadFileName,
* outputStream);
*//*
*//* logger.info("文件下载完成!"); *//*
} finally {
if (null != outputStream) {
outputStream.close();
}
loginOut(sftp, session);
}
}*/
/**
* 下载文件
* CAMT52V2 日中对账单按照付款账号下载
* CAMT53V2 日间对账单按照付款账号下载
* ACK1PSRV3 ACK1文件按照02下载
* ACK2PSRV3 ACK2文件按照02下载
* ACKMT999 ACK3 ACK4只有建机系统下载
* @param downloadFilePath 要下载的文件所在绝对路径
* @param systemflag 区分汽车系统和建机系统,01:汽车系统;02:建机系统
* @param accountnumber 付款账号
* @param saveFile 文件存放位置(文件所在绝对路径)
* @param authTypeMode 用户认证方式
*/
public String downloaddiff(String downloadFilePath, String systemflag, String accountnumber, String saveFile, AuthTypeMode authTypeMode)
throws Exception {
Assert.notNull(downloadFilePath, "download file absolute path is not null");
Assert.notNull(saveFile, "save file location is not null");
Assert.notNull(authTypeMode, "auth type way is not null");
OutputStream outputStream = null;
ChannelSftp sftp = null;
Session session = null;
try {
Map<String, Object> loginInfo = loginIn(authTypeMode);
sftp = (ChannelSftp) loginInfo.get("sftp");
session = (Session) loginInfo.get("session");
sftp.cd(downloadFilePath);
/* sftp.ls(downloadFilePath); */
Vector vector = sftp.ls(downloadFilePath);
Iterator iterator = vector.iterator();
String returnFileName ="";
String conn="";
String downflag = "N";
while (iterator.hasNext()) {
ChannelSftp.LsEntry file = (ChannelSftp.LsEntry) iterator.next();
// 文件名称
String fileName = file.getFilename();
if (fileName.indexOf(".XML") != -1) {
if (fileName.indexOf("ACK1PSRV3") != -1 || fileName.indexOf("ACK2PSRV3") != -1) {
String reqsn = fileName.substring(fileName.indexOf(".", fileName.indexOf(".")+1) + 1,fileName.indexOf(".", fileName.indexOf(".", fileName.indexOf(".")+1)+1));
if (reqsn.substring(reqsn.length()-2).equals(systemflag)){
downflag = "Y";
}
}else if(fileName.indexOf("CAMT52V2") != -1 || fileName.indexOf("CAMT53V2") != -1){
String accountno = fileName.substring(fileName.indexOf(".", fileName.indexOf(".")+1) + 1,fileName.indexOf(".", fileName.indexOf(".", fileName.indexOf(".")+1)+1));
if (accountno.equals(accountnumber)){
downflag = "Y";
}
}else{
downflag = "Y";
}
if (downflag.equals("Y")){
if (returnFileName!="") {
conn=";";
}
outputStream = new FileOutputStream(saveFile + "\\" + fileName);
System.out.println(fileName + "fileName");
sftp.get(fileName, outputStream);
returnFileName=returnFileName+conn+fileName;
}
downflag = "N";
}
}
System.out.println("下载成功" + "333333");
return returnFileName;
/*
* outputStream = new FileOutputStream(saveFile); sftp.get(downloadFileName,
* outputStream);
*/
/* logger.info("文件下载完成!"); */
} finally {
if (null != outputStream) {
outputStream.close();
}
loginOut(sftp, session);
}
}
/**
* 上传文件
*
* @param uploadPath 上传SFTP完整路径
* @param uploadFile 上传文件(完整路径)
* @param authTypeMode 认证方式
*/
public String upload(String uploadPath, String uploadFile, AuthTypeMode authTypeMode) throws Exception {
Assert.notNull(uploadPath, "upload path is not null");
Assert.notNull(uploadFile, "upload file is not null");
Assert.notNull(authTypeMode, "auth type way is not null");
InputStream inputStream = null;
ChannelSftp sftp = null;
Session session = null;
try {
Map<String, Object> loginInfo = loginIn(authTypeMode);
sftp = (ChannelSftp) loginInfo.get("sftp");
session = (Session) loginInfo.get("session");
logger.info("待上传文件为:" + uploadFile + ",上传SFTP服务器路径:" + uploadPath + ",认证方式:" + authTypeMode.getAuthValue());
File file = new File(uploadFile);
inputStream = new FileInputStream(file);
try {
sftp.cd(uploadPath);
} catch (SftpException e) {
return e.getMessage();
/*
* logger.error("SFTP器服务存放文件路径不存在");
*
* throw new RuntimeException("upload path is not exist");
*/
}
sftp.put(inputStream, file.getName());
System.out.println("上传文件成功" + "333333");
logger.info("上传文件成功!");
return "UPLOAD_SUCCESS";
} finally {
if (null != inputStream) {
inputStream.close();
}
loginOut(sftp, session);
}
}
/**
* authType = PASSWORD,authValue = password authType = rsa,authValue = rsa文件路径
*/
/*
* class AuthTypeMode{ private String authType;
*
* private String authValue;
*
* AuthTypeMode(String authType, String authValue){ this.authType = authType;
* this.authValue = authValue; }
*
* String getAuthType(){ return authType; }
*
* String getAuthValue(){ return authValue; } }
*/
/**
* 在slf4j日志框架里打印JSch日志
*/
/*
* class SettleJschLogPrint implements com.jcraft.jsch.Logger {
*
* @Override public boolean isEnabled(int i) { return true; }
*
* @Override public void log(int i, String s) { logger.info(s); } }
*/
enum AuthTypeEnum {
PASSWORD("PASSWORD", "密码认证"),
RSA("RSA", "rsa密钥认证");
private String code;
private String desc;
AuthTypeEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
public String getCode() {
return this.code;
}
}
public static void main(String[] args) throws Exception {
// test
SftpTool sftpTool = new SftpTool("ecom-sftp.fgcn-pprd.hsbc.com","PC000018926_19960", 10022);
//sftpTool.upload("\\", "C:\\Users\\User\\Desktop\\testfiledir\\upload\\20201231113053992298.xml", new AuthTypeMode(AuthTypeEnum.RSA.getCode(),"C:\\Users\\User\\Desktop\\hsbstestnew"));
//sftpTool.download("\\", "", "C:\\Users\\User\\Desktop\\testfiledir\\down_confirm\\", new AuthTypeMode(AuthTypeEnum.RSA.getCode(),"C:\\Users\\User\\Desktop\\hsbstestnew"));
}
}
<?xml version="1.0" encoding="UTF-8"?>
<bm:model xmlns:bm="http://www.leaf-framework.org/schema/bm">
<bm:operations>
<bm:operation name="query">
<bm:query-sql><![CDATA[
SELECT
*
FROM
(SELECT
t1.bank_account_id,
t1.bank_account_code,
t3.bank_short_name,
t2.bank_branch_name,
t1.bank_account_name,
t1.bank_account_num,
t3.bank_code
FROM
csh_bank_account t1,
csh_bank_branch t2,
csh_bank t3
WHERE
t1.bank_branch_id = t2.bank_branch_id AND
t2.bank_id = t3.bank_id AND
t1.enabled_flag = 'Y' AND
t2.enabled_flag = 'Y' AND
t3.enabled_flag = 'Y'
) v #WHERE_CLAUSE#
]]></bm:query-sql>
</bm:operation>
</bm:operations>
<bm:fields>
<bm:field name="bank_account_id" databaseType="NUMBER" datatype="java.lang.Long"/>
<bm:field name="bank_account_code" databaseType="VARCHAR2" datatype="java.lang.String" displayWidth="100" forDisplay="true" prompt="账户代码"/>
<bm:field name="bank_short_name" databaseType="VARCHAR2" datatype="java.lang.String" displayWidth="100" forDisplay="true" forQuery="true" prompt="银行简称" queryWidth="100"/>
<bm:field name="bank_branch_name" databaseType="VARCHAR2" datatype="java.lang.String" displayWidth="100" forDisplay="true" forQuery="true" prompt="分行名称" queryWidth="100"/>
<bm:field name="bank_account_name" databaseType="VARCHAR2" datatype="java.lang.String" displayWidth="100" forDisplay="true" prompt="账户名"/>
<bm:field name="bank_account_num" databaseType="VARCHAR2" datatype="java.lang.String" displayWidth="100" forDisplay="true" prompt="银行账号"/>
</bm:fields>
<bm:query-fields>
<bm:query-field name="bank_short_name" queryExpression="v.bank_short_name like ${@bank_short_name}"/>
<bm:query-field name="bank_branch_name" queryExpression="v.bank_branch_name like ${@bank_branch_name}"/>
</bm:query-fields>
<bm:data-filters>
<bm:data-filter enforceOperations="query" expression="v.bank_code IN ('019')"/>
</bm:data-filters>
</bm:model>
<?xml version="1.0" encoding="UTF-8"?>
<bm:model xmlns:bm="http://www.leaf-framework.org/schema/bm">
<bm:operations>
<bm:operation name="delete">
<bm:update-sql><![CDATA[
delete from hl_hsbc_doc_temp t where t.session_id = ${/session/@session_id}
]]></bm:update-sql>
</bm:operation>
<bm:operation name="insert">
<bm:update-sql><![CDATA[
begin
hl_hsbc_interface_pkg.insert_doc_temp(
p_session_id=>${/session/@session_id},
p_payment_req_ln_id=>${@payment_req_ln_id},
p_payment_req_id=>${@payment_req_id},
p_tranamount =>${@unpaid_amount},
p_user_id=>${/session/@user_id},
p_button_id => ${/parameter/@button_id},
p_division => '70'
);
end;
]]></bm:update-sql>
</bm:operation>
<bm:operation name="update">
<bm:update-sql><![CDATA[
begin
hl_hsbc_interface_pkg.create_batch(p_session_id => ${/session/@session_id},
p_bank_account_id => ${@bank_account_id},
p_user_id => ${/session/@user_id});
end;
]]></bm:update-sql>
</bm:operation>
</bm:operations>
</bm:model>
<?xml version="1.0" encoding="UTF-8"?>
<bm:model xmlns:bm="http://www.leaf-framework.org/schema/bm" alias="t1">
<bm:operations>
<bm:operation name="query">
<bm:query-sql><![CDATA[
select decode(count(1), 0, 'N', 'Y') as flag
from (select u.user_id id
from sys_user u
where u.user_id = ${/session/@user_id}
and u.user_name in ('XUEJINGYAN','WUYING','KATO','HAND'))
]]></bm:query-sql>
</bm:operation>
</bm:operations>
</bm:model>
<?xml version="1.0" encoding="UTF-8"?>
<bm:model xmlns:bm="http://www.leaf-framework.org/schema/bm">
<bm:fields>
<bm:field name="reqsn" databaseType="VARCHAR2" datatype="java.lang.String"/>
</bm:fields>
<bm:operations>
<bm:operation name="delete">
<bm:update-sql><![CDATA[
delete from HL_HSBC_BATCH_TEMP t where t.session_id = ${/session/@session_id}
]]></bm:update-sql>
</bm:operation>
<bm:operation name="insert">
<bm:update-sql><![CDATA[
begin
hl_hsbc_interface_pkg.init_hl_hsbc_batch_temp(
p_session_id=> ${/session/@session_id},
p_reqsn=>${@reqsn},
p_user_id => '-1');
end;
]]></bm:update-sql>
</bm:operation>
<bm:operation name="execute">
<bm:update-sql><![CDATA[
begin
hl_hsbc_interface_pkg.init_hl_hsbc_batch_temp(
p_session_id=> ${/session/@session_id},
p_reqsn=>${@reqsn},
p_user_id => '-1');
end;
]]></bm:update-sql>
</bm:operation>
<bm:operation name="query">
<bm:query-sql><![CDATA[
select t2.reqsn
from hl_hsbc_paying_batch t2
where t2.status = 'SEND_MID'
order by 1
]]></bm:query-sql>
</bm:operation>
</bm:operations>
</bm:model>
<?xml version="1.0" encoding="UTF-8"?>
<bm:model xmlns:bm="http://www.leaf-framework.org/schema/bm">
<bm:fields>
<bm:field name="log_id" databaseType="NUMBER" datatype="java.lang.Long"/>
</bm:fields>
<bm:operations>
<bm:operation name="query">
<bm:query-sql><![CDATA[
select hl_hsbc_interface_log_s.nextval as log_id from dual
]]></bm:query-sql>
</bm:operation>
<bm:operation name="insert">
<bm:query-sql><![CDATA[
BEGIN
hl_hsbc_interface_pkg.insert_log(
p_log_id => ${@log_id},
p_interface_code=> ${@interface_code},
p_reqsn => ${@reqsn},
p_request => ${@request},
p_send_return_code => ${@send_return_code},
p_user_id => ${/session/@user_id}
);
END;
]]></bm:query-sql>
</bm:operation>
</bm:operations>
</bm:model>
<?xml version="1.0" encoding="UTF-8"?>
<bm:model xmlns:bm="http://www.leaf-framework.org/schema/bm">
<bm:operations>
<bm:operation name="query">
<bm:query-sql><![CDATA[
select hl_hsbc_interface_pkg.get_HSBC_content(${@reqsn}) xml_content from dual
]]></bm:query-sql>
</bm:operation>
</bm:operations>
<bm:fields>
<bm:field name="xml_content" databaseType="CLOB" datatype="java.lang.String"/>
</bm:fields>
</bm:model>
<?xml version="1.0" encoding="UTF-8"?>
<bm:model xmlns:bm="http://www.leaf-framework.org/schema/bm">
<bm:operations>
<bm:operation name="delete">
<bm:update-sql><![CDATA[
BEGIN
hl_hsbc_interface_pkg.close_paying_batch(
p_reqsn => ${@reqsn},
p_bank_item => ${@bank_item},
p_user_id => ${/session/@user_id}
);
END;
]]></bm:update-sql>
</bm:operation>
</bm:operations>
</bm:model>
<?xml version="1.0" encoding="UTF-8"?>
<bm:model xmlns:bm="http://www.leaf-framework.org/schema/bm">
<bm:operations>
<bm:operation name="execute">
<bm:update-sql><![CDATA[
begin
hl_hsbc_interface_pkg.change_to_manual_pay(p_reqsn=>${@reqsn},
p_bank_item=>${@bank_item},
p_user_id => ${/session/@user_id});
end;
]]></bm:update-sql>
</bm:operation>
</bm:operations>
</bm:model>
<?xml version="1.0" encoding="UTF-8"?>
<bm:model xmlns:bm="http://www.leaf-framework.org/schema/bm">
<bm:operations>
<bm:operation name="update">
<bm:update-sql><![CDATA[
begin
hl_hsbc_interface_pkg.update_upload_file(
p_reqsn=> ${@reqsn},
p_upload_msg=> ${@upload_msg},
p_user_id => '-1');
end;
]]></bm:update-sql>
</bm:operation>
</bm:operations>
<bm:fields>
<bm:field name="server_id" databaseType="VARCHAR2" datatype="java.lang.String"/>
<bm:field name="server_port" databaseType="VARCHAR2" datatype="java.lang.String"/>
<bm:field name="request_clob" databaseType="CLOB" datatype="java.lang.String"/>
</bm:fields>
</bm:model>
<?xml version="1.0" encoding="UTF-8"?>
<bm:model xmlns:bm="http://www.leaf-framework.org/schema/bm">
<bm:operations>
<bm:operation name="insert">
<bm:update-sql><![CDATA[
begin
hl_hsbc_interface_pkg.update_download_file(
p_file_name=> ${@file_name},
p_file_path=>${@file_path},
p_xml_str=> ${@xml_str},
p_user_id => '-1');
end;
]]></bm:update-sql>
</bm:operation>
</bm:operations>
<bm:fields>
<bm:field name="file_path" databaseType="VARCHAR2" datatype="java.lang.String"/>
<bm:field name="file_name" databaseType="VARCHAR2" datatype="java.lang.String"/>
<bm:field name="xml_str" databaseType="CLOB" datatype="java.lang.String"/>
</bm:fields>
</bm:model>
#sftp网址
URL=ecom-sftp.fgcn-pprd.hsbc.com
#sftp用户名
USER_NAME=PC000018926_19960
#sftp端口
PORT=10022
#sftp根路径
ROOT_PATH=\\
#sftp秘钥路径 在这里就正常路径,在svc 或者java 要双斜杠转义
KEY_PATH=F:\\jjhf\\hsbc_key\\hsbstestnew
#sftp待上传文件存放路径
UPLOAD_FILEDIR=F:\\jjhf\\upload\\
#sftp 加密方式 RSA秘钥 PASSWORD 密码
AUTH_CODE=RSA
#sftp 待下载文件存放路径
DOWN_FILEDIR=F:\\jjhf\\down_confirm\\
#sftp 日中对账单文件存放路径
DAY_MID_FILEDIR=F:\\jjhf\\down_day_mid_result\\
#sftp 汇丰银行账号
HSBC_BANK_CODE=715009700011
#sftp 区分汽车系统和建机系统,01:汽车系统;02:建机系统
SYSTEM_FLAG=02
PATH=C:\Users\User\Desktop\testfiledir\down_confirm\TWO.XML
var override_queryfields = [
{
name : 'approval_date_from',
queryexpression : "trunc(t1.approval_date) >= to_date(${@approval_date_from},'yyyy-mm-dd')"
},
{
name : 'approval_date_to',
queryexpression : "trunc(t1.approval_date) <= to_date(${@approval_date_to},'yyyy-mm-dd')"
}
];
override();
var override_queryfields = [
{
name : 'creationdate_from',
queryexpression : "trunc(t1.creationdate) >= to_date(${@creationdate_from},'yyyy-mm-dd')"
},
{
name : 'creationdate_to',
queryexpression : "trunc(t1.creationdate) <= to_date(${@creationdate_to},'yyyy-mm-dd')"
}
];
var add_datafilters = [
{
name : 'init_filter',
expression : "t1.status in ('NEW','ERROR','FINISHED','SEND_MID','CONFIRM1_ERROR','CONFIRM2_FULL_ERROR')"
}
];
add_datafilter();
override();
var override_queryfields = [
{
name : 'send_date',
queryexpression : "trunc(t1.send_date) = to_date(${@send_date},'yyyy-mm-dd')"
},
{
name : 'hsbc_status',
queryexpression : "t1.status = ${@hsbc_status}"
}
];
var add_datafilters = [
{
name : 'init_filter',
expression : "t1.status in ('BANK_RECEIVED','BANK_HALF_BACKED','BANK_BACKED','FINISHED','CONFIRM1','CONFIRM1_ERROR','CONFIRM2','CONFIRM2_FULL_ERROR','CONFIRM2_PART_ERROR','SENDING','SEND_MID','CLOSED')"
}
];
add_datafilter();
override();
var override_queryfields = [
{
name : 'rptdate',
queryexpression : "trunc(t1.rptdate) >= to_date(${@rptdate},'yyyy-mm-dd')"
}
];
override();
...@@ -321,5 +321,10 @@ var enableLayoutConfig = { ...@@ -321,5 +321,10 @@ var enableLayoutConfig = {
'modules/rent/rent200/con_collection_income.lview':true, 'modules/rent/rent200/con_collection_income.lview':true,
'modules/cont/CON316/contract_cost_query_entrance.lview':true, 'modules/cont/CON316/contract_cost_query_entrance.lview':true,
'modules/lon/LON140/loan_fee_create_entrance.lview':true, 'modules/lon/LON140/loan_fee_create_entrance.lview':true,
'modules/form/FORM_LON120H/loan_contract_query.lview':true 'modules/form/FORM_LON120H/loan_contract_query.lview':true,
'modules/hsbc/HSBC100/hsbc_paying_batch_create.lview':true,
'modules/hsbc/HSBC110/hsbc_paying_batch_modify.lview':true,
'modules/hsbc/HSBC110/hsbc_paying_batch_detail.lview':true,
'modules/hsbc/HSBC120/hsbc_paying_batch_query.lview':true,
'modules/hsbc/HSBC130/pingan_account_hisbalance_query.lview':true
}; };
\ No newline at end of file
...@@ -48,6 +48,8 @@ ...@@ -48,6 +48,8 @@
} }
//对是否为同一个厂商进行检查 //对是否为同一个厂商进行检查
var vender_name = record.get('vender_name_n'); var vender_name = record.get('vender_name_n');
//对铁甲和非铁甲的校验
var division = record.get('division');
var vender_flag = true; var vender_flag = true;
var leaseback_count = 0, lease_count = 0; var leaseback_count = 0, lease_count = 0;
...@@ -59,6 +61,11 @@ ...@@ -59,6 +61,11 @@
$L.showErrorMessage("提示", '请选择厂商相同的现金流信息!'); $L.showErrorMessage("提示", '请选择厂商相同的现金流信息!');
return; return;
} }
//对铁甲和非铁甲的校验 add 18943
if (a[i].get('division') != division) {
$L.showErrorMessage("提示", '铁甲业务合同和非铁甲业务合同不可同一批次申请,请确认!');
return;
}
//暂时去掉 //暂时去掉
// if(a[i].get('billing_status_n')!='已开票' ||a[i].get('invoice_status_n')!='已确认'){ // if(a[i].get('billing_status_n')!='已开票' ||a[i].get('invoice_status_n')!='已确认'){
// $L.showErrorMessage("提示",'请选择开票状态为已开票,发票状态为已确认的现金流!'); // $L.showErrorMessage("提示",'请选择开票状态为已开票,发票状态为已确认的现金流!');
...@@ -336,6 +343,7 @@ ...@@ -336,6 +343,7 @@
selectable="true"> selectable="true">
<a:field name="cf_item"/> <a:field name="cf_item"/>
<a:field name="first_contract_day"/> <a:field name="first_contract_day"/>
<a:field name="division"/>
<a:events> <a:events>
<a:event name="query" handler="aut_authority_list_validate_query"/> <a:event name="query" handler="aut_authority_list_validate_query"/>
</a:events> </a:events>
......
<?xml version="1.0" encoding="UTF-8"?>
<a:screen xmlns:a="http://www.leaf-framework.org/application" trace="true">
<a:view>
<a:link id="hsbc_paying_batch_create_link_id" url="${/request/@context_path}/modules/hsbc/HSBC100/hsbc_paying_batch_create.lsc"/>
<script><![CDATA[
function create_paying_batch() {
Leaf.Masker.mask(Ext.getBody(), '付款单生成中...');
var account_ds = $('csh_bank_account');
var bank_account_id = account_ds.getAt(0).get('bank_account_id');
if (Ext.isEmpty(bank_account_id)) {
Leaf.showMessage('提示', '请先选择账户代码!');
Leaf.Masker.unmask(Ext.getBody());
} else {
var req_ln_ds = $('${/parameter/@ds_id}');
var button_id = '${/parameter/@button_id}';
var records = req_ln_ds.getSelected();
var param = {};
var saveData = [];
for (var i = 0;i < records.length;i++) {
var rec;
rec = records[i];
rec.set('_status', 'insert');
saveData.push(rec.data);
}
param['details'] = saveData;
param['bank_account_id'] = bank_account_id;
param['button_id'] = button_id;
Leaf.request({
url: $('hsbc_paying_batch_create_link_id').getUrl(),
para: param,
success: function() {
Leaf.SideBar.show({
msg: '付款单生成成功!',
duration: 2000
});
Leaf.Masker.unmask(Ext.getBody());
$('${/parameter/@winId}').close();
req_ln_ds.query();
},
failure: function() {
Leaf.Masker.unmask(Ext.getBody());
},
error: function() {
Leaf.Masker.unmask(Ext.getBody());
},
scope: this
});
}
}
]]></script>
<a:dataSets>
<a:dataSet id="csh_bank_account" autoCreate="true">
<a:fields>
<a:field name="bank_account_id" readOnly="true"/>
<a:field name="bank_account_code" lovGridHeight="300" lovHeight="450" lovService="hsbc.HSBC100.csh_bank_account" lovWidth="800" required="true" title="支付账号选择">
<a:mapping>
<a:map from="bank_account_id" to="bank_account_id"/>
<a:map from="bank_account_code" to="bank_account_code"/>
<a:map from="bank_short_name" to="bank_short_name"/>
<a:map from="bank_branch_name" to="bank_branch_name"/>
<a:map from="bank_account_name" to="bank_account_name"/>
<a:map from="bank_account_num" to="bank_account_num"/>
</a:mapping>
</a:field>
<a:field name="bank_short_name" readOnly="true"/>
<a:field name="bank_branch_name" readOnly="true"/>
<a:field name="bank_account_name" readOnly="true"/>
<a:field name="bank_account_num" readOnly="true"/>
</a:fields>
</a:dataSet>
</a:dataSets>
<a:screenBody>
<a:screenTopToolbar>
<a:gridButton click="create_paying_batch" text="付款单生成"/>
</a:screenTopToolbar>
<a:form column="2" title=" ">
<a:lov name="bank_account_code" bindTarget="csh_bank_account" prompt="账户代码"/>
<a:textField name="bank_short_name" bindTarget="csh_bank_account" prompt="银行简称"/>
<a:textField name="bank_branch_name" bindTarget="csh_bank_account" prompt="分行名称"/>
<a:textField name="bank_account_name" bindTarget="csh_bank_account" prompt="账户名"/>
<a:textField name="bank_account_num" bindTarget="csh_bank_account" prompt="银行账号"/>
</a:form>
</a:screenBody>
</a:view>
</a:screen>
<?xml version="1.0" encoding="UTF-8"?>
<a:service xmlns:a="http://www.leaf-framework.org/application" xmlns:p="uncertain.proc" trace="true">
<a:init-procedure>
<a:model-delete model="hsbc.HSBC100.hsbc_paying_batch_create"/>
<batch-apply sourcePath="/parameter/details">
<a:model-insert model="hsbc.HSBC100.hsbc_paying_batch_create"/>
</batch-apply>
<a:model-update model="hsbc.HSBC100.hsbc_paying_batch_create"/>
</a:init-procedure>
<a:service-output output="/parameter"/>
</a:service>
<?xml version="1.0" encoding="UTF-8"?>
<!--
$Author: Hongquan.Dai 代宏全
$Date: 2018-1-22 上午10:36:25
$Revision: 1.0
$Purpose:
-->
<a:screen xmlns:a="http://www.leaf-framework.org/application" customizationEnabled="true" dynamiccreateenabled="true">
<a:init-procedure/>
<a:view>
<a:link id="con_contract_get_layout_code_link_id" model="cont.CON500.con_contract_get_layout_code" modelaction="update"/>
<a:link id="pageLink_choose_acount" url="${/request/@context_path}/modules/hsbc/HSBC100/csh_bank_account_choose.lview"/>
<script type="text/javascript"><![CDATA[
//创建代付单
window['${/parameter/@layout_code}_user_button1_layout_dynamic_click'] = function() {
var req_ln_ds_id = get_dsid_by_basetable(window['${/parameter/@layout_code}_layoutDataSetList'], 'csh_payment_req_ln');
var req_ln_ds = $(req_ln_ds_id);
var req_ln_records = req_ln_ds.getSelected();
new Leaf.Window({
id: 'choose_acount_window',
url: $('pageLink_choose_acount').getUrl(),
params: {
winId: 'choose_acount_window',
ds_id: req_ln_ds_id,
button_id: 'create_with_sbo'
},
title: '支付账号选择',
height: 260,
width: 680
});
};
//创建强制付款单生成
window['${/parameter/@layout_code}_user_button2_layout_dynamic_click'] = function() {
var req_ln_ds_id = get_dsid_by_basetable(window['${/parameter/@layout_code}_layoutDataSetList'], 'csh_payment_req_ln');
var req_ln_ds = $(req_ln_ds_id);
var req_ln_records = req_ln_ds.getSelected();
new Leaf.Window({
id: 'choose_acount_window',
url: $('pageLink_choose_acount').getUrl(),
params: {
winId: 'choose_acount_window',
ds_id: req_ln_ds_id,
button_id: 'create_without_sbo'
},
title: '支付账号选择',
height: 260,
width: 680
});
};
]]></script>
<a:screen-include screen="modules/cont/CON500/con_contract_get_layout_code.lview"/>
</a:view>
</a:screen>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!--
$Author: Hongquan.Dai 代宏全
$Date: 2018-1-22 上午10:36:25
$Revision: 1.0
$Purpose:
-->
<a:screen xmlns:a="http://www.leaf-framework.org/application" customizationEnabled="true" dynamiccreateenabled="true">
<a:init-procedure/>
<a:view>
<a:link id="prj_project_get_layout_code_link_id" model="cont.CON500.con_contract_get_layout_code" modelaction="update"/>
<a:link id="prj_project_query_link" url="${/request/@context_path}/modules/prj/PRJ501DF/prj_project_maintain.screen"/>
<a:link id="${/parameter/@layout_code}_df_csh_payment_apply_link" url="${/request/@context_path}/modules/csh/CSH770/df_csh_payment_apply_wfl.screen"/>
<script><![CDATA[
function open_project_win(ds_id, record_id) {
var record = $(ds_id).findById(record_id);
var param = {};
param['project_id'] = record.get('contract_id');
param['lease_channel'] = '01';
param['bp_class'] = 'ORG';
param['function_code'] = 'PRJ501D_DDF';
param['function_usage'] = 'QUERY';
param['maintain_type'] = 'QUERY';
param['winid'] = 'prj_porject_query_win_id';
param['url_title'] = '${l:HLS.PROJECT_MAITAIN_DF}';
hls_doc_get_layout_code('prj_project_get_layout_code_link_id', param, 'prj_project_query_link', ds_id,'${/parameter/@layout_code}');
}
window['${/parameter/@layout_code}_payment_req_number_win'] = function(payment_req_id,ds_id) {
var param = {};
param['document_id'] = payment_req_id;
param['payment_req_id'] = payment_req_id;
param['function_code'] = 'CSH770';
param['maintain_type'] = 'QUERY';
param['url_title'] = '付款明细';
param['winid'] = 'payment_req_number_link';
hls_doc_get_layout_code('prj_project_get_layout_code_link_id', param, '${/parameter/@layout_code}_df_csh_payment_apply_link', ds_id,'${/parameter/@layout_code}');
};
window['${/parameter/@layout_code}_dynamic_link_renderer'] = function(value, record, name, config_record) {
if (name == 'contract_number' && value && '${/parameter/@lease_channel}' == '01') {
return '<a href="javascript:open_project_win(\'' + record.ds.id + '\',\'' + record.id + '\')">' + value + '</a>';
}
if (name == 'payment_req_number' && value && '${/parameter/@lease_channel}' == '01') {
link_function = '${/parameter/@layout_code}_payment_req_number_win';
return '<a href="javascript:window[\'' + link_function + '\'](\'' + record.get('payment_req_id') + '\',\'' + record.ds.id + '\',\'' + '\');">' + value + '</a>';
}
if (name == 'payment_req_number' && value && '${/parameter/@lease_channel}' == '01') {
return value;
}
return value;
};
]]></script>
<a:screen-include screen="modules/cont/CON500/con_contract_get_layout_code.lview"/>
<script><![CDATA[/*
Aurora.onReady(init);
function init() {
var ds_id = get_dsid_by_basetable(window['${/parameter/@layout_code}_layoutDataSetList'], 'hl_hsbc_paying_batch');
if(ds_id){
$(ds_id).setQueryParameter('bank_item', '${/parameter/@bank_item}');
$(ds_id).query();
}
var doc_ds_id = get_dsid_by_basetable(window['${/parameter/@layout_code}_layoutDataSetList'], 'hl_hsbc_paying_doc');
if(doc_ds_id){
$(doc_ds_id).setQueryParameter('bank_item', '${/parameter/@bank_item}');
$(doc_ds_id).query();
}
}*/
]]></script>
</a:view>
</a:screen>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!--
$Author: Hongquan.Dai 代宏全
$Date: 2018-1-22 上午10:36:25
$Revision: 1.0
$Purpose:
-->
<a:screen xmlns:a="http://www.leaf-framework.org/application" customizationEnabled="true" dynamiccreateenabled="true">
<a:init-procedure>
<a:model-query model="hsbc.HSBC110.get_limited_user" rootPath="limited_user_path"/>
</a:init-procedure>
<a:view>
<a:link id="${/parameter/@layout_code}_con_contract_get_layout_code_link_id" model="cont.CON500.con_contract_get_layout_code" modelaction="update"/>
<a:link id="batch_hsbc_send_link" url="${/request/@context_path}/modules/hsbc/HSBC110/hsbc_paying_batch_send.lsc"/>
<a:link id="batch_detail_link" url="${/request/@context_path}/modules/hsbc/HSBC110/hsbc_paying_batch_detail.lview"/>
<a:link id="manual_modify_link" model="hsbc.HSBC110.hsbc_paying_manual_modify" modelaction="execute"/>
<a:link id="batch_cancel_link" model="hsbc.HSBC110.hsbc_paying_batch_cancel" modelaction="delete"/>
<script type="text/javascript"><![CDATA[
function open_batch_win(ds_id, record_id) {
var record = $(ds_id).findById(record_id);
var param = record.data;
param['function_code'] = 'HSBC110D';
param['maintain_type'] = 'QUERY';
param['url_title'] = '付款单明细';
hls_doc_get_layout_code('${/parameter/@layout_code}_con_contract_get_layout_code_link_id', param, 'batch_detail_link', ds_id);
}
window['${/parameter/@layout_code}_dynamic_link_renderer'] = function(value, record, name, config_record) {
if (name == 'reqsn' && value) {
return '<a href="javascript:open_batch_win(\'' + record.ds.id + '\',\'' + record.id + '\')">' + value + '</a>';
}
return value;
};
//代付单发送
window['${/parameter/@layout_code}_user_button1_layout_dynamic_click'] = function() {
var ds_id = get_dsid_by_tabcode_basetable(window['${/parameter/@layout_code}_layoutDataSetList'], 'G_RESULT', 'hl_hsbc_paying_batch');
var batch_ds = $(ds_id);
var records = batch_ds.getSelected();
if (records.length == 0) {
Leaf.showMessage('${l:PROMPT}', '请选择至少一条数据!');
return;
}
var param = {};
var saveData = [];
var length = 0;
var send_url;
var bank_note='汇丰银行';
for (var i = 0;i < records.length;i++) {
var rec;
rec = records[i];
rec.set('_status', 'insert');
saveData.push(rec.data);
}
length = records.length;
param['details'] = saveData;
send_url=$('batch_hsbc_send_link').getUrl();
Leaf.showConfirm('${l:HLS.PROMPT}', '共选中<font color="red">' + length + '</font>条付款单,确认发送到<font color="red">'+bank_note+'</font>?', function() {
window['${/parameter/@layout_code}_lock_layout_dynamic_window']();
Leaf.request({
url: send_url,
para: param,
success: function(res) {
window['${/parameter/@layout_code}_unlock_layout_dynamic_window']();
batch_ds.query();
},
failure: function(res) {
window['${/parameter/@layout_code}_unlock_layout_dynamic_window']();
batch_ds.query();
},
error: function() {
window['${/parameter/@layout_code}_unlock_layout_dynamic_window']();
batch_ds.query();
},
scope: this
});
});
};
//人工支付 --add by 24976
window['${/parameter/@layout_code}_user_button2_layout_dynamic_click'] = function() {
var ds_id = get_dsid_by_tabcode_basetable(window['${/parameter/@layout_code}_layoutDataSetList'], 'G_RESULT', 'hl_hsbc_paying_batch');
var batch_ds = $(ds_id);
var records = batch_ds.getSelected();
var lease_channel;
var reqsn;
var batch_id;
var bank_item;
if (records.length != 1) {
Leaf.showMessage('${l:PROMPT}', '请选择一条数据!');
return;
}
var win = new Leaf.showConfirm('${l:HLS.PROMPT}', '使用人工支付将不能再使用银企直连,确认进行人工支付?', function() {
window['${/parameter/@layout_code}_lock_layout_dynamic_window']();
Leaf.request({
url: $('manual_modify_link').getUrl(),
para: {
batch_id : records[0].get('batch_id'),
reqsn : records[0].get('reqsn'),
bank_item : records[0].get('bank_item')
},
success: function(res) {
window['${/parameter/@layout_code}_unlock_layout_dynamic_window']();
batch_ds.query();
},
failure: function(res) {
window['${/parameter/@layout_code}_unlock_layout_dynamic_window']();
},
error: function() {
window['${/parameter/@layout_code}_unlock_layout_dynamic_window']();
},
scope: this
});
});
};
//付款单取消
window['${/parameter/@layout_code}_user_button3_layout_dynamic_click'] = function() {
var ds_id = get_dsid_by_tabcode_basetable(window['${/parameter/@layout_code}_layoutDataSetList'], 'G_RESULT', 'hl_hsbc_paying_batch');
var batch_ds = $(ds_id);
var records = batch_ds.getSelected();
if (records.length != 1 ) {
Leaf.showMessage('${l:PROMPT}', '请选择一条数据!');
return;
}
Leaf.showConfirm('${l:HLS.PROMPT}', '确认取消?', function() {
window['${/parameter/@layout_code}_lock_layout_dynamic_window']();
Leaf.request({
url: $('batch_cancel_link').getUrl(),
para: {
batch_id : records[0].get('batch_id'),
reqsn : records[0].get('reqsn'),
bank_item : records[0].get('bank_item')
},
success: function(res) {
window['${/parameter/@layout_code}_unlock_layout_dynamic_window']();
batch_ds.query();
},
failure: function(res) {
window['${/parameter/@layout_code}_unlock_layout_dynamic_window']();
},
error: function() {
window['${/parameter/@layout_code}_unlock_layout_dynamic_window']();
},
scope: this
});
});
};
Leaf.onReady(function() {
if ('${/model/limited_user_path/record/@flag}'=='N') {
$('${/parameter/@layout_code}_user_button1').hide();
$('${/parameter/@layout_code}_user_button2').hide();
$('${/parameter/@layout_code}_user_button3').hide();
}
});
]]></script>
<a:screen-include screen="modules/cont/CON500/con_contract_get_layout_code.lview"/>
</a:view>
</a:screen>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<a:service xmlns:p="uncertain.proc" xmlns:a="http://www.leaf-framework.org/application" xmlns:s="leaf.plugin.script" trace="true">
<a:init-procedure>
<a:model-delete model="hsbc.HSBC110.hsbc_batch_temp"/>
<batch-apply sourcePath="/parameter/details">
<a:model-insert model="hsbc.HSBC110.hsbc_batch_temp"/>
</batch-apply>
<s:server-script><![CDATA[
function main() {
$bm('sch.SCH111.sch_concurrent_job_submit').insert({
task_code:'HSBC_BATCH_SEND',
description:'汇丰银行批量发送job'
});
}
main();
]]></s:server-script>
<p:echo/>
</a:init-procedure>
<a:service-output output="/parameter"/>
</a:service>
<?xml version="1.0" encoding="UTF-8"?>
<!--
$Author: wangwei5743
$Date: 2017-8-17 上午10:38:31
$Revision: 1.0
$Purpose: 农行代扣接口生成txt
-->
<a:service xmlns:p="uncertain.proc" xmlns:a="http://www.leaf-framework.org/application" xmlns:s="leaf.plugin.script" trace="true">
<a:init-procedure>
<s:server-script><![CDATA[
importPackage(Packages.java.lang);
importPackage(Packages.java.io);
importPackage(java.util.zip);
importPackage(java.io); /*可以传入参数*/
importPackage(Packages.com.hand.hsbc);
var UPLOAD_FILEDIR = AuthTypeMode.getProperties("UPLOAD_FILEDIR");
var date=new Date();
var year=date.getFullYear();
var month=date.getMonth()+1;
UPLOAD_FILEDIR = UPLOAD_FILEDIR+"\\"+year+"\\"+month+"\\";
var tranfer_dir= new File(String(UPLOAD_FILEDIR));
if(!tranfer_dir.exists()){
//如果文件夹不存在,创建年月文件夹
tranfer_dir.mkdirs();//创建文件夹
}
function batch_send(reqsn) {
var fileName = reqsn;
//生成文件路径,文件
var FilePath='';
var FilePath = UPLOAD_FILEDIR + fileName + '.XML';
//-----------------------------写文件----------------------------
try {
var outSTr = new FileOutputStream(new File(FilePath));
var Buff = new BufferedOutputStream(outSTr);
} catch (e) {
raise_app_error(e.message);
}
//汇丰代扣信息
var xml_content='';
var xml_content_bm = $bm('hsbc.HSBC110.hsbc_get_xml_content');
var xml_content_query = xml_content_bm.queryAsMap({
reqsn: reqsn
});
var xml_content_lists = xml_content_query.getChildren();
xml_content=xml_content_lists[0].xml_content;
if(!xml_content){
raise_app_error('文件生成错误,请检查!');
}
try {
var write = new java.lang.String(xml_content).replaceAll("&quot;", "\"");
Buff.write(new java.lang.String(write).getBytes("UTF-8"));
Buff.flush();
Buff.close();
} catch (e) {
raise_app_error(e.message);
} finally {
try {
Buff.close();
outSTr.close();
} catch (e) {
raise_app_error(e.message);
}
}
println('paraconfig.properties');
//以下参数请查看class目录下paraconfig.properties文件进行配置
var URL = AuthTypeMode.getProperties("URL");
var USER_NAME = AuthTypeMode.getProperties("USER_NAME");
var PORT = AuthTypeMode.getProperties("PORT");
var ROOT_PATH = AuthTypeMode.getProperties("ROOT_PATH");
var KEY_PATH = AuthTypeMode.getProperties("KEY_PATH");
var AUTH_CODE = AuthTypeMode.getProperties("AUTH_CODE");
var DOWN_FILEDIR = AuthTypeMode.getProperties("DOWN_FILEDIR");
var sftpTool = new SftpTool(URL,USER_NAME,PORT);
var send_code = sftpTool.upload(ROOT_PATH, FilePath, new AuthTypeMode(AUTH_CODE,KEY_PATH));
//插入日志表
//生成log_id
var log_bm = new ModelService('hsbc.HSBC110.hsbc_get_log_id');
var res = log_bm.queryAsMap();
var arr = res.getChildren();
var log_id = arr[0].log_id;
log_bm.insert({
log_id: log_id,
interface_code:'HSBC_SEND',
reqsn:reqsn,
request:xml_content,
send_return_code:send_code
});
var send_bm = $bm('hsbc.HSBC110.upload_interface_process');
if (send_code=='UPLOAD_SUCCESS'){
//解析XML文件2个,先修改下载状态。 建议还是解析XML和修改下载状态独立吧
send_bm.update({
reqsn: reqsn,
errMsg:''
});
}else{
//上传失败
send_bm.update({
reqsn: reqsn,
errMsg:send_code
});
}
}
function main() {
println('main');
var bm = new ModelService('hsbc.HSBC110.hsbc_batch_temp');
var res = bm.queryAsMap();
var arr = res.getChildren();
if (arr.length) {
for (var i = 0;i < arr.length;i++) {
batch_send(arr[i].reqsn);
}
}
}
main();
]]></s:server-script>
<p:echo/>
</a:init-procedure>
<a:service-output output="/parameter"/>
</a:service>
<?xml version="1.0" encoding="UTF-8"?>
<!--
$Author: wangwei5743
$Date: 2017-8-17 上午10:38:31
$Revision: 1.0
$Purpose: 农行代扣接口生成txt
-->
<a:service xmlns:p="uncertain.proc" xmlns:a="http://www.leaf-framework.org/application" xmlns:s="leaf.plugin.script" trace="true">
<a:init-procedure>
<s:server-script><![CDATA[
importPackage(Packages.java.lang);
importPackage(Packages.java.io);
importPackage(java.util.zip);
importPackage(java.io); /*可以传入参数*/
importPackage(Packages.com.hand.hsbc);
function main() {
//以下参数请查看class目录下paraconfig.properties文件进行配置
var URL = AuthTypeMode.getProperties("URL");
var USER_NAME = AuthTypeMode.getProperties("USER_NAME");
var PORT = AuthTypeMode.getProperties("PORT");
var ROOT_PATH = AuthTypeMode.getProperties("ROOT_PATH");
var KEY_PATH = AuthTypeMode.getProperties("KEY_PATH");
var AUTH_CODE = AuthTypeMode.getProperties("AUTH_CODE");
var DOWN_FILEDIR = AuthTypeMode.getProperties("DOWN_FILEDIR");
var HSBC_BANK_CODE = AuthTypeMode.getProperties("HSBC_BANK_CODE");
var SYSTEM_FLAG = AuthTypeMode.getProperties("SYSTEM_FLAG");
var date=new Date();
var year=date.getFullYear();
var month=date.getMonth()+1;
DOWN_FILEDIR = DOWN_FILEDIR+year+"\\"+month+"\\";
var tranfer_dir= new File(String(DOWN_FILEDIR));
if(!tranfer_dir.exists()){
//如果文件夹不存在,创建年月文件夹
tranfer_dir.mkdirs();//创建文件夹
}
var sftpTool = new SftpTool(URL,USER_NAME,PORT);
var down_code= sftpTool.downloaddiff(ROOT_PATH,SYSTEM_FLAG,HSBC_BANK_CODE, DOWN_FILEDIR, new AuthTypeMode(AUTH_CODE,KEY_PATH));
//生成log_id
var log_bm = new ModelService('hsbc.HSBC110.hsbc_get_log_id');
var res = log_bm.queryAsMap();
var arr = res.getChildren();
var log_id = arr[0].log_id;
log_bm.insert({
log_id: log_id,
interface_code:'HSBC_DOWN',
reqsn:'',
request:down_code,
send_return_code:'DOWN_FINISHED'
});
//var down_code='ACK1PSRV3.PC000018926.20220118153157978927.20220118073230005.XML;ACK2PSRV3.PC000018926.20220118153157978927.20220118073238006.XML';
try {
if (down_code != null && down_code.length != 0) {
//解析XML文件2个,先修改下载状态。 建议还是解析XML和修改下载状态独立吧
var bm = $bm('hsbc.HSBC120.update_down_file_status');
var fileNames = down_code.split(';');
for (var i = 0;i < fileNames.length;i++) {
var file_path=DOWN_FILEDIR+fileNames[i];
var xml_str=SaxReaderXml.xmlToString(file_path);
if (xml_str == null || xml_str.length == 0) {
bm.insert({
file_name:fileNames[i],
file_path:file_path.toString(),
xml_str:xml_str
});
}
}
}
} catch (e) {
raise_app_error(e);
println(e);
}
println('LSC执行完成');
}
main();
]]></s:server-script>
<p:echo/>
</a:init-procedure>
<a:service-output output="/parameter"/>
</a:service>
<?xml version="1.0" encoding="UTF-8"?>
<!--
$Author: Hongquan.Dai 代宏全
$Date: 2018-1-22 上午10:36:25
$Revision: 1.0
$Purpose:
-->
<a:screen xmlns:a="http://www.leaf-framework.org/application" customizationEnabled="true" dynamiccreateenabled="true">
<a:init-procedure/>
<a:view>
<a:link id="con_contract_get_layout_code_link_id" model="cont.CON500.con_contract_get_layout_code" modelaction="update"/>
<a:link id="batch_detail_link" url="${/request/@context_path}/modules/hsbc/HSBC110/hsbc_paying_batch_detail.lview"/>
<script type="text/javascript"><![CDATA[
function open_batch_win(ds_id, record_id) {
var record = $(ds_id).findById(record_id);
var param = record.data;
param['function_code'] = 'HSBC110D';
param['maintain_type'] = 'QUERY';
param['url_title'] = '付款单明细';
hls_doc_get_layout_code('con_contract_get_layout_code_link_id', param, 'batch_detail_link', null,ds_id);
}
window['${/parameter/@layout_code}_dynamic_link_renderer'] = function(value, record, name, config_record) {
if (name == 'reqsn' && value) {
return '<a href="javascript:open_batch_win(\'' + record.ds.id + '\',\'' + record.id + '\')">' + value + '</a>';
}
return value;
};
]]></script>
<a:screen-include screen="modules/cont/CON500/con_contract_get_layout_code.lview"/>
</a:view>
</a:screen>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!--
$Author: Hongquan.Dai 代宏全
$Date: 2018-1-22 上午10:36:25
$Revision: 1.0
$Purpose:
-->
<a:screen xmlns:a="http://www.leaf-framework.org/application" customizationEnabled="true" dynamiccreateenabled="true">
<a:init-procedure/>
<a:view>
<a:link id="con_contract_get_layout_code_link_id" model="cont.CON500.con_contract_get_layout_code" modelaction="update"/>
<script type="text/javascript"><![CDATA[
]]></script>
<a:screen-include screen="modules/cont/CON500/con_contract_get_layout_code.lview"/>
</a:view>
</a:screen>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment