fw-bip分支结构上传

This commit is contained in:
lvleigang 2024-09-14 09:06:23 +08:00
parent f0db5772a2
commit 85e1821f75
39 changed files with 2400 additions and 6 deletions

View File

@ -18,11 +18,11 @@
<artifactId>base-service</artifactId> <artifactId>base-service</artifactId>
<version>${revision}</version> <version>${revision}</version>
</dependency> </dependency>
<!-- <dependency>--> <dependency>
<!-- <groupId>com.hzya.frame</groupId>--> <groupId>com.hzya.frame</groupId>
<!-- <artifactId>fw-bip</artifactId>--> <artifactId>fw-bip</artifactId>
<!-- <version>${revision}</version>--> <version>${revision}</version>
<!-- </dependency>--> </dependency>
<!-- <dependency>--> <!-- <dependency>-->
<!-- <groupId>com.hzya.frame</groupId>--> <!-- <groupId>com.hzya.frame</groupId>-->
<!-- <artifactId>fw-cbs</artifactId>--> <!-- <artifactId>fw-cbs</artifactId>-->

85
fw-bip/pom.xml Normal file
View File

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>kangarooDataCenterV3</artifactId>
<groupId>com.hzya.frame</groupId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>fw-bip</artifactId>
<packaging>jar</packaging>
<version>${revision}</version>
<dependencies>
<dependency>
<groupId>com.hzya.frame</groupId>
<artifactId>base-service</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java}</version>
</dependency>
<dependency>
<groupId>com.hzya.bip</groupId>
<artifactId>pubbaseapp_nccloud_rtLevel</artifactId>
<version>1</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/resources/lib/pubbaseapp_nccloud_rtLevel-1.jar</systemPath>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.hzya.bipyonyoulog</groupId>-->
<!-- <artifactId>yonyoulog</artifactId>-->
<!-- <version>1</version>-->
<!-- <scope>system</scope>-->
<!-- <systemPath>${basedir}/src/main/resources/lib/yonyoulog.jar</systemPath>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.hzya.bcprov</groupId>-->
<!-- <artifactId>bcprov</artifactId>-->
<!-- <version>1</version>-->
<!-- <scope>system</scope>-->
<!-- <systemPath>${basedir}/src/main/resources/lib/bcprov-jdk15on-1.70.jar</systemPath>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.hzya.DataApiSdk</groupId>-->
<!-- <artifactId>DataApiSdk</artifactId>-->
<!-- <version>1</version>-->
<!-- <scope>system</scope>-->
<!-- <systemPath>${basedir}/src/main/resources/lib/DataApiSdk-jar-with-dependencies.jar</systemPath>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.hzya.openBasicSDK</groupId>-->
<!-- <artifactId>openBasicSDK</artifactId>-->
<!-- <version>1</version>-->
<!-- <scope>system</scope>-->
<!-- <systemPath>${basedir}/src/main/resources/lib/openBasicSDK-2.1.230630.jar</systemPath>-->
<!-- </dependency>-->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>none</mainClass> <!-- 取消查找本项目下的Main方法为了解决Unable to find main class的问题 -->
<classifier>execute</classifier> <!-- 为了解决依赖模块找不到此模块中的类或属性 -->
<skip>true</skip>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,17 @@
package com.hzya.frame.bip.v3.v2207.dao;
import com.hzya.frame.basedao.dao.IBaseDao;
import com.hzya.frame.bip.v3.v2207.entity.BipOrgsEntity;
import java.util.List;
public interface IBipOrgsDao extends IBaseDao<BipOrgsEntity, String> {
/**
* 查询BIP业务单元
* @param BipOrgsEntity
* @return
*/
List<BipOrgsEntity> thirdInterfaceGetOrgs(BipOrgsEntity BipOrgsEntity);
}

View File

@ -0,0 +1,17 @@
package com.hzya.frame.bip.v3.v2207.dao;
import com.hzya.frame.basedao.dao.IBaseDao;
import com.hzya.frame.bip.v3.v2207.entity.BipOrgsDetailsEntity;
import java.util.List;
public interface IBipOrgsDetailsDao extends IBaseDao<BipOrgsDetailsEntity, String> {
/**
* 查询BIP业务单元银行账户
* @param BipOrgsDetailsEntity
* @return
*/
List<BipOrgsDetailsEntity> thirdInterfaceGetOrgsDetails(BipOrgsDetailsEntity BipOrgsDetailsEntity);
}

View File

@ -0,0 +1,18 @@
package com.hzya.frame.bip.v3.v2207.dao;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.hzya.frame.basedao.dao.IBaseDao;
import com.hzya.frame.bip.v3.v2207.entity.BipSupplierEntity;
import java.util.List;
public interface IBipSupplierDao extends IBaseDao<BipSupplierEntity, String> {
/**
* 查询BIP供应商
* @param bipSupplierEntity
* @return
*/
List<BipSupplierEntity> thirdInterfaceGetSupplier(BipSupplierEntity bipSupplierEntity);
}

View File

@ -0,0 +1,18 @@
package com.hzya.frame.bip.v3.v2207.dao;
import com.hzya.frame.basedao.dao.IBaseDao;
import com.hzya.frame.bip.v3.v2207.entity.BipSupplierDetailsEntity;
import com.hzya.frame.bip.v3.v2207.entity.BipSupplierEntity;
import java.util.List;
public interface IBipSupplierDetailsDao extends IBaseDao<BipSupplierDetailsEntity, String> {
/**
* 查询BIP供应商明细
* @param bipSupplierDetailsEntity
* @return
*/
List<BipSupplierDetailsEntity> thirdInterfaceGetSupplierDetails(BipSupplierDetailsEntity bipSupplierDetailsEntity);
}

View File

@ -0,0 +1,24 @@
package com.hzya.frame.bip.v3.v2207.dao.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.hzya.frame.basedao.dao.MybatisGenericDao;
import com.hzya.frame.bip.v3.v2207.dao.IBipOrgsDao;
import com.hzya.frame.bip.v3.v2207.dao.IBipSupplierDao;
import com.hzya.frame.bip.v3.v2207.entity.BipOrgsEntity;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository("bipOrgsDaoImpl")
public class BipOrgsDaoImpl extends MybatisGenericDao<BipOrgsEntity,String> implements IBipOrgsDao {
/**
* 查询BIP业务单元
* @param BipOrgsEntity
* @return
*/
@DS("oracle91")
@Override
public List<BipOrgsEntity> thirdInterfaceGetOrgs(BipOrgsEntity BipOrgsEntity) {
return super.query("com.hzya.frame.bip.v3.v2207.dao.impl.BipOrgsDaoImpl.thirdInterfaceGetOrgs",BipOrgsEntity);
}
}

View File

@ -0,0 +1,19 @@
package com.hzya.frame.bip.v3.v2207.dao.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.hzya.frame.basedao.dao.MybatisGenericDao;
import com.hzya.frame.bip.v3.v2207.dao.IBipOrgsDetailsDao;
import com.hzya.frame.bip.v3.v2207.dao.IBipSupplierDetailsDao;
import com.hzya.frame.bip.v3.v2207.entity.BipOrgsDetailsEntity;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository("bipOrgsDetailsDaoImpl")
public class BipOrgsDetailsDaoImpl extends MybatisGenericDao<BipOrgsDetailsEntity,String> implements IBipOrgsDetailsDao {
@DS("oracle91")
@Override
public List<BipOrgsDetailsEntity> thirdInterfaceGetOrgsDetails(BipOrgsDetailsEntity bipOrgsDetailsEntity) {
return super.query("com.hzya.frame.bip.v3.v2207.dao.impl.BipOrgsDetailsDaoImpl.thirdInterfaceGetOrgsDetails",bipOrgsDetailsEntity);
}
}

View File

@ -0,0 +1,25 @@
package com.hzya.frame.bip.v3.v2207.dao.impl;
import cn.hutool.http.HttpRequest;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.hzya.frame.basedao.dao.MybatisGenericDao;
import com.hzya.frame.bip.v3.v2207.dao.IBipSupplierDao;
import com.hzya.frame.bip.v3.v2207.entity.BipSupplierEntity;
import com.hzya.frame.util.HttpUtil;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository("bipSupplierDaoImpl")
public class BipSupplierDaoImpl extends MybatisGenericDao<BipSupplierEntity,String> implements IBipSupplierDao {
/**
* 查询BIP供应商
* @param bipSupplierEntity
* @return
*/
@DS("oracle91")
@Override
public List<BipSupplierEntity> thirdInterfaceGetSupplier(BipSupplierEntity bipSupplierEntity) {
return super.query("com.hzya.frame.bip.v3.v2207.dao.impl.BipSupplierDaoImpl.thirdInterfaceGetSupplier",bipSupplierEntity);
}
}

View File

@ -0,0 +1,20 @@
package com.hzya.frame.bip.v3.v2207.dao.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.hzya.frame.basedao.dao.MybatisGenericDao;
import com.hzya.frame.bip.v3.v2207.dao.IBipSupplierDao;
import com.hzya.frame.bip.v3.v2207.dao.IBipSupplierDetailsDao;
import com.hzya.frame.bip.v3.v2207.entity.BipSupplierDetailsEntity;
import com.hzya.frame.bip.v3.v2207.entity.BipSupplierEntity;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository("bipSupplierDetailsDaoImpl")
public class BipSupplierDetailsDaoImpl extends MybatisGenericDao<BipSupplierDetailsEntity,String> implements IBipSupplierDetailsDao {
@DS("oracle91")
@Override
public List<BipSupplierDetailsEntity> thirdInterfaceGetSupplierDetails(BipSupplierDetailsEntity bipSupplierDetailsEntity) {
return super.query("com.hzya.frame.bip.v3.v2207.dao.impl.BipSupplierDetailsDaoImpl.thirdInterfaceGetSupplierDetails",bipSupplierDetailsEntity);
}
}

View File

@ -0,0 +1,38 @@
package com.hzya.frame.bip.v3.v2207.dps.service;
import com.alibaba.fastjson.JSONObject;
public interface IPayMentService {
/**
*
* @content 获取杭泰OA付款单传递CFS
* @Param
* @Return
* @Author hecan
* @Date 2023/10/16 11:59
* **/
String sendOAPayMentToCFS(JSONObject jsonObject, String type);
/**
*
* @content 获取CFS登录校验码
* @Param
* @Return
* @Author hecan
* @Date 2023/10/16 13:37
* **/
String sendCFSToken(String name, String password);
/**
*
* @content 获取杭泰OA报销单传递CFS
* @Param
* @Return
* @Author hecan
* @Date 2023/10/16 16:17
* **/
String sendExpenseToCFS(JSONObject jsonObject);
}

View File

@ -0,0 +1,389 @@
package com.hzya.frame.bip.v3.v2207.dps.service.impl;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.bip.v3.v2207.dps.service.IPayMentService;
import com.hzya.frame.dateutil.DateUtil;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.xml.sax.InputSource;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.StringReader;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@Service(value = "payMentServiceImpl")
public class PayMentServiceImpl implements IPayMentService {
private static final Logger logger = LoggerFactory.getLogger(PayMentServiceImpl.class);
private static final String NAME="admin";
private static final String PASSWORD="aHRzejg4OA==";
private static final String CFSURL="http://101.132.140.208:26883/erp/services/";//测试端口:26893,正式端口:26883
/**
*
* @content 杭泰OA付款单传递CFS 付款单资金归集资金拨付同名账户划转和借款单都用同一个接口
* @Param
* @Return
* @Author hecan
* @Date 2023/10/13 10:40
* **/
public String sendOAPayMentToCFS(JSONObject jsonStr,String type){
logger.info("开始执行杭泰OA付款单传递CFS");
try {
String cfsToken = sendCFSToken(NAME, PASSWORD);
if(null!=cfsToken) {
String jsonStrObj = jsonStr.getString("jsonStr");
JSONObject jsonObjectMain = JSON.parseObject(jsonStrObj);
String erpVoucherNo = jsonObjectMain.getString("erpVoucherNo");//OA主键
String purpose = jsonObjectMain.getString("purpose");//摘要
String isForindividual = "0";//是否对私付款
StringBuffer stringBuffer = new StringBuffer();
String documentType=null;
switch (type){
case "pay"://付款单
documentType="01";
break;
case "fundc"://资金归集
documentType="02";
break;
case "funda"://资金拨付
documentType="03";
break;
case "acc"://同名账户划转
documentType="04";
break;
case "loan"://借款单
documentType="05";
break;
default:
break;
}
JSONArray jsonStrList = jsonObjectMain.getJSONArray("details");
if (null != jsonStrList && jsonStrList.size() > 0) {
for (Object seeyonEntity : jsonStrList) {
JSONObject jsonObjectFormson = JSON.parseObject(JSON.toJSONString(seeyonEntity));
String payerAccName = jsonObjectFormson.getString("payerAccName");//转出方账户名(付款账户)
String payerAccNo = jsonObjectFormson.getString("payerAccNo");//转出方账号(付款账号)
String curCode = jsonObjectFormson.getString("curCode");//付款方币种
String payeeAccName = jsonObjectFormson.getString("payeeAccName");//收款人帐户名称
String payeeAccNo = jsonObjectFormson.getString("payeeAccNo");//收款方账户号
BigDecimal amount = jsonObjectFormson.getBigDecimal("amount");//发生额
String payeeBankCode = jsonObjectFormson.getString("payeeBankCode");//联行号
String isQuick = jsonObjectFormson.getString("isQuick");//加急标志
String payType = jsonObjectFormson.getString("payType");//结算方式
String businessType = jsonObjectFormson.getString("businessType");//业务类别
stringBuffer.append("<map>\n");
stringBuffer.append("<documentType>" + nullConvert(documentType) + "</documentType>\n");
stringBuffer.append("<erpVoucherNo>" + nullConvert(erpVoucherNo) + "</erpVoucherNo>\n");
//stringBuffer.append("<payerAccName>"+"浙江杭泰数智能源开发有限公司"+"</payerAccName>\n");
stringBuffer.append("<payerAccName>"+nullConvert(payerAccName)+"</payerAccName>\n");
//stringBuffer.append("<payerAccNo>" +"71010122002702903"+ "</payerAccNo>\n");
stringBuffer.append("<payerAccNo>" + nullConvert(payerAccNo) + "</payerAccNo>\n");
stringBuffer.append("<curCode>" + nullConvert(curCode) + "</curCode>\n");
stringBuffer.append("<payeeAccName>" + nullConvert(payeeAccName) + "</payeeAccName>\n");
stringBuffer.append("<payeeAccNo>" + nullConvert(payeeAccNo) + "</payeeAccNo>\n");
stringBuffer.append("<amount>" + nullConvert(String.valueOf(amount)) + "</amount>\n");
//stringBuffer.append("<payeeBankCode>"+"301331000029"+"</payeeBankCode>\n");
stringBuffer.append("<payeeBankCode>"+nullConvert(payeeBankCode)+"</payeeBankCode>\n");
stringBuffer.append("<isQuick>" + nullConvert(isQuick) + "</isQuick>\n");
stringBuffer.append("<isForindividual>" + nullConvert(isForindividual) + "</isForindividual>\n");
stringBuffer.append("<payType>" + nullConvert(payType) + "</payType>\n");
stringBuffer.append("<purpose>" + nullConvert(purpose) + "</purpose>\n");
stringBuffer.append("<businessType>" + nullConvert(businessType) + "</businessType>\n");
stringBuffer.append("<debitByCustomer>" + nullConvert(jsonObjectFormson.getString("debitByCustomer")) + "</debitByCustomer>\n");//借方客商辅助核算编码
stringBuffer.append("<debitByBankAcc>" + nullConvert(payeeAccNo) + "</debitByBankAcc>\n");//借方银行账户辅助核算编码
stringBuffer.append("<debitByPersonnel>" + nullConvert(jsonObjectFormson.getString("debitByPersonnel")) + "</debitByPersonnel>\n");//借方人员辅助核算编码
stringBuffer.append("<creditByCustomer>" + nullConvert(jsonObjectFormson.getString("creditByCustomer")) + "</creditByCustomer>\n");//贷方客商辅助核算编码
stringBuffer.append("<creditByBankAcc>" + nullConvert(payerAccNo) + "</creditByBankAcc>\n");//贷方银行辅助核算编码
stringBuffer.append("</map>\n");
}
} else {
stringBuffer.append("<map>\n");
stringBuffer.append("<erpVoucherNo>" + nullConvert(erpVoucherNo) + "</erpVoucherNo>");
stringBuffer.append("<purpose>" + nullConvert(purpose) + "</purpose>");
stringBuffer.append("<isForindividual>" + nullConvert(isForindividual) + "</isForindividual>");
stringBuffer.append("</map>\n");
}
String result=null;
String xml= requestXML(cfsToken,"BkPaymentMainExchange",stringBuffer,"OA付款单同步发送");
String url = "HTSZ_OA_BkPaymentMainWebService?wsdl";
switch (type){
case "pay"://付款单
logger.info("OA付款单发送CFS的请求参数为:{}", xml);
result = HttpRequest.post(CFSURL+url).header("Content-Type", "soap/xml").timeout(30000).body(xml).execute().body();
logger.info("OA付款单发送CFS的返回参数为:{}", result);
break;
case "fundc"://资金归集
logger.info("OA资金归集发送CFS的请求参数为:{}", xml);
result = HttpRequest.post(CFSURL+url).header("Content-Type", "soap/xml").timeout(30000).body(xml).execute().body();
logger.info("OA资金归集发送CFS的返回参数为:{}", result);
break;
case "funda"://资金调拨
logger.info("OA资金拨付发送CFS的请求参数为:{}", xml);
result = HttpRequest.post(CFSURL+url).header("Content-Type", "soap/xml").timeout(30000).body(xml).execute().body();
logger.info("OA资金拨付发送CFS的返回参数为:{}", result);
break;
case "acc"://同名账户划转
logger.info("OA同名账户划转发送CFS的请求参数为:{}", xml);
result = HttpRequest.post(CFSURL+url).header("Content-Type", "soap/xml").timeout(30000).body(xml).execute().body();
logger.info("OA同名账户划转发送CFS的返回参数为:{}", result);
break;
case "loan"://借款单
logger.info("OA借还款发送CFS的请求参数为:{}", xml);
result = HttpRequest.post(CFSURL+url).header("Content-Type", "soap/xml").timeout(30000).body(xml).execute().body();
logger.info("OA借还款发送CFS的返回参数为:{}", result);
break;
default:
break;
}
return analyzeXML(result,"pay");
}else{
logger.info("请先登录CFS登录接口获取Token");
return null;
}
} catch (Exception e) {
e.printStackTrace();
logger.info("杭泰OA付款单传递CFS错误原因为:{}", e.getMessage());
}
return null;
}
/**
*
* @content 获取CFS登录校验码
* @Param
* @Return
* @Author hecan
* @Date 2023/10/13 15:38
* **/
public String sendCFSToken(String name,String password) {
try {
String xml="<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:mdm=\"http://mdmData.server.webservice.banck.com\">\n" +
" <soap:Header/>\n" +
" <soap:Body>\n" +
" <mdm:intoPaymentDataXml>\n" +
" <!--Optional:-->\n" +
" <mdm:xml>\n" +
" <![CDATA[\n" +
" <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<message>\n" +
"<head>\n" +
"<transCode>LogOn</transCode>\n" +
"<erpTimestamp>"+DateUtil.dateToString(new Date(), "yyyy-MM-dd HH:mm:ss")+"</erpTimestamp>\n" +
"<sourcePlat>OA</sourcePlat>\n" +
"<desPlat>CFS</desPlat>\n" +
"<rmk>OA登录验证发送</rmk>\n" +
"</head>\n" +
"<body>\n" +
"<user>"+name+"</user>\n" +
"<password>"+password+"</password>\n" +
"</body>\n" +
"</message>\n" +
" ]]>\n" +
" </mdm:xml>\n" +
" </mdm:intoPaymentDataXml>\n" +
" </soap:Body>\n" +
"</soap:Envelope>";
logger.info("CFS登录的请求参数为:{}",xml);
String url="HTSZ_OA_LogOnWebService?wsdl";
String result = HttpRequest.post(CFSURL+url).header("Content-Type", "soap/xml").timeout(30000).body(xml).execute().body();
logger.info("CFS登录的返回参数为:{}",result);
return analyzeXML(result,"login");
}catch (Exception e){
e.printStackTrace();
logger.info("获取CFS登录失败原因为:{}",e.getMessage());
}
return null;
}
/**
*
* @content 获取杭泰OA报销单传递CFS
* @Param
* @Return
* @Author hecan
* @Date 2023/10/16 16:17
* **/
@Override
public String sendExpenseToCFS(JSONObject jsonStr) {
logger.info("开始执行杭泰OA报销单传递CFS");
try {
String token = sendCFSToken(NAME, PASSWORD);
if(null != token){
String jsonStrObj = jsonStr.getString("jsonStr");
JSONObject jsonObjectMain = JSON.parseObject(jsonStrObj);
String erpVoucherNo = jsonObjectMain.getString("erpVoucherNo");//OA主键
String purpose = jsonObjectMain.getString("purpose");//摘要
StringBuffer stringBuffer = new StringBuffer();
JSONArray jsonStrList = jsonObjectMain.getJSONArray("details");
if(null != jsonStrList && jsonStrList.size()>0){
for (Object o : jsonStrList) {
JSONObject jsonObjectDetails = JSON.parseObject(JSON.toJSONString(o));
String payerAccName = jsonObjectDetails.getString("payerAccName");//转出方账户名(付款账户)
String payerAccNo = jsonObjectDetails.getString("payerAccNo");//转出方账号(付款账号)
String curCode = jsonObjectDetails.getString("curCode");//付款方币种
String payeeAccName = jsonObjectDetails.getString("payeeAccName");//收款人帐户名称
String payeeAccNo = jsonObjectDetails.getString("payeeAccNo");//收款方账户号
BigDecimal amount = jsonObjectDetails.getBigDecimal("amount");//发生额
String payeeBankCode = jsonObjectDetails.getString("payeeBankCode");//联行号
String isQuick = jsonObjectDetails.getString("isQuick");//加急标志
String payType = jsonObjectDetails.getString("payType");//结算方式
stringBuffer.append("<map>\n");
stringBuffer.append("<erpVoucherNo>" + nullConvert(erpVoucherNo) + "</erpVoucherNo>\n");
stringBuffer.append("<payerAccName>" + nullConvert(payerAccName) + "</payerAccName>\n");
//stringBuffer.append("<payerAccName>"+"浙江杭泰数智能源开发有限公司"+"</payerAccName>\n");
stringBuffer.append("<payerAccNo>" + nullConvert(payerAccNo) + "</payerAccNo>\n");
//stringBuffer.append("<payerAccNo>" +"71010122002702903"+ "</payerAccNo>\n");
stringBuffer.append("<curCode>" + nullConvert(curCode) + "</curCode>\n");
stringBuffer.append("<payeeAccName>" + nullConvert(payeeAccName) + "</payeeAccName>\n");
stringBuffer.append("<payeeAccNo>" + nullConvert(payeeAccNo) + "</payeeAccNo>\n");
stringBuffer.append("<amount>" + nullConvert(String.valueOf(amount)) + "</amount>\n");
stringBuffer.append("<payeeBankCode>" + nullConvert(payeeBankCode) + "</payeeBankCode>\n");
//stringBuffer.append("<payeeBankCode>"+"301331000029"+"</payeeBankCode>\n");
stringBuffer.append("<isQuick>" + nullConvert(isQuick) + "</isQuick>\n");
stringBuffer.append("<payType>" + nullConvert(payType) + "</payType>\n");
stringBuffer.append("<purpose>" + nullConvert(purpose) + "</purpose>\n");
stringBuffer.append("</map>\n");
}
} else {
stringBuffer.append("<map>\n");
stringBuffer.append("<erpVoucherNo>" + erpVoucherNo + "</erpVoucherNo>\n");
stringBuffer.append("<purpose>" + purpose + "</purpose>\n");
stringBuffer.append("</map>\n");
}
String xml= requestXML(token,"BkExpenseExchange",stringBuffer,"OA费用报销单同步发送");
logger.info("OA报销单发送CFS的请求参数为:{}", xml);
String url = "HTSZ_OA_BkExpenseWebService?wsdl";
String result = HttpRequest.post(CFSURL+url).header("Content-Type", "soap/xml").timeout(30000).body(xml).execute().body();
logger.info("OA报销单发送CFS的返回参数为:{}", result);
return analyzeXML(result,"pay");
}
}catch (Exception e){
logger.info("杭泰OA报销单传递CFS错误原因为:{}", e.getMessage());
}
return null;
}
//null转成空字符串
private static String nullConvert(String str){
if (null == str){
return "";
}
return str;
}
private String requestXML(String token,String code,StringBuffer stringBuffer,String remark){
String xml = "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:mdm=\"http://mdmData.server.webservice.banck.com\">\n" +
" <soap:Header/>\n" +
" <soap:Body>\n" +
" <mdm:intoPaymentDataXml>\n" +
" <!--Optional:-->\n" +
" <mdm:xml>\n" +
" <![CDATA[\n" +
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<message>\n" +
"<head>\n" +
"<transCode>" + code + "</transCode>\n" +
"<erpTimestamp>" + DateUtil.dateToString(new Date(), "yyyy-MM-dd HH:mm:ss") + "</erpTimestamp>\n" +
"<sourcePlat>OA</sourcePlat>\n" +
"<desPlat>CFS</desPlat>\n" +
"<rmk>" + remark + "</rmk>\n" +
"<sessionId>" + token + "</sessionId>\n" +
"</head>\n" +
"<body>\n" +
"<list>\n";
if (stringBuffer != null) {
xml += stringBuffer.toString();
xml += "</list>\n" +
"</body>\n" +
"</message>\n" +
" ]]>\n" +
" </mdm:xml>\n" +
" </mdm:intoPaymentDataXml>\n" +
" </soap:Body>\n" +
"</soap:Envelope>";
} else {
xml += "</list>\n" +
"</body>\n" +
"</message>\n" +
"]]>\n" +
" </mdm:xml>\n" +
" </mdm:intoPaymentDataXml>\n" +
" </soap:Body>\n" +
"</soap:Envelope>";
}
return xml;
}
/**
*
* @content 解析CFS返回的xml格式
* @Param
* @Return
* @Author hecan
* @Date 2023/10/19 14:07
* **/
private static String analyzeXML(String result,String type){
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
org.w3c.dom.Document document = builder.parse(new InputSource(new StringReader(result)));
org.w3c.dom.Element bodyElement = (org.w3c.dom.Element) document.getElementsByTagName("ns:return").item(0);
if (null!=bodyElement) {
String textContent = bodyElement.getTextContent();
Document documentContext = DocumentHelper.parseText(textContent);
Element rootElement = documentContext.getRootElement();
Element body = rootElement.element("body");
if (null != body) {
switch (type) {
case "login"://登录
Element sessionId = body.element("sessionId");
if (null != sessionId) {
logger.info("CFS登录的登录校验码为:{}", sessionId.getText());
return sessionId.getText();
} else {
logger.info("CFS登录的登录校验码没有获取到请重新获取");
return null;
}
case "pay"://付款单和报销单
Element list = body.element("list");
List<Element> elements = list.elements();
String serialNo = null;
String statusMsg = null;
String erpVoucherNoCfs = null;
for (Element element : elements) {
serialNo = element.element("serialNo").getText();
statusMsg = element.element("statusMsg").getText();
erpVoucherNoCfs = element.element("erpVoucherNo").getText();
}
JSONObject jsonObject=new JSONObject();
jsonObject.put("erpVoucherNoCfs",erpVoucherNoCfs);
jsonObject.put("statusMsg",statusMsg);
jsonObject.put("serialNo",serialNo);
//return "当前单据:" + erpVoucherNoCfs + ",传递CFS返回信息:" + statusMsg + ",流水号:" + serialNo;
return jsonObject.toJSONString();
default:
break;
}
}
}
}catch (Exception e){
logger.info("解析CFS返回的xml格式错误:{}",e.getMessage());
}
return null;
}
}

View File

@ -0,0 +1,194 @@
package com.hzya.frame.bip.v3.v2207.dps.task;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.bip.v3.v2207.dps.service.IPayMentService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.File;
import java.util.HashMap;
@EnableScheduling
@Component
public class ElectronicTask {
static Logger logger= LoggerFactory.getLogger(ElectronicTask.class);
@Resource
private IPayMentService payMentService;
//@Resource
//private ISeeYonDao seeYonDao;
//@Resource
//private ICtpAttachmentDao ctpAttachmentDao;
//@Scheduled(cron = "0 20 10 * * ?")
//public void sendElectronicToCFS() {
// logger.info("CFS电子回单共享开始执行---------->");
// try {
// String token = payMentService.sendCFSToken("admin", "aHRzejg4OA==");
// if(null!=token) {
// List<SeeyonEntity> seeyonEntities = seeYonDao.selectOAListByTypeformmain_0327(new SeeyonEntity());
// if (seeyonEntities != null && seeyonEntities.size() > 0) {
// for (SeeyonEntity seeyonEntity : seeyonEntities) {
// String bankAcc = seeyonEntity.getField0137();//付款账号
// //String bankAcc="03005389347";
// String erpVoucherNo = seeyonEntity.getId();//OA付款单号
// String xml = "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:mdm=\"http://mdmData.server.webservice.banck.com\">\n" +
// " <soap:Header/>\n" +
// " <soap:Body>\n" +
// " <mdm:intoPaymentDataXml>\n" +
// " <!--Optional:-->\n" +
// " <mdm:xml>\n" +
// " <![CDATA[\n" +
// " <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
// "<message>\n" +
// "<head>\n" +
// "<transCode>BkReceiptQueryExchange</transCode>\n" +
// "<erpTimestamp>" + DateUtil.dateToString(new Date(), "yyyy-mm-dd hh:mm:ss") + "</erpTimestamp>\n" +
// "<sourcePlat>CFS</sourcePlat>\n" +
// "<desPlat>OA</desPlat>\n" +
// "<rmk>OA电子回单共享发送</rmk>\n" +
// "<sessionId>" + token + "</sessionId>\n" +
// "</head>\n" +
// "<body>\n" +
// "<bankAcc>" + bankAcc + "</bankAcc>\n" +
// "<erpVoucherNo>" + erpVoucherNo + "</erpVoucherNo>\n" +
// "</body>\n" +
// "</message>\n" +
// " ]]>\n" +
// " </mdm:xml>\n" +
// " </mdm:intoPaymentDataXml>\n" +
// " </soap:Body>\n" +
// "</soap:Envelope>";
// logger.info("CFS电子回单共享请求参数为:{}", xml);
// String url = "http://101.132.140.208:26893/erp/services/HTSZ_OA_BkReceiptQueryWebService?wsdl";
// String result = HttpRequest.post(url).header("Content-Type", "soap/xml").timeout(30000).body(xml).execute().body();
// logger.info("CFS电子回单共享请求参数为:{}", result);
// DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// DocumentBuilder builder = factory.newDocumentBuilder();
// org.w3c.dom.Document document = builder.parse(new InputSource(new StringReader(result)));
// org.w3c.dom.Element bodyElement = (org.w3c.dom.Element) document.getElementsByTagName("ns:return").item(0);
// if (null != bodyElement) {
// String textContent = bodyElement.getTextContent();
// Document documentContext = DocumentHelper.parseText(textContent);
// Element rootElement = documentContext.getRootElement();
// Element body = rootElement.element("body");
// if("0000".equalsIgnoreCase(rootElement.element("head").element("returnCode").getText())){
// if (null != body) {
// Element listElc = body.element("list");
// List<Element> elementsElc = listElc.elements();
// for (Element element : elementsElc) {
// String fielPath = element.element("filePath").getText();//电子回单附件路径
// if (fielPath != null && fielPath!="") {
// // String fielPath="C:\\Users\\笃曙\\Desktop\\15HZ000342CIBN2023091100066856211000001.pdf";
// File file = new File(fielPath);
// JSONObject jsonObject = fileUpload(file);
// logger.info("上传返回的附件id为:{}", jsonObject.getString("fileUrl"));
// if (jsonObject.getString("fileUrl") != null) {
// //表单的附件字段=ctpAttachment的Sub_reference表单的Summary_id=ctpAttachment的att_reference
// String sub_reference = String.valueOf(UUIDLong.longUUID());
// seeyonEntity.setField0264(sub_reference);
// seeYonDao.updateFormformmain_0327(seeyonEntity);
// //根据附件id查询附件业务数据
// String file_url = jsonObject.getString("fileUrl");
// CtpAttachmentEntity ctpAttachmentEntity = new CtpAttachmentEntity();
// ctpAttachmentEntity.setFile_url(file_url);
// String att_reference = seeyonEntity.getSummary_id();//Summary_id
// ctpAttachmentEntity.setSub_reference(sub_reference);
// ctpAttachmentEntity.setAtt_reference(att_reference);
// List<CtpAttachmentEntity> ctpAttachmentEntities = ctpAttachmentDao.queryCtpAttachment(ctpAttachmentEntity);
// //如果没有查询到数据就新增附件业务否则更新
// if (ctpAttachmentEntities.size() == 0) {
// String category = jsonObject.getString("category");
// String type = jsonObject.getString("type");
// String filename = jsonObject.getString("filename");
// String mime_type = jsonObject.getString("mimeType");
// String attachment_size = jsonObject.getString("size");
// String id = String.valueOf(UUIDLong.longUUID());
// ctpAttachmentEntity.setCategory(category);
// ctpAttachmentEntity.setFilename(filename);
// ctpAttachmentEntity.setType(type);
// ctpAttachmentEntity.setMime_type(mime_type);
// ctpAttachmentEntity.setAttachment_size(attachment_size);
// ctpAttachmentEntity.setId(id);
// ctpAttachmentEntity.setCategory("66");
// ctpAttachmentEntity.setCreatedate(new Date());
// ctpAttachmentDao.saveCtpAttachment(ctpAttachmentEntity);
// } else {
// if (ctpAttachmentEntities.size() > 1) {
// throw new BaseSystemException("OA附件业务表中查到多条记录");
// }
// //更新数据到OA附件业务表中
// ctpAttachmentDao.updateCtpAttachment(ctpAttachmentEntity);
// }
// }
// }
// }
// }
// }else{
// logger.info("CFS电子回单返回得错误编码{},以及返回的错误信息:{}",rootElement.element("head").element("returnCode").getText(),rootElement.element("head").element("returnMsg").getText());
// }
// }
// }
// }
// }
// }catch (Exception e){
// logger.info("CFS电子回单共享错误:{}",e.getMessage());
// }
//}
public static JSONObject fileUpload(File file) {
if (null != file) {
try {
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("file", file);
String url = "/seeyon/rest/attachment?token=@token@";//如果后面加上applicationCategory=1&extensions=&firstSave=true附件业务自动生成一条记录
url = url.replaceAll("@token@", getToken());
String result = HttpUtil.post("http://60.204.152.210" + url, paramMap);
if (StrUtil.isNotBlank(result)) {
logger.info("附件上传结果"+result);
JSONObject jsonObject = JSONObject.parseObject(result);
String atts = jsonObject.get("atts").toString();
if (StrUtil.isNotEmpty(atts)) {
JSONArray jsonArray = JSONArray.parseArray(atts);
JSONObject res = (JSONObject) jsonArray.get(0);
/* String fileUrl = res.getString("fileUrl");
logger.info("附件id:" + fileUrl);
return fileUrl;*/
return res;
}
}
}catch (Exception e){
logger.error("附件上传失败"+e.getMessage());
}
}
return null;
}
private static String getToken() {
//获取oatoken
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("userName", "hzyaRest");
hashMap.put("password", "a5ce21b8-91db-4cec-b3e3-3e44719655fd");
hashMap.put("loginName","bdmanager");
String result = HttpUtil.post("http://60.204.152.210" + "/seeyon/rest/token", JSON.toJSONString(hashMap));
JSONObject jsonObject = JSONObject.parseObject(result);
if (null != jsonObject) {
logger.info(result);
logger.info("======token{}======" + jsonObject.getString("id"));
return jsonObject.getString("id");
}
return null;
}
}

View File

@ -0,0 +1,65 @@
package com.hzya.frame.bip.v3.v2207.entity;
import com.hzya.frame.web.entity.BaseEntity;
/****
* BIP组织账户
* @content:
* @author 👻👻👻👻👻👻👻👻 gjh
* @date 2023-10-24 10:03
* @param
* @return
**/
public class BipOrgsDetailsEntity extends BaseEntity {
/*开户行编码*/
private String bankCode;
/*开户行名称*/
private String bankName;
/*账户*/
private String accnum;
/*与组织关联的字段*/
private String controlorg;
/*联行号*/
private String cnapsCode;
public String getCnapsCode() {
return cnapsCode;
}
public void setCnapsCode(String cnapsCode) {
this.cnapsCode = cnapsCode;
}
public String getControlorg() {
return controlorg;
}
public void setControlorg(String controlorg) {
this.controlorg = controlorg;
}
public String getBankCode() {
return bankCode;
}
public void setBankCode(String bankCode) {
this.bankCode = bankCode;
}
public String getBankName() {
return bankName;
}
public void setBankName(String bankName) {
this.bankName = bankName;
}
public String getAccnum() {
return accnum;
}
public void setAccnum(String accnum) {
this.accnum = accnum;
}
}

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzya.frame.bip.v3.v2207.dao.impl.BipOrgsDetailsDaoImpl">
<resultMap id="get-BipOrgsDetailsEntity-result" type="com.hzya.frame.bip.v3.v2207.entity.BipOrgsDetailsEntity">
<result property="bankCode" column="bankCode" />
<result property="bankName" column="bankName" />
<result property="accnum" column="accnum" />
<result property="controlorg" column="controlorg" />
<result property="cnapsCode" column="cnapsCode" />
</resultMap>
<sql id="BipOrgsDetailsEntity_Base_Column_List">
bankdoc.code as bankCode,bankdoc.name as bankName,bankaccbas.accnum,bankaccbas.controlorg,bankaccbas.combinenum as cnapsCode
</sql>
<!--通过ID获取数据 -->
<select id="entity_get" resultMap="get-BipOrgsDetailsEntity-result">
select
<include refid="BipOrgsDetailsEntity_Base_Column_List" />
from bd_bankaccbas where pk_bankaccbas = #{pk_bankaccbas}
</select>
<!-- 查询 采用==查询 -->
<select id="thirdInterfaceGetOrgsDetails" resultMap="get-BipOrgsDetailsEntity-result" parameterType="com.hzya.frame.bip.v3.v2207.entity.BipOrgsDetailsEntity">
select
<include refid="BipOrgsDetailsEntity_Base_Column_List" />
from bd_bankaccbas bankaccbas
left join bd_bankdoc bankdoc on bankdoc.pk_bankdoc=bankaccbas.pk_bankdoc
<trim prefix="where" prefixOverrides="and">
<if test="bankCode != null and bankCode !=''">bankdoc.code=#{bankCode}</if>
<if test="bankName != null and bankName !='' "> and bankdoc.name = #{bankName}</if>
<if test="accnum != null and accnum !='' "> and bankaccbas.accnum = #{accnum}</if>
and bankaccbas.dr='0' and bankdoc.dr='0' and bankaccbas.pk_banktype!='0001Z01000000000036S' and bankaccbas.controlorg = #{controlorg}
</trim>
</select>
</mapper>

View File

@ -0,0 +1,63 @@
package com.hzya.frame.bip.v3.v2207.entity;
import com.hzya.frame.web.entity.BaseEntity;
/**
* @description: BIP组织 entity
* @tableName: org_orgs
* @entityName: BipOrgsEntity
* @author: gjh
* @history: 1.0
*/
public class BipOrgsEntity extends BaseEntity {
/*单位编码*/
private String code;
/*开户单位*/
private String name;
/*BIPID*/
private String tripartiteId;
private String pk_financeorg;
private String orgsts;
public String getOrgsts() {
return orgsts;
}
public void setOrgsts(String orgsts) {
this.orgsts = orgsts;
}
public String getPk_financeorg() {
return pk_financeorg;
}
public void setPk_financeorg(String pk_financeorg) {
this.pk_financeorg = pk_financeorg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTripartiteId() {
return tripartiteId;
}
public void setTripartiteId(String tripartiteId) {
this.tripartiteId = tripartiteId;
}
}

View File

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzya.frame.bip.v3.v2207.dao.impl.BipOrgsDaoImpl">
<resultMap id="get-BipOrgsEntity-result" type="com.hzya.frame.bip.v3.v2207.entity.BipOrgsEntity">
<result property="tripartiteId" column="tripartiteId" />
<result property="code" column="code" />
<result property="name" column="name" />
<result property="pk_financeorg" column="pk_financeorg"/>
<result property="orgsts" column="orgsts"/>
</resultMap>
<sql id="BipOrgsEntity_Base_Column_List">
orgs.pk_financeorg as tripartiteId,
orgs.name ,
orgs.code,
max(org_bank.ts)as ts
</sql>
<sql id="BipOrgsEntity_Base_Column_List_details">
bankdoc.code as bankCode,bankdoc.name as bankName,bankaccbas.accnum,bankaccbas.controlorg
</sql>
<!--通过ID获取数据 -->
<select id="entity_get" resultMap="get-BipOrgsEntity-result">
select
<include refid="BipOrgsEntity_Base_Column_List" />
from org_financeorg where pk_financeorg = #{pk_financeorg}
</select>
<select id="thirdInterfaceGetOrgs" resultMap="get-BipOrgsEntity-result" parameterType="com.hzya.frame.bip.v3.v2207.entity.BipOrgsEntity">
select
<include refid="BipOrgsEntity_Base_Column_List" />
FROM
org_financeorg orgs
left join v_hzya_org_bank org_bank on org_bank.controlorg = orgs.pk_financeorg
<trim prefix="where" prefixOverrides="and">
<if test="code != null and code !=''"> orgs.code = #{code}</if>
<if test="name != null and name !='' "> and orgs.name = #{name}</if>
<if test="pk_financeorg != null and pk_financeorg !='' "> and orgs.pk_financeorg = #{tripartiteId}</if>
<if test="orgsts != null and orgsts !='' "> and orgs.ts >'2023-09-30 14:18:39' and orgs.ts > #{orgsts}</if>
and orgs.dr='0'
</trim>
GROUP BY orgs.pk_financeorg ,orgs.name,orgs.code
</select>
<!-- 查询 采用==查询 -->
<select id="thirdInterfaceGetSupplierDetails" resultMap="get-BipOrgsEntity-result" parameterType="com.hzya.frame.bip.v3.v2207.entity.BipOrgsEntity">
select
<include refid="BipOrgsEntity_Base_Column_List_details" />
from bd_bankaccbas bankaccbas
left join bd_bankdoc bankdoc on bankdoc.pk_bankdoc=bankaccbas.pk_bankdoc
<trim prefix="where" prefixOverrides="and">
<if test="code != null and code !=''">bankdoc.code=#{code}</if>
<if test="name != null and name !='' "> and bankdoc.name = #{name}</if>
<if test="accnum != null and accnum !='' "> and bankaccbas.accnum = #{accnum}</if>
<if test="controlorg != null and controlorg !='' "> and bankaccbas.controlorg = #{controlorg}</if>
and bankaccbas.dr='0' and bankdoc.dr='0' and bankaccbas.pk_banktype!='0001Z01000000000036S'
</trim>
</select>
<!-- 查询 采用==查询 -->
<!--<select id="BipOrgsEntity_list_base" resultMap="get-BipOrgsEntity-result" parameterType="com.hzya.frame.bip.v3.v2207.entity.BipOrgsEntity">
select
<include refid="BipOrgsEntity_Base_Column_List" />
FROM bd_cust_supplier supplier
left join db_customerbank bank ON supplier.code = bank.code
<trim prefix="where" prefixOverrides="and">
<if test="code != null and code !=''">supplier.code=#{code}</if>
<if test="name != null and name !='' "> and supplier.name = #{name}</if>
<if test="taxpayerid != null and taxpayerid !='' "> and supplier.taxpayerid = #{taxpayerid}</if>
<if test="def1 != null and def1 !='' "> and bank.def1 = #{def1}</if>
<if test="def2 != null and def2 !='' "> and bank.def2 = #{def2}</if>
<if test="def3 != null and def3 !='' "> and bank.def3 = #{def3}</if>
</trim>
</select>-->
<!-- 分页查询列表 采用like格式 -->
<!--<select id="entity_list_like" resultMap="get-BipOrgsEntity-result" parameterType="com.hzya.frame.bip.v3.v2207.entity.BipOrgsEntity">
select
<include refid="BipOrgsEntity_Base_Column_List" />
FROM bd_cust_supplier supplier
left join db_customerbank bank ON supplier.code = bank.code
<trim prefix="where" prefixOverrides="and">
<if test="code != null and code !=''"> supplier.code like concat('%',#{code},'%')</if>
<if test="name != null and name !='' "> and supplier.name like concat('%',#{name},'%')</if>
<if test="taxpayerid != null and taxpayerid !='' "> and supplier.taxpayeridlike concat('%',#{taxpayeridlike},'%')</if>
<if test="def1 != null and def1 !='' "> and bank.def1 like concat('%',#{def1},'%')</if>
<if test="def2 != null and def2 !='' "> and bank.def2 like concat('%',#{def2},'%')</if>
<if test="def3 != null and def3 !='' "> and bank.def3 like concat('%',#{def3},'%')</if>
</trim>
</select>-->
</mapper>

View File

@ -0,0 +1,77 @@
package com.hzya.frame.bip.v3.v2207.entity;
import com.hzya.frame.web.entity.BaseEntity;
public class BipSupplierDetailsEntity extends BaseEntity {
private String code;
private String name;
/*开户行*/
private String splitbank;
/*银行账号*/
private String bankaccno;
/*是否默认*/
private String isdefault;
/*联行号*/
private String combinno;
private String tripartiteId;
public String getCombinno() {
return combinno;
}
public void setCombinno(String combinno) {
this.combinno = combinno;
}
public String getTripartiteId() {
return tripartiteId;
}
public void setTripartiteId(String tripartiteId) {
this.tripartiteId = tripartiteId;
}
public String getIsdefault() {
return isdefault;
}
public void setIsdefault(String isdefault) {
this.isdefault = isdefault;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSplitbank() {
return splitbank;
}
public void setSplitbank(String splitbank) {
this.splitbank = splitbank;
}
public String getBankaccno() {
return bankaccno;
}
public void setBankaccno(String bankaccno) {
this.bankaccno = bankaccno;
}
}

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzya.frame.bip.v3.v2207.dao.impl.BipSupplierDetailsDaoImpl">
<resultMap id="get-BipSupplierDetailsEntity-result" type="com.hzya.frame.bip.v3.v2207.entity.BipSupplierDetailsEntity">
<result property="code" column="code" />
<result property="name" column="name" />
<result property="splitbank" column="splitbank" />
<result property="bankaccno" column="bankaccno" />
<result property="tripartiteId" column="tripartiteId"></result>
<result property="combinno" column="combinno"></result>
</resultMap>
<sql id="BipSupplierDetailsEntity_Base_Column_List">
splitbank,bankaccno,combinno,name,code
</sql>
<!--通过ID获取数据 -->
<select id="entity_get" resultMap="get-BipSupplierDetailsEntity-result">
select
<include refid="BipSupplierDetailsEntity_Base_Column_List" />
from BD_SUPPLIER where pk_supplier = #{pk_supplier} and sdr='0'
</select>
<!-- 查询 采用==查询 -->
<select id="thirdInterfaceGetSupplierDetails" resultMap="get-BipSupplierDetailsEntity-result" parameterType="com.hzya.frame.bip.v3.v2207.entity.BipSupplierDetailsEntity">
select
<include refid="BipSupplierDetailsEntity_Base_Column_List" />
FROM db_customerbank
<trim prefix="where" prefixOverrides="and">
<if test="code != null and code !=''">code=#{code}</if>
<if test="name != null and name !='' "> and name = #{name}</if>
<if test="bankaccno != null and bankaccno !='' "> and bankaccno = #{bankaccno}</if>
<if test="splitbank != null and splitbank !='' "> and splitbank = #{splitbank}</if>
<if test="combinno != null and combinno !='' "> and combinno = #{combinno}</if>
</trim>
</select>
</mapper>

View File

@ -0,0 +1,92 @@
package com.hzya.frame.bip.v3.v2207.entity;
import com.hzya.frame.web.entity.BaseEntity;
/**
* @description: BIP供应商 entity
* @tableName: BD_SUPPLIER
* @entityName: BipSupplierEntity
* @author: gjh
* @history: 1.0
*/
public class BipSupplierEntity extends BaseEntity {
private String code;
private String name;
/*税号*/
private String taxpayerid;
/*地址*/
private String def1;
/*电话*/
private String def2;
/*联系人*/
private String def3;
private String tripartiteId;
public String getTripartiteId() {
return tripartiteId;
}
public void setTripartiteId(String tripartiteId) {
this.tripartiteId = tripartiteId;
}
private String ts;
public String getTs() {
return ts;
}
public void setTs(String ts) {
this.ts = ts;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTaxpayerid() {
return taxpayerid;
}
public void setTaxpayerid(String taxpayerid) {
this.taxpayerid = taxpayerid;
}
public String getDef1() {
return def1;
}
public void setDef1(String def1) {
this.def1 = def1;
}
public String getDef2() {
return def2;
}
public void setDef2(String def2) {
this.def2 = def2;
}
public String getDef3() {
return def3;
}
public void setDef3(String def3) {
this.def3 = def3;
}
}

View File

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzya.frame.bip.v3.v2207.dao.impl.BipSupplierDaoImpl">
<resultMap id="get-BipSupplierEntity-result" type="com.hzya.frame.bip.v3.v2207.entity.BipSupplierEntity">
<result property="taxpayerid" column="taxpayerid" />
<result property="def1" column="def1" />
<result property="def2" column="def2" />
<result property="def3" column="def3" />
<result property="code" column="code" />
<result property="name" column="name" />
<result property="ts" column="ts" />
<result property="tripartiteId" column="tripartiteId" />
</resultMap>
<sql id="BipSupplierEntity_Base_Column_List">
supplier.code,supplier.name,supplier.taxpayerid,bank.def1,bank.def2,bank.def3,supplier.ts, supplier.pk_cust_sup as tripartiteId
</sql>
<sql id="BipSupplierEntity_Base_Column_List_details">
splitbank,bankaccno,name,code
</sql>
<!--通过ID获取数据 -->
<select id="entity_get" resultMap="get-BipSupplierEntity-result">
select
<include refid="BipSupplierEntity_Base_Column_List" />
from BD_SUPPLIER where pk_supplier = #{pk_supplier} and sdr='0'
</select>
<select id="thirdInterfaceGetSupplier" resultMap="get-BipSupplierEntity-result" parameterType="com.hzya.frame.bip.v3.v2207.entity.BipSupplierEntity">
select
<include refid="BipSupplierEntity_Base_Column_List" />
FROM bd_cust_supplier supplier
left join db_customerbank bank ON supplier.code = bank.code
<trim prefix="where" prefixOverrides="and">
<if test="code != null and code !=''">supplier.code=#{code}</if>
<if test="name != null and name !='' "> and supplier.name = #{name}</if>
<if test="taxpayerid != null and taxpayerid !='' "> and supplier.taxpayerid = #{taxpayerid}</if>
<if test="def1 != null and def1 !='' "> and bank.def1 = #{def1}</if>
<if test="def2 != null and def2 !='' "> and bank.def2 = #{def2}</if>
<if test="def3 != null and def3 !='' "> and bank.def3 = #{def3}</if>
<if test="tripartiteId != null and tripartiteId !='' "> and supplier.tripartiteId = #{tripartiteId}</if>
<if test="ts != null and ts !='' "> and supplier.ts >'2023-09-30 14:18:39' and supplier.ts > #{ts} </if>
</trim>
group by supplier.code,supplier.name,supplier.taxpayerid,bank.def1,bank.def2,bank.def3,supplier.ts, supplier.pk_cust_sup
</select>
<!-- 查询 采用==查询 -->
<select id="thirdInterfaceGetSupplierDetails" resultMap="get-BipSupplierEntity-result" parameterType="com.hzya.frame.bip.v3.v2207.entity.BipSupplierEntity">
select
<include refid="BipSupplierEntity_Base_Column_List_details" />
FROM db_customerbank
<trim prefix="where" prefixOverrides="and">
<if test="code != null and code !=''">code=#{code}</if>
<if test="name != null and name !='' "> and name = #{name}</if>
<if test="bankaccno != null and bankaccno !='' "> and bankaccno = #{bankaccno}</if>
<if test="splitbank != null and splitbank !='' "> and splitbank = #{splitbank}</if>
</trim>
</select>
<!-- 查询 采用==查询 -->
<select id="BipSupplierEntity_list_base" resultMap="get-BipSupplierEntity-result" parameterType="com.hzya.frame.bip.v3.v2207.entity.BipSupplierEntity">
select
<include refid="BipSupplierEntity_Base_Column_List" />
FROM bd_cust_supplier supplier
left join db_customerbank bank ON supplier.code = bank.code
<trim prefix="where" prefixOverrides="and">
<if test="code != null and code !=''">supplier.code=#{code}</if>
<if test="name != null and name !='' "> and supplier.name = #{name}</if>
<if test="taxpayerid != null and taxpayerid !='' "> and supplier.taxpayerid = #{taxpayerid}</if>
<if test="def1 != null and def1 !='' "> and bank.def1 = #{def1}</if>
<if test="def2 != null and def2 !='' "> and bank.def2 = #{def2}</if>
<if test="def3 != null and def3 !='' "> and bank.def3 = #{def3}</if>
</trim>
</select>
<!-- 分页查询列表 采用like格式 -->
<select id="entity_list_like" resultMap="get-BipSupplierEntity-result" parameterType="com.hzya.frame.bip.v3.v2207.entity.BipSupplierEntity">
select
<include refid="BipSupplierEntity_Base_Column_List" />
FROM bd_cust_supplier supplier
left join db_customerbank bank ON supplier.code = bank.code
<trim prefix="where" prefixOverrides="and">
<if test="code != null and code !=''"> supplier.code like concat('%',#{code},'%')</if>
<if test="name != null and name !='' "> and supplier.name like concat('%',#{name},'%')</if>
<if test="taxpayerid != null and taxpayerid !='' "> and supplier.taxpayeridlike concat('%',#{taxpayeridlike},'%')</if>
<if test="def1 != null and def1 !='' "> and bank.def1 like concat('%',#{def1},'%')</if>
<if test="def2 != null and def2 !='' "> and bank.def2 like concat('%',#{def2},'%')</if>
<if test="def3 != null and def3 !='' "> and bank.def3 like concat('%',#{def3},'%')</if>
</trim>
</select>
</mapper>

View File

@ -0,0 +1,13 @@
package com.hzya.frame.bip.v3.v2207.entity;
import com.hzya.frame.web.entity.BaseEntity;
/**
* com.hzya.frame.bip.v3.v2207.entity
*
* @author makejava
* @date 2024-05 -27 11:24
*/
public class BipTokenVo extends BaseEntity {
}

View File

@ -0,0 +1,31 @@
package com.hzya.frame.bip.v3.v2207.service;
import com.hzya.frame.basedao.service.IBaseService;
import com.hzya.frame.bip.v3.v2207.entity.BipTokenVo;
import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity;
import com.hzya.frame.web.entity.JsonResultEntity;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public interface IBipSsoService extends IBaseService<BipTokenVo,String>{
/**
*
* @content Bip单点统一认证接口
* @author laborer
* @date 2024/5/30 0030 13:45
*
*/
String erpSso(HttpServletRequest request, String ticket)throws Exception;
/**
*
* @content 此方法获取sso动态加密heade参数动态传入
* @author laborer
* @date 2024/5/27 0027 11:38
*
*/
SysExtensionApiEntity ssoEncrypt(SysExtensionApiEntity entity);
}

View File

@ -0,0 +1,18 @@
package com.hzya.frame.bip.v3.v2207.service;
import com.hzya.frame.basedao.service.IBaseService;
import com.hzya.frame.bip.v3.v2207.entity.BipTokenVo;
import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity;
public interface IBipV32207BillService extends IBaseService<BipTokenVo,String>{
/**
*
* @content 此方法获取BIPtokenheade参数动态传入
* @author laborer
* @date 2024/5/27 0027 11:38
*
*/
SysExtensionApiEntity getBipBill(SysExtensionApiEntity entity);
}

View File

@ -0,0 +1,49 @@
package com.hzya.frame.bip.v3.v2207.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.hzya.frame.basedao.service.IBaseService;
import com.hzya.frame.bip.v3.v2207.entity.BipSupplierEntity;
import com.hzya.frame.web.entity.JsonResultEntity;
public interface IBipV32207Service extends IBaseService<BipSupplierEntity,String>{
/**
* @param jsonObject
* @return com.hzya.frame.web.entity.JsonResultEntity
* @Description 获取token
**/
JsonResultEntity thirdInterfaceGetToken(JSONObject jsonObject);
/**
* @param jsonObject
* @return com.hzya.frame.web.entity.JsonResultEntity
* @Description 获取供应商
**/
@DS("oracle91")
JsonResultEntity thirdInterfaceGetSupplier(JSONObject jsonObject);
/**
* @param jsonObject
* @return com.hzya.frame.web.entity.JsonResultEntity
* @Description 新增供应商
**/
JsonResultEntity thirdInterfaceSaveSupplier(JSONObject jsonObject);
/**
* 供应商传递OA
* @param jsonObject
* @return
*/
JsonResultEntity thirdInterfaceSendOa(JSONObject jsonObject) throws Exception;
/**
* 获取BIP组织数据
* @param jsonObject
* @return
*/
JsonResultEntity thirdInterfaceGetOrgs(JSONObject jsonObject);
}

View File

@ -0,0 +1,22 @@
package com.hzya.frame.bip.v3.v2207.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.hzya.frame.basedao.service.IBaseService;
import com.hzya.frame.bip.v3.v2207.entity.BipSupplierEntity;
import com.hzya.frame.bip.v3.v2207.entity.BipTokenVo;
import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity;
import com.hzya.frame.web.entity.JsonResultEntity;
public interface IBipV32207TokenService extends IBaseService<BipTokenVo,String>{
/**
*
* @content 此方法获取BIPtokenheade参数动态传入
* @author laborer
* @date 2024/5/27 0027 11:38
*
*/
SysExtensionApiEntity getBipToken(SysExtensionApiEntity entity);
}

View File

@ -0,0 +1,114 @@
package com.hzya.frame.bip.v3.v2207.service.impl;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpException;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.hzya.frame.basedao.service.impl.BaseService;
import com.hzya.frame.bip.v3.v2207.entity.BipTokenVo;
import com.hzya.frame.bip.v3.v2207.service.IBipSsoService;
import com.hzya.frame.iputil.IPUtil;
import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity;
import nccloud.security.impl.SignatureTookKit;
import org.apache.commons.codec.binary.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
@Service(value = "BipSsoServiceImpl")
public class BipSsoServiceImpl extends BaseService<BipTokenVo, String> implements IBipSsoService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
private final String BASEURL = "http://192.168.2.237:8099/seeyon/thirdpartyController.do?ticket=";
private final String ESBURL = "http://127.0.0.1:9081/kangarooDataCenterV3/entranceController/externalCallInterface";
/**
*
* @content Bip单点统一认证接口
* @author laborer
* @date 2024/5/30 0030 13:45
*
*/
@Override
public String erpSso(HttpServletRequest request,String userCode)throws Exception {
logger.info("当前IP地址为"+ JSON.toJSONString(IPUtil.getIpAddress(request)));
String result = "";
boolean flag = true;
// logger.info("接收到致远OA认证参数的ticket{}",ticket);
//通过ticket获取OA用户信息
// String userCode = HttpUtil.get(BASEURL+ticket);
logger.info("获取到的OA用户信息{}",userCode);
String dsname = "ycjf";
String client_id = "OAREST";//第三方系统id
StringBuffer sb = new StringBuffer();
if(StrUtil.isNotEmpty(userCode)){
try {
logger.info("开始加密");
String security = genKey(userCode,userCode + (System.currentTimeMillis() + "").substring(0, 6));
logger.info("加密结束:{}",security);
sb.append("type=type_security&dsname="+dsname+"&usercode="+userCode+"&client_id="+client_id+"&security="+security);
String baseUrl = "http://10.75.51.78:8899/service/genThirdPartyAccessToken?"+sb.toString();
logger.info("请求BIPtokenbaseUrl{}",baseUrl);
result = HttpRequest.post(baseUrl)
.header("Content-Type", "application/x-www-form-urlencoded")//头信息多个头信息多次调用此方法即可
.header("Content-Length", "10000")//头信息多个头信息多次调用此方法即可
.header("userid", "admin")//头信息多个头信息多次调用此方法即可
.body("{}")//表单内容
.timeout(20000)//超时毫秒
.execute().body();
logger.info("获取到的BIPtoken信息{}",result);
} catch (HttpException e) {
flag=false;
e.printStackTrace();
}
}
if(flag){
String indexUR = "http://10.75.51.78:8899/nccloud/resources/uap/rbac/thirdpartylogin/main/index.html?accesstoken="+result+"&redirect_uri=http://10.75.51.78:8899/nccloud/resources/workbench/public/common/main/index.html#";
logger.info(indexUR);
return indexUR;
}else{
return "http://10.75.51.78:8899/nccloud/resources/uap/rbac/login/main/index.html";
}
}
/**
*
* @content 此方法获取sso动态加密heade参数动态传入
* @author laborer
* @date 2024/5/27 0027 11:38
*
*/
@Override
public SysExtensionApiEntity ssoEncrypt(SysExtensionApiEntity entity) {
try {
Map<String, String> headers = entity.getHeaders();
String userCode = headers.get("usercode");//用户编码
String dsname = headers.get("dsname");//数据源
String client_id = headers.get("client_id");//第三方系统id
StringBuffer sb = new StringBuffer();
String security = genKey(userCode,userCode + (System.currentTimeMillis() + "").substring(0, 6));
StringBuffer querys = new StringBuffer();
querys.append("type=type_security");
querys.append("&dsname="+dsname);
querys.append("&usercode="+userCode);
querys.append("&client_id="+client_id);
querys.append("&security="+security);
entity.setQuerys(querys.toString());
headers.put("Content-Type", "application/x-www-form-urlencoded");
headers.put("userid", "admin");
entity.setHeaders(headers);
} catch (Exception e) {
e.printStackTrace();
}
return entity;
}
/**获取NCC的key*/
private static String genKey(String userid, String key) throws Exception {
return new Base64().encodeToString(SignatureTookKit.digestSign(userid.getBytes(), key.getBytes()));
}
}

View File

@ -0,0 +1,62 @@
package com.hzya.frame.bip.v3.v2207.service.impl;
import com.hzya.frame.basedao.service.impl.BaseService;
import com.hzya.frame.bip.v3.v2207.entity.BipTokenVo;
import com.hzya.frame.bip.v3.v2207.service.IBipV32207BillService;
import com.hzya.frame.bip.v3.v2207.service.IBipV32207TokenService;
import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity;
import com.hzya.frame.util.bipV3.Encryption;
import com.hzya.frame.util.bipV3.SHA256Util;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
@Service(value = "BipV32207BillServiceImpl")
public class BipV32207BillServiceImpl extends BaseService<BipTokenVo, String> implements IBipV32207BillService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
/**
*
* @content 此方法获取拼接单据动态加密heade参数动态传入
* @author laborer
* @date 2024/5/27 0027 11:38
*
*/
@Override
public SysExtensionApiEntity getBipBill(SysExtensionApiEntity entity) {
try {
Map<String, String> headers = entity.getHeaders();
String client_id = headers.get("client_id");
//token信息
String access_token = headers.get("access_token");
//公钥
String pubKey = headers.get("pubKey");
StringBuffer sb = new StringBuffer();
sb.append(client_id);
String parm = entity.getBodys();
if (StringUtils.isNotBlank(parm)) {
sb.append(parm);
}
sb.append(pubKey);
// 签名
String sign = SHA256Util.getSHA256(sb.toString(), pubKey);
StringBuffer querys = new StringBuffer();
querys.append("access_token="+access_token);
querys.append("&signature="+sign);
querys.append("&client_id="+client_id);
entity.setQuerys(querys.toString());
headers.put("signature",sign);
// headers.put("content-type","application/x-www-form-urlencoded");
} catch (Exception e) {
e.printStackTrace();
}
return entity;
}
}

View File

@ -0,0 +1,480 @@
package com.hzya.frame.bip.v3.v2207.service.impl;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.google.gson.Gson;
import com.hzya.frame.base.PluginBaseEntity;
import com.hzya.frame.basedao.service.impl.BaseService;
import com.hzya.frame.bip.v3.v2207.dao.IBipOrgsDao;
import com.hzya.frame.bip.v3.v2207.dao.IBipOrgsDetailsDao;
import com.hzya.frame.bip.v3.v2207.dao.IBipSupplierDao;
import com.hzya.frame.bip.v3.v2207.dao.IBipSupplierDetailsDao;
import com.hzya.frame.bip.v3.v2207.entity.BipOrgsDetailsEntity;
import com.hzya.frame.bip.v3.v2207.entity.BipOrgsEntity;
import com.hzya.frame.bip.v3.v2207.entity.BipSupplierDetailsEntity;
import com.hzya.frame.bip.v3.v2207.entity.BipSupplierEntity;
import com.hzya.frame.bip.v3.v2207.service.IBipV32207Service;
import com.hzya.frame.dateutil.DateUtil;
import com.hzya.frame.util.PluginUtils;
import com.hzya.frame.util.bipV3.Encryption;
import com.hzya.frame.util.bipV3.SHA256Util;
import com.hzya.frame.util.oldNcc.CompressUtil;
import com.hzya.frame.util.oldNcc.Decryption;
import com.hzya.frame.web.entity.BaseResult;
import com.hzya.frame.web.entity.JsonResultEntity;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.net.URLEncoder;
import java.util.*;
@Service(value = "bipV32207Service")
public class BipV32207ServiceImpl extends BaseService<BipSupplierEntity, String> implements IBipV32207Service {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
//定义项目开始同步日期
private String ts = "2023-09-30 15:47:08";
//组织的同步日期
private String orgsts = "2023-09-30 15:47:08";
@Autowired
private IBipSupplierDao bipSupplierDao;
@Autowired
private IBipSupplierDetailsDao bipSupplierDetailsDao;
@Autowired
private IBipOrgsDao bipOrgsDao;
@Autowired
private IBipOrgsDetailsDao bipOrgsDetailsDao;
/**
* @param object
* @return com.hzya.frame.web.entity.JsonResultEntity
* @Description 获取token
**/
@Override
public JsonResultEntity thirdInterfaceGetToken(JSONObject object) {
JSONObject jsonObject = getstrObj("jsonStr", object);
String client_id = jsonObject.getString("client_id");
String pubKey = jsonObject.getString("pubKey");
String client_secret = jsonObject.getString("client_secret");
String username = jsonObject.getString("username");
String pwd = jsonObject.getString("pwd");
String busi_center = jsonObject.getString("busi_center");
String dsname = jsonObject.getString("dsname");
String baseUrl = jsonObject.getString("baseUrl");
Map<String, String> paramMap = new HashMap<String, String>();
// 密码模式认证
paramMap.put("grant_type", "password");
// 第三方应用id
paramMap.put("client_id", client_id);
// 第三方应用secret 公钥加密
try {
paramMap.put("client_secret", URLEncoder.encode(Encryption.pubEncrypt(pubKey, client_secret), "utf-8"));
} catch (Exception e) {
e.printStackTrace();
}
// ncc用户名
paramMap.put("username", username);
// 密码 公钥加密
try {
paramMap.put("password", URLEncoder.encode(Encryption.pubEncrypt(pubKey, pwd), "utf-8"));
} catch (Exception e) {
return BaseResult.getFailureMessageEntity("获取token失败");
}
// 账套编码
paramMap.put("biz_center", busi_center);
// 签名
String sign = SHA256Util.getSHA256(client_id + client_secret + username + pwd + pubKey, pubKey);
paramMap.put("signature", sign);
paramMap.put("dsname", dsname);
String url = baseUrl + "/nccloud/opm/accesstoken";
String mediaType = "application/x-www-form-urlencoded";
String token = null;
try {
token = doPostHutool(url, paramMap, mediaType, null, "", "token");
} catch (Exception e) {
return BaseResult.getFailureMessageEntity("获取token失败");
}
if (JSONUtil.isTypeJSON(token)) {
JSONObject jsonObject1 = JSONObject.parseObject(token);
return BaseResult.getSuccessMessageEntity("获取token成功", jsonObject1);
} else {
return BaseResult.getSuccessMessageEntity("获取token成功", token);
}
}
/**
* 发送post请求
*
* @param baseUrl
* @param paramMap
* @param mediaType
* @param headers
* @param json
* @return
*/
private String doPostHutool(String baseUrl, Map<String, String> paramMap, String mediaType, Map<String, String> headers, String json, String type) {
String result = null;
try {
StringBuffer sb = new StringBuffer();
sb.append(baseUrl);
if (paramMap != null) {
sb.append("?");
for (Map.Entry<String, String> entry : paramMap.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
sb.append(key + "=" + value).append("&");
}
}
if ("bill".equals(type)) {
sb.append("?");
for (Map.Entry<String, String> entry : headers.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
sb.append(key + "=" + value).append("&");
}
}
baseUrl = sb.toString().substring(0, sb.toString().length() - 1);
HttpRequest re = HttpRequest.post(baseUrl);
re.addHeaders(headers);
result = re.body(json)
.timeout(2000000)//超时毫秒
.execute().body();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* @param key
* @param object
* @return com.alibaba.fastjson.JSONObject
* @Author lvleigang
* @Description 获取对象转换成jsonobj
* @Date 11:51 下午 2023/7/10
**/
public JSONObject getstrObj(String key, JSONObject object) {
if (checkStr(object.getString(key))) {
return object.getJSONObject(key);
}
return new JSONObject();
}
/**
* @param str
* @return void
* @Author lvleigang
* @Description 校验字符串
* @Date 11:41 上午 2022/12/7
**/
protected Boolean checkStr(String str) {
Boolean flag = true;
if (str == null || "".equals(str)) {
flag = false;
}
return flag;
}
/**
* @param jsonObject
* @return com.hzya.frame.web.entity.JsonResultEntity
* @Description 获取供应商
**/
@Override
public JsonResultEntity thirdInterfaceGetSupplier(JSONObject jsonObject) {
BipSupplierEntity bipSupplierEntity = getData("jsonStr", jsonObject, BipSupplierEntity.class);
//设置查询区间
bipSupplierEntity.setTs(ts);
logger.info("查询供应商数据当前TS"+ts);
List<BipSupplierEntity> bipSupplierEntities = bipSupplierDao.thirdInterfaceGetSupplier(bipSupplierEntity);
//更新TS时间
ts = DateUtil.dateToString(new Date(),"yyyy-MM-dd HH:mm:ss");
logger.info("TS已更新"+ts);
//System.out.println("查询供应商明细");
logger.info("查询供应商明细"+JSON.toJSONString(bipSupplierEntities));
List<JSONObject> jsonObjectList=new ArrayList<>();
//[{"code":"SL20231101727","dataSourceCode":"master","name":"无锡恒君安管理咨询有限公司","taxpayerid":"91320205MAD2HAQN6Q","tripartiteId":"0001A31000000002M3TS","ts":"2023-11-16 14:05:10"}]
List<BipSupplierDetailsEntity> bipSupplierDetails = null;
for (BipSupplierEntity supplierEntity : bipSupplierEntities) {
List<JSONObject> list=new ArrayList<>();
JSONObject jsonObjectResult=new JSONObject();
jsonObjectResult.put("code",supplierEntity.getCode());
jsonObjectResult.put("name",supplierEntity.getName());
jsonObjectResult.put("taxpayerid",supplierEntity.getTaxpayerid());
jsonObjectResult.put("def1",supplierEntity.getDef1());
jsonObjectResult.put("def2",supplierEntity.getDef2());
jsonObjectResult.put("def3",supplierEntity.getDef3());
jsonObjectResult.put("tripartiteId",supplierEntity.getTripartiteId());
//根据供应商编码和名称查询明细
String code = supplierEntity.getCode();
String name = supplierEntity.getName();
//System.out.println("根据供应处名称编码获取明细数据code:"+code +"name:"+name);
logger.info("根据供应处名称编码获取明细数据code:"+code +"name:"+name);
BipSupplierDetailsEntity bipSupplierDetailsEntity = new BipSupplierDetailsEntity();
bipSupplierDetailsEntity.setCode(code);
bipSupplierDetailsEntity.setName(name);
logger.info("根据供应商编码,名称查询银行档案 {}",JSON.toJSONString(bipSupplierDetailsEntity));
List<BipSupplierDetailsEntity> bipSupplierDetailsEntities = queryBipSupplierDetails(bipSupplierDetailsEntity) ;
// /bipSupplierDetails.stream().filter(that-> code.equalsIgnoreCase(that.getCode() ) && name.equalsIgnoreCase(that.getName() ) ).collect(Collectors.toList());
logger.info("根据供应处名称,编码获取明细数据 bipSupplierDetailsEntities值{}",JSON.toJSONString(bipSupplierDetailsEntities));
if (bipSupplierDetailsEntities.size()>0 && null!=bipSupplierDetailsEntities){
bipSupplierDetailsEntities.get(0).setIsdefault("-8073674727882144390");
for (BipSupplierDetailsEntity supplierDetailsEntity : bipSupplierDetailsEntities) {
JSONObject jsonObjectDetails=new JSONObject();
jsonObjectDetails.put("splitbank",supplierDetailsEntity.getSplitbank());
jsonObjectDetails.put("bankaccno",supplierDetailsEntity.getBankaccno());
jsonObjectDetails.put("combinno",supplierDetailsEntity.getCombinno());
jsonObjectDetails.put("isdefault",supplierDetailsEntity.getIsdefault());
list.add(jsonObjectDetails);
}
}
jsonObjectResult.put("details",list);
jsonObjectList.add(jsonObjectResult);
}
return BaseResult.getSuccessMessageEntity("查询成功",jsonObjectList);
}
@DS("oracle91")
private List<BipSupplierDetailsEntity> queryBipSupplierDetails(BipSupplierDetailsEntity bipSupplierDetailsEntity){
// BipSupplierDetailsEntity bipSupplierDetailsEntity=new BipSupplierDetailsEntity();
// bipSupplierDetailsEntity.setCode(supplierEntity.getCode());
// bipSupplierDetailsEntity.setName(supplierEntity.getName());
List<BipSupplierDetailsEntity> bipSupplierDetailsEntities = bipSupplierDetailsDao.thirdInterfaceGetSupplierDetails(bipSupplierDetailsEntity);
return bipSupplierDetailsEntities;
}
/**
* 获取BIP组织数据
* @param jsonObject
* @return
*/
@Override
public JsonResultEntity thirdInterfaceGetOrgs(JSONObject jsonObject) {
BipOrgsEntity bipOrgsEntity = getData("jsonStr", jsonObject, BipOrgsEntity.class);
//设置查询区间
bipOrgsEntity.setOrgsts(orgsts);
logger.info("查询组织数据当前TS" + orgsts);
List<BipOrgsEntity> bipOrgsEntities = bipOrgsDao.thirdInterfaceGetOrgs(bipOrgsEntity);
//更新TS时间
orgsts = DateUtil.dateToString(new Date(), "yyyy-MM-dd HH:mm:ss");
logger.info("组织TS已更新" + orgsts);
logger.info("查询组织明细" + JSON.toJSONString(bipOrgsEntities));
List<JSONObject> jsonObjectList = new ArrayList<>();
if (null != bipOrgsEntities && bipOrgsEntities.size() > 0) {
for (BipOrgsEntity orgsEntity : bipOrgsEntities) {
List<JSONObject> list = new ArrayList<>();
JSONObject jsonObjectResult = new JSONObject();
jsonObjectResult.put("code", orgsEntity.getCode());//单位编码
jsonObjectResult.put("name", orgsEntity.getName());//单位名称
jsonObjectResult.put("tripartiteId", orgsEntity.getTripartiteId());//BIPID
//根据组织主键查询明细
String tripartiteId = orgsEntity.getTripartiteId();
//System.out.println("根据供应处名称编码获取明细数据code:"+code +"name:"+name);
logger.info("根据组织主键获取明细数据pk_financeorg:{}", tripartiteId);
BipOrgsDetailsEntity bipOrgsDetailsEntity = new BipOrgsDetailsEntity();
bipOrgsDetailsEntity.setControlorg(tripartiteId);
List<BipOrgsDetailsEntity> bipOrgsDetailsEntities = queryBipOrgsDetails(bipOrgsDetailsEntity);
if (bipOrgsDetailsEntities.size() > 0 && null != bipOrgsDetailsEntities) {
for (BipOrgsDetailsEntity orgsDetailsEntity : bipOrgsDetailsEntities) {
JSONObject jsonObjectDetails = new JSONObject();
jsonObjectDetails.put("bankCode", orgsDetailsEntity.getBankCode());//开户行编码
jsonObjectDetails.put("bankName", orgsDetailsEntity.getBankName());//开户行名称
jsonObjectDetails.put("accnum", orgsDetailsEntity.getAccnum());//账户
jsonObjectDetails.put("cnapsCode", orgsDetailsEntity.getCnapsCode());//联行号
list.add(jsonObjectDetails);
}
}
jsonObjectResult.put("details", list);
jsonObjectList.add(jsonObjectResult);
}
}
return BaseResult.getSuccessMessageEntity("查询成功", jsonObjectList);
}
private List<BipOrgsDetailsEntity> queryBipOrgsDetails(BipOrgsDetailsEntity bipOrgsDetailsEntity){
List<BipOrgsDetailsEntity> bipOrgsDetailsEntities = bipOrgsDetailsDao.thirdInterfaceGetOrgsDetails(bipOrgsDetailsEntity);
return bipOrgsDetailsEntities;
}
/**
* @param object
* @return com.hzya.frame.web.entity.JsonResultEntity
* @Description 新增供应商
**/
@Override
public JsonResultEntity thirdInterfaceSaveSupplier(JSONObject object) {
JSONObject jsonObject = getstrObj("jsonStr", object);
//认证access_token
String access_token = jsonObject.getString("access_token");
//认证security_key
String security_key = jsonObject.getString("security_key");
//服务器ipport
String baseUrl = jsonObject.getString("baseUrl");
//api方法
String apiUrl = jsonObject.getString("apiUrl");
//发送的数据
String sendData =jsonObject.getString("sendData");
//对应于在第三方应用注册当中的app_id
String client_id = jsonObject.getString("client_id");
//公钥
String pubKey = jsonObject.getString("pubKey");
//接口调用业务标识
String busi_id = jsonObject.getString("busi_id");
//重复调用检查
String repeat_check = jsonObject.getString("repeat_check");
//返回值压缩加密级别
String secret_level = jsonObject.getString("secret_level") == null ? "L0": jsonObject.getString("secret_level") ;
try {
String returnStr = sendApi(access_token, security_key, baseUrl,apiUrl,sendData,client_id,pubKey,busi_id,repeat_check,secret_level);
if(JSONUtil.isTypeJSON(returnStr)){
JSONObject jsonObject1 = JSONObject.parseObject(returnStr);
return BaseResult.getSuccessMessageEntity("发送数据成功",jsonObject1);
}else {
return BaseResult.getSuccessMessageEntity("发送数据成功",returnStr);
}
} catch (Exception e) {
return BaseResult.getFailureMessageEntity("发送数据错误");
}
}
/**
* 供应商传递OA
* @param jsonObject
* @return
*/
@Override
public JsonResultEntity thirdInterfaceSendOa(JSONObject jsonObject) throws Exception {
JSONObject jsonObjectStr = getstrObj("jsonStr", jsonObject);
PluginBaseEntity pluginBaseEntity = PluginUtils.getPluginsById(jsonObjectStr.getString("plug_id"));
JsonResultEntity s = pluginBaseEntity.executeBusiness(jsonObjectStr);
return BaseResult.getSuccessMessageEntity("传递成功");
}
/**
* @param access_token 认证access_token
* @param security_key 认证security_key
* @param baseUrl 服务器ipport
* @param apiUrl api方法
* @param putParameter 发送的数据
* @param client_id 对应于在第三方应用注册当中的app_id
* @param pubKey 公钥
* @param busi_id 接口调用业务标识
* @param repeat_check 重复调用检查
* @param secret_level 返回值压缩加密级别
* @return java.lang.String
* @Author lvleigang
* @Description 发起api接口
* @Date 9:52 上午 2023/8/22
**/
private String sendApi(String access_token, String security_key, String baseUrl, String apiUrl, String putParameter, String client_id, String pubKey, String busi_id, String repeat_check, String secret_level) throws Exception{
// header 参数
Map<String, String> headermap = new HashMap<>();
headermap.put("access_token", access_token);
headermap.put("client_id", client_id);
StringBuffer sb = new StringBuffer();
sb.append(client_id);
if (StringUtils.isNotBlank(putParameter)) {
sb.append(putParameter);
}
sb.append(pubKey);
String sign = SHA256Util.getSHA256(sb.toString(), pubKey);
headermap.put("signature", sign);
if (StringUtils.isNotBlank(busi_id)) {
headermap.put("busi_id", busi_id);
}
if (StringUtils.isNotBlank(repeat_check)) {
headermap.put("repeat_check", repeat_check);
}
String mediaType = "application/json;charset=utf-8";
// 表体数据json
// 根据安全级别选择加密或压缩请求表体参数
String json = dealRequestBody(putParameter, security_key, secret_level);
// 返回值
String sendUrl = baseUrl + apiUrl;
String result = doPostHutool(sendUrl, null, mediaType, headermap, json, "bill");
String changeData = dealResponseBody(result, security_key, secret_level);
return changeData;
}
// 返回值进行过加密和压缩对返回值进行解压和解密
private static String dealResponseBody(String source, String security_key, String level) throws Exception {
String result = null;
if (StringUtils.isEmpty(level) || SecretConst.LEVEL0.equals(level)) {
result = source;
} else if (SecretConst.LEVEL1.equals(level)) {
result = Decryption.symDecrypt(security_key, source);
} else if (SecretConst.LEVEL2.equals(level)) {
result = CompressUtil.gzipDecompress(source);
} else if (SecretConst.LEVEL3.equals(level)) {
result = CompressUtil.gzipDecompress(Decryption.symDecrypt(security_key, source));
} else if (SecretConst.LEVEL4.equals(level)) {
result = Decryption.symDecrypt(security_key, CompressUtil.gzipDecompress(source));
} else {
throw new Exception("无效的安全等级");
}
return result;
}
// 根据安全级别设置表体是否加密或压缩
private static String dealRequestBody(String source, String security_key, String level) throws Exception {
String result = null;
if (StringUtils.isEmpty(level) || SecretConst.LEVEL0.equals(level)) {
result = source;
} else if (SecretConst.LEVEL1.equals(level)) {
result = Encryption.symEncrypt(security_key, source);
} else if (SecretConst.LEVEL2.equals(level)) {
result = CompressUtil.gzipCompress(source);
} else if (SecretConst.LEVEL3.equals(level)) {
result = Encryption.symEncrypt(security_key, CompressUtil.gzipCompress(source));
} else if (SecretConst.LEVEL4.equals(level)) {
result = CompressUtil.gzipCompress(Encryption.symEncrypt(security_key, source));
} else {
throw new Exception("无效的安全等级");
}
return result;
}
class SecretConst {
/**
* LEVEL0 不压缩不加密
*/
public static final String LEVEL0 = "L0";
/**
* LEVEL1 只加密不压缩
*/
public static final String LEVEL1 = "L1";
/**
* LEVEL2 只压缩不加密
*/
public static final String LEVEL2 = "L2";
/**
* LEVEL3 先压缩后加密
*/
public static final String LEVEL3 = "L3";
/**
* LEVEL4 先加密后压缩
*/
public static final String LEVEL4 = "L4";
}
}

View File

@ -0,0 +1,92 @@
package com.hzya.frame.bip.v3.v2207.service.impl;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.hzya.frame.base.PluginBaseEntity;
import com.hzya.frame.basedao.service.impl.BaseService;
import com.hzya.frame.bip.v3.v2207.dao.IBipOrgsDao;
import com.hzya.frame.bip.v3.v2207.dao.IBipOrgsDetailsDao;
import com.hzya.frame.bip.v3.v2207.dao.IBipSupplierDao;
import com.hzya.frame.bip.v3.v2207.dao.IBipSupplierDetailsDao;
import com.hzya.frame.bip.v3.v2207.entity.*;
import com.hzya.frame.bip.v3.v2207.service.IBipV32207Service;
import com.hzya.frame.bip.v3.v2207.service.IBipV32207TokenService;
import com.hzya.frame.dateutil.DateUtil;
import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity;
import com.hzya.frame.util.PluginUtils;
import com.hzya.frame.util.bipV3.Encryption;
import com.hzya.frame.util.bipV3.SHA256Util;
import com.hzya.frame.util.oldNcc.CompressUtil;
import com.hzya.frame.util.oldNcc.Decryption;
import com.hzya.frame.web.entity.BaseResult;
import com.hzya.frame.web.entity.JsonResultEntity;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.net.URLEncoder;
import java.util.*;
@Service(value = "bipV32207TokenService")
public class BipV32207TokenServiceImpl extends BaseService<BipTokenVo, String> implements IBipV32207TokenService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
/**
*
* @content 此方法获取BIPtokenheade参数动态传入
* @author laborer
* @date 2024/5/27 0027 11:38
*
*/
@Override
public SysExtensionApiEntity getBipToken(SysExtensionApiEntity entity) {
try {
Map<String, String> headers = entity.getHeaders();
String client_id = headers.get("client_id");
Map<String, String> paramMap = new HashMap<String, String>();
// 密码模式认证
paramMap.put("grant_type", "client_credentials");
// 第三方应用id
paramMap.put("client_id", client_id);
// 第三方应用secret]
String client_secret = headers.get("client_secret");
// 账套编码
String busi_center = headers.get("busi_center");
//用户编码
String usercode = headers.get("usercode");
//数据库编码
String dsname = headers.get("dsname");
String pubKey = headers.get("pubKey");
// 第三方应用secret 公钥加密]
paramMap.put("client_secret", URLEncoder.encode(Encryption.pubEncrypt(pubKey, client_secret), "utf-8"));
// 账套编码
paramMap.put("biz_center", busi_center);
// // TODO 传递数据源和ncc登录用户
paramMap.put("dsname", dsname);
paramMap.put("usercode", usercode);
// 签名
String sign = SHA256Util.getSHA256(client_id + client_secret + pubKey,pubKey);
paramMap.put("signature", sign);
StringBuffer querys = new StringBuffer();
querys.append("biz_center="+busi_center);
querys.append("&grant_type="+"client_credentials");
querys.append("&signature="+sign);
querys.append("&dsname="+dsname);
querys.append("&client_secret="+URLEncoder.encode(Encryption.pubEncrypt(pubKey, client_secret), "utf-8"));
querys.append("&usercode="+usercode);
querys.append("&client_id="+client_id);
entity.setQuerys(querys.toString());
headers.put("content-type","application/x-www-form-urlencoded");
} catch (Exception e) {
e.printStackTrace();
}
return entity;
}
}

View File

@ -0,0 +1,65 @@
package com.hzya.frame.bip.v3.v2207.util;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
/**
* com.hzya.frame.bip.v3.v2207.util
*
* @author makejava
* @date 2024-05 -30 14:20
*/
public class BipUtil {
/**
*
* @content 发送单据到BIP系统
* @author laborer
* @date 2024/6/21 0021 10:51
*
*/
public static String sendU9cTOBipEsb(String parm, String apiCode,String token){
String baseUrl = "http://127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterface";
System.out.println("推送参数"+parm);
String result = HttpRequest.post(baseUrl)
.header("appId", "800023")//头信息多个头信息多次调用此方法即可
.header("access_token", token)//头信息多个头信息多次调用此方法即可
.header("apiCode", apiCode)//头信息多个头信息多次调用此方法即可
.header("publicKey", "ZJYA1vBeY1ai53iNmbAEsw6DImjkXGBkdMailxcBdliFC85Ce7eDIk+3zDUT+v578prj")//头信息多个头信息多次调用此方法即可
.header("secretKey", "7Gp6OjHrIaQ6R3tXGPrI4morjQyWL+qu4JJschQnkBRtv26VDgGFVYKOy5kMZfd/j3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//头信息多个头信息多次调用此方法即可
.body(parm)//表单内容
.timeout(20000)//超时毫秒
.execute().body();
System.out.println("返回参数"+result);
if(StrUtil.isNotEmpty(result)){
return analytic(result);
}
return null;
}
public static String getBipToken(String userCode, String apiCode){
String baseUrl = "http://127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterface";
String result = HttpRequest.post(baseUrl)
.header("appId", "800023")//头信息多个头信息多次调用此方法即可
.header("apiCode", apiCode)//头信息多个头信息多次调用此方法即可
.header("usercode", userCode)//头信息多个头信息多次调用此方法即可
.header("publicKey", "ZJYA1vBeY1ai53iNmbAEsw6DImjkXGBkdMailxcBdliFC85Ce7eDIk+3zDUT+v578prj")//头信息多个头信息多次调用此方法即可
.header("secretKey", "7Gp6OjHrIaQ6R3tXGPrI4morjQyWL+qu4JJschQnkBRtv26VDgGFVYKOy5kMZfd/j3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//头信息多个头信息多次调用此方法即可
.body("")//表单内容
.timeout(20000)//超时毫秒
.execute().body();
System.out.println("返回参数"+result);
if(StrUtil.isNotEmpty(result)){
JSONObject obj = JSON.parseObject( analytic(result));
JSONObject data = obj.getJSONObject("data");
return data.getString("access_token");
}
return null;
}
public static String analytic(String parm){
JSONObject main = JSON.parseObject(parm);
return main.getString("attribute");
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
</web-app>

View File

@ -7,7 +7,7 @@
<module>base-common</module> <module>base-common</module>
<module>base-webapp</module> <module>base-webapp</module>
<module>base-core</module> <module>base-core</module>
<!-- <module>fw-bip</module>--> <module>fw-bip</module>
<!-- <module>fw-cbs</module>--> <!-- <module>fw-cbs</module>-->
<!-- <module>fw-dd</module>--> <!-- <module>fw-dd</module>-->
<!-- <module>fw-grpU8</module>--> <!-- <module>fw-grpU8</module>-->