diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/incomeInvoiceData/dao/IIncomeInvoiceDao.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/incomeInvoiceData/dao/IIncomeInvoiceDao.java
index 8fb161da..10b95891 100644
--- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/incomeInvoiceData/dao/IIncomeInvoiceDao.java
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/incomeInvoiceData/dao/IIncomeInvoiceDao.java
@@ -32,5 +32,7 @@ public interface IIncomeInvoiceDao extends IBaseDao<IncomeInvoiceEntity, String>
     List<IncomeInvoiceEntity> queryZtzz(IncomeInvoiceEntity entity);
 
     List<JSONObject> queryByAloneId(IncomeInvoiceEntity jnquerydata);
+
+    List<JSONObject> queryAccount(IncomeInvoiceEntity jnentity);
 }
 
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/incomeInvoiceData/dao/impl/IncomeInvoiceDaoImpl.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/incomeInvoiceData/dao/impl/IncomeInvoiceDaoImpl.java
index 8582aab4..8488fc63 100644
--- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/incomeInvoiceData/dao/impl/IncomeInvoiceDaoImpl.java
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/incomeInvoiceData/dao/impl/IncomeInvoiceDaoImpl.java
@@ -66,5 +66,11 @@ public class IncomeInvoiceDaoImpl extends MybatisGenericDao<IncomeInvoiceEntity,
         List<JSONObject> o = (List<JSONObject>) super.selectList(getSqlIdPrifx() + "queryByAloneId", entity);
         return o;
     }
+
+    @Override
+    public List<JSONObject> queryAccount(IncomeInvoiceEntity jnentity) {
+        List<JSONObject> o = (List<JSONObject>) super.selectList(getSqlIdPrifx() + "queryAccountByZq", jnentity);
+        return o;
+    }
 }
 
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/incomeInvoiceData/entity/IncomeInvoiceEntity.xml b/base-buildpackage/src/main/java/com/hzya/frame/plugin/incomeInvoiceData/entity/IncomeInvoiceEntity.xml
index 0b3d5204..f1355be3 100644
--- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/incomeInvoiceData/entity/IncomeInvoiceEntity.xml
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/incomeInvoiceData/entity/IncomeInvoiceEntity.xml
@@ -540,5 +540,183 @@
             <if test="aloneId != null and aloneId != ''"> and a.ALONE_ID = #{aloneId} </if>
         </trim>
     </select>
+
+
+
+
+    <select id="queryAccountByZq" resultType="com.alibaba.fastjson.JSONObject"  parameterType="com.hzya.frame.plugin.incomeInvoiceData.entity.IncomeInvoiceEntity">
+        -- CREATE or replace VIEW V_LPHB_KMFZYE1 AS
+        select * from (
+        SELECT
+        year,
+        adjustperiod as period,
+        year || '-' || adjustperiod as yearperiod,
+        nt.code AS subjectCode,
+        oa.name AS subjectName,
+        oa.dispname as subjectFullName,
+        ( SELECT code FROM bd_account WHERE pk_account = nt.pid ) as superCode,
+        case
+        when balanorient = '1' then '-1'
+        when balanorient = '0' then '1'
+        end as subjectDir,
+        case
+        when pk_acctype = '0001Z01000000000019S' then 1
+        when pk_acctype = '0001Z01000000000019T' then 2
+        when pk_acctype = '0001Z01000000000019V' then 3
+        when pk_acctype = '0001Z01000000000019U' then 4
+        when pk_acctype = '0001Z01000000000019W' then 5
+        when pk_acctype = '0001Z01000000000019X' then 6
+        end as subjectType,
+        nt.sumprint_level as subjectLevel,
+        case
+        when nt.sumprint_level = '0' then 1
+        when nt.sumprint_level != '0' then 0
+        end as endLevel,
+        sum( debitamount ) AS debitValue,-- 本期借方發生額
+        sum( localcreditamount ) AS creditValue,-- 本期貸方發生額
+        CASE
+        WHEN sum( qmlocalamount ) - ( sum( localdebitamount ) - sum( localcreditamount ) ) > 0 THEN'1'
+        WHEN sum( qmlocalamount ) - ( sum( localdebitamount ) - sum( localcreditamount ) ) = 0 THEN'0' ELSE '-1' END AS initialSubjectDir,
+        case
+        when 	sum( qmlocalamount ) - ( sum( localdebitamount ) - sum( localcreditamount ) )>0 then sum( qmlocalamount ) - ( sum( localdebitamount ) - sum( localcreditamount ) )
+        else 0 end  AS initialDebitBalanceValue,	 -- 期初余额借方金额
+        case when 	sum( qmlocalamount ) - ( sum( localdebitamount ) - sum( localcreditamount ) ) &lt; 0 then sum( qmlocalamount ) - ( sum( localdebitamount ) - sum( localcreditamount ) )
+        else 0 end AS initialCreditBalanceValue,	 -- 期初余额贷方金额
+
+        CASE
+        WHEN sum( qmamount ) > 0 THEN'1'
+        WHEN sum( qmamount ) = 0 THEN'0' ELSE '-1' END AS balanceSubjectDir,
+        case when sum( qmlocalamount )>0 then sum( qmlocalamount )
+        else 0 end as 	balanceDeditValue, -- 期末余额借方金额
+
+        case when sum( qmlocalamount )>0 then sum( qmlocalamount )
+        else 0 end as	balanceCreditValue, -- 期末余额贷方金额
+        sum( ljlocaldebitamount ) AS totalDebitValue,
+        sum( ljlocalcreditamount ) AS totalCreditValue,
+        org.code GSBM,
+        org.name GSMC
+        FROM
+        (
+        SELECT DISTINCT
+        accperiodmonth.periodyear YEAR,
+        accperiodmonth.PERIOD ADJUSTPERIOD,
+        dezz.pk_org,
+        dezz.pk_accasoa,
+        dezz.pk_currtype,
+        dezz.assid assid,
+        0 AS localdebitamount,
+        0 AS localcreditamount,
+        0 AS debitamount,
+        0 AS creditamount,
+        sum( localdebitamount ) AS ljlocaldebitamount,
+        sum( localcreditamount ) AS ljlocalcreditamount,
+        sum( debitamount ) AS ljdebitamount,
+        sum( creditamount ) AS ljcreditamount,
+        0 AS qmlocalamount,
+        0 AS qmamount
+        FROM
+        ( SELECT substr( yearmth, 0, 4 ) periodyear, substr( yearmth, 6, 7 ) period FROM bd_accperiodmonth WHERE yearmth  &lt; TO_CHAR( SYSDATE, 'YYYY-MM' ) ) accperiodmonth
+        LEFT JOIN gl_balance dezz ON dezz.YEAR = accperiodmonth.periodyear
+        AND dezz.adjustperiod  &lt; = accperiodmonth.period
+        WHERE
+        voucherkind != 5
+        AND voucherkind != 4
+        AND dezz.adjustperiod > '00'
+        GROUP BY
+        accperiodmonth.periodyear,
+        accperiodmonth.PERIOD,
+        dezz.pk_org,
+        dezz.pk_accasoa,
+        dezz.pk_currtype,
+        dezz.assid UNION ALL
+        SELECT DISTINCT
+        dezz.YEAR,
+        dezz.ADJUSTPERIOD,
+        dezz.pk_org,
+        dezz.pk_accasoa,
+        dezz.pk_currtype,
+        dezz.assid,
+        sum( localdebitamount ) AS localdebitamount,
+        sum( localcreditamount ) AS localcreditamount,
+        sum( debitamount ) AS debitamount,
+        sum( creditamount ) AS creditamount,
+        0 AS ljlocaldebitamount,
+        0 AS ljlocalcreditamount,
+        0 AS ljdebitamount,
+        0 AS ljcreditamount,
+        0 AS qmlocalamount,
+        0 AS qmamount
+        FROM
+        gl_balance dezz
+        WHERE
+        voucherkind != 5
+        AND voucherkind != 4
+        GROUP BY
+        dezz.YEAR,
+        dezz.ADJUSTPERIOD,
+        dezz.pk_org,
+        dezz.pk_accasoa,
+        dezz.pk_currtype,
+        dezz.assid UNION ALL
+        SELECT DISTINCT
+        accperiodmonth.periodyear YEAR,
+        accperiodmonth.PERIOD ADJUSTPERIOD,
+        dezz.pk_org,
+        dezz.pk_accasoa,
+        dezz.pk_currtype,
+        dezz.assid assid,
+        0 AS localdebitamount,
+        0 AS localcreditamount,
+        0 AS debitamount,
+        0 AS creditamount,
+        0 AS ljlocaldebitamount,
+        0 AS ljlocalcreditamount,
+        0 AS ljdebitamount,
+        0 AS ljcreditamount,
+        sum( localdebitamount ) - sum( localcreditamount ) AS qmlocalamount,
+        sum( debitamount ) - sum( creditamount ) AS qmamount
+        FROM
+        ( SELECT substr( yearmth, 0, 4 ) periodyear, substr( yearmth, 6, 7 ) period FROM bd_accperiodmonth WHERE yearmth  &lt; TO_CHAR( SYSDATE, 'YYYY-MM' ) ) accperiodmonth
+        LEFT JOIN gl_balance dezz ON dezz.YEAR = accperiodmonth.periodyear
+        AND dezz.adjustperiod  &lt; = accperiodmonth.period
+        WHERE
+        voucherkind != 5
+        AND voucherkind != 4
+        AND dezz.adjustperiod >= '00'
+        AND dezz.adjustperiod != '12A'
+        GROUP BY
+        accperiodmonth.periodyear,
+        accperiodmonth.PERIOD,
+        dezz.pk_org,
+        dezz.pk_accasoa,
+        dezz.pk_currtype,
+        dezz.assid
+        ) a
+        LEFT JOIN org_orgs org ON org.pk_org = a.pk_org
+        LEFT JOIN bd_accasoa oa ON oa.pk_accasoa = a.pk_accasoa
+        LEFT JOIN bd_account nt ON nt.pk_account = oa.pk_account
+        LEFT JOIN bd_currtype currtype ON a.pk_currtype = currtype.pk_currtype
+        LEFT JOIN gl_docfree1 fr1 ON fr1.assid = a.assid
+        where adjustperiod != '12A'
+        and adjustperiod >= '00'
+        and adjustperiod != '00'
+        GROUP BY
+        year,
+        adjustperiod,
+        nt.code ,
+        oa.name ,
+        oa.dispname,
+        nt.pid,
+        balanorient,
+        pk_acctype,
+        org.code,
+        org.name,
+        nt.sumprint_level
+        )m1
+        <trim prefix="where" prefixOverrides="and">
+            <if test="orgCode != null and orgCode !='' "> and gsbm = #{orgCode} </if>
+            <if test="sysData != null and sysData !='' "> and yearperiod = {sysData}   </if>
+        </trim>
+    </select>
 </mapper>
 
diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/incomeInvoiceData/service/impl/IncomeInvoiceServiceImpl.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/incomeInvoiceData/service/impl/IncomeInvoiceServiceImpl.java
index e7eb8030..b0ee7ad6 100644
--- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/incomeInvoiceData/service/impl/IncomeInvoiceServiceImpl.java
+++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/incomeInvoiceData/service/impl/IncomeInvoiceServiceImpl.java
@@ -64,9 +64,10 @@ public class IncomeInvoiceServiceImpl extends BaseService<IncomeInvoiceEntity, S
         this.dao = dao;
     }
     boolean flags = true;
+    String uploadBalanceTableUrl = "http://oapi.nanofintax.com/api/collect/uploadBalanceTable?accessToken";
 
     String cbUrl = "http://oapi.nanofintax.com/api/collect/uploadFinancialReport?accessToken=";
-    String dataUrl = "http://oapi.nanofintax.com/api/invoice_receive/fp/v1/query?accessToken=";//全量发票数据
+    String dataUrl = "http://oapi.nanofintax.com/api/invoice_receive/fp/v1/query?accessToken=";
     String tokenUrl = "http://oapi.nanofintax.com/api/getToken";
     String accessKey = "6X3B526P5HqE6ums";
     String accessSecret = "34e5fc32ac894a2ba2ade8c3852c7a0a";
@@ -682,18 +683,20 @@ public class IncomeInvoiceServiceImpl extends BaseService<IncomeInvoiceEntity, S
         JSONObject jsonStr = requestJson.getJSONObject("jsonStr");
         JSONObject businessDataStr = jsonStr.getJSONObject("businessDataStr");
         String eventType = jsonStr.getString("eventType");
+        String ztbm = businessDataStr.getString("ztCode");//账套编码
+        String cjzq = businessDataStr.getString("period");//采集账期
+        String rwbm = businessDataStr.getString("taskNo");//任务编码
         switch (eventType) {
             case "onProcessFinished"://流程结束事件,同步物料到U8C
                 if(businessDataStr.getString("dataType") == null){//数据类型
                     return BaseResult.getFailureMessageEntity("数据类型为空");
                 }
                 if(businessDataStr.getString("dataType").equals("1")){//科目余额
-
+                    taskExecutor.execute(() -> sendAccountCodeReport(ztbm,cjzq,rwbm));//科目余额
+                    return BaseResult.getSuccessMessageEntity("数据获取成功");
                 }
                 if(businessDataStr.getString("dataType").equals("2")){//财报
-                    String ztbm = businessDataStr.getString("ztCode");//账套编码
-                    String cjzq = businessDataStr.getString("period");//采集账期
-                    String rwbm = businessDataStr.getString("taskNo");//任务编码
+
                     if(ztbm == null || "".equals(ztbm)){
                         return BaseResult.getFailureMessageEntity("账套编码为空");
                     }
@@ -721,6 +724,54 @@ public class IncomeInvoiceServiceImpl extends BaseService<IncomeInvoiceEntity, S
 
     }
 
+    private JsonResultEntity sendAccountCodeReport(String ztbm, String cjzq, String rwbm) {
+        String access_token = getToken();
+        if (access_token == null) {
+            return BaseResult.getFailureMessageEntity("token获取失败");
+        }
+        String url = uploadBalanceTableUrl+access_token;
+        //通过公司编码、账期查询该单位的科目余额信息下发有度
+        //查询当月帐套组织
+        IncomeInvoiceEntity jnentity = new IncomeInvoiceEntity();
+        jnentity.setDataSourceCode("htBip");
+        jnentity.setSysData(cjzq);
+        jnentity.setOrgCode(ztbm);
+        //查询该账期下的科目余额
+        List<JSONObject> jnlist = incomeInvoiceDao.queryAccount(jnentity);
+        //正常来说数组不存在空的情况 如果为空就直接下发空数组给他们
+        JSONObject sendData = new JSONObject();
+        sendData.put("accessKey",accessKey);
+        long timestamp = System.currentTimeMillis();
+        sendData.put("timestamp",timestamp);
+        sendData.put("taskNo",rwbm);
+        sendData.put("period",cjzq);
+        String a = YzfSignUtil.signRequest(sendData,accessSecret);
+        sendData.put("sign",a);
+        sendData.put("balanceTableList",jnlist);
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Content-Type", "application/json; charset=utf-8");
+        String returndata = sendPost(url, headers, sendData.toJSONString());
+        if (returndata != null && JSONObject.isValidObject(returndata)) {
+            JSONObject dataJson = JSONObject.parseObject(returndata);
+            if(dataJson != null && dataJson.getString("code") != null && "0".equals( dataJson.getString("code"))){
+                JSONObject data = dataJson.getJSONObject("result");
+                if(data != null  ){
+                    if(data != null && data.getString("resultCode") != null && "0".equals( data.getString("resultCode"))){
+                        return BaseResult.getSuccessMessageEntity("执行成功");
+                    }else {
+                        return BaseResult.getFailureMessageEntity("发送失败:"+data.getString("message"));
+                    }
+                }else {
+                    return BaseResult.getFailureMessageEntity("发送失败:"+returndata);
+                }
+            }else {
+                return BaseResult.getFailureMessageEntity("发送失败:"+returndata);
+            }
+        }else {
+            return BaseResult.getFailureMessageEntity("发送失败:"+returndata);
+        }
+    }
+
 
     /**
      * @Author lvleigang
diff --git a/base-common/src/main/java/com/hzya/frame/execsql/service/ExecSqlServiceImpl.java b/base-common/src/main/java/com/hzya/frame/execsql/service/ExecSqlServiceImpl.java
index ff02bcc4..329daca0 100644
--- a/base-common/src/main/java/com/hzya/frame/execsql/service/ExecSqlServiceImpl.java
+++ b/base-common/src/main/java/com/hzya/frame/execsql/service/ExecSqlServiceImpl.java
@@ -1,5 +1,6 @@
 package com.hzya.frame.execsql.service;
 
+import cn.hutool.core.util.StrUtil;
 import com.hzya.frame.datasource.DataSourceUtil;
 import com.hzya.frame.execsql.entity.ExecSqlEntity;
 import org.apache.ibatis.session.SqlSession;
@@ -80,7 +81,7 @@ public class ExecSqlServiceImpl implements IExecSqlService {
     @Override
     public int execUpdateSql(String sql, String data_source_code) throws Exception {
         logger.info("=============进入execUpdateSql方法============");
-        if (ObjectUtils.isEmpty(sql)) {
+        if (StrUtil.isNotEmpty(sql)) {
             if (sql.contains("where") || sql.contains("WHERE")) {
 //                SqlSession sqlSession = getSqlSession(data_source_code);
 //                SqlSession sqlSession = new DataSourceUtil().getDefaultSqlSession();
diff --git a/base-service/src/main/java/com/hzya/frame/sysnew/grovy/service/impl/GroovyIntegrationServiceImpl.java b/base-service/src/main/java/com/hzya/frame/sysnew/grovy/service/impl/GroovyIntegrationServiceImpl.java
index ee5ee3a1..ac2aaef4 100644
--- a/base-service/src/main/java/com/hzya/frame/sysnew/grovy/service/impl/GroovyIntegrationServiceImpl.java
+++ b/base-service/src/main/java/com/hzya/frame/sysnew/grovy/service/impl/GroovyIntegrationServiceImpl.java
@@ -34,49 +34,67 @@ public class GroovyIntegrationServiceImpl implements IGroovyIntegrationService {
     }
 
     public static void main(String[] args) {
-        java.lang.String str = "{\"data\":{\"enablestate\":\"2\",\"user_password\":\"Hzya@1314\",\"gender\":\"12312\",\"user_name\":\"测试用户\",\"modify_time\":1719305835000,\"document_rule_num\":112,\"pk_org\":{\"org_mnecode\":\"1\",\"modify_time\":1718866279000,\"document_rule_num\":4,\"add_status\":\"0\",\"org_address\":\"1\",\"delete_status\":\"1\",\"org_innercode\":\"1\",\"id\":\"f7a8cee35fce4aa8ab266b3c7f125d7d\",\"data_status\":\"F\",\"modify_user_id\":\"1\",\"org_name\":\"开发部\",\"sorts\":4,\"document_rule\":\"ZZ-2024-06-20-00004\",\"create_user_id\":\"1\",\"create_time\":1718864103000,\"company_id\":\"Y\",\"org_memo\":\"1\",\"update_status\":\"0\",\"sts\":\"Y\",\"org_tel\":\"1\",\"org_id\":\"Y\",\"org_ncindustry\":\"1\",\"org_fatherorg\":\"c4913dde8da142bab4206fc084269382\",\"org_code\":\"003\",\"org_principal\":\"1\",\"org_countryzone\":\"1\"},\"add_status\":\"0\",\"pwdlevelcode\":\"\",\"user_type\":\"1\",\"user_code\":\"17633965916\",\"delete_status\":\"1\",\"id\":\"d99fe4e1c211450a960f7a1057da0d2c\",\"data_status\":\"F\",\"modify_user_id\":\"1\",\"sorts\":346,\"document_rule\":\"YH-2024-06-25-00112\",\"create_user_id\":\"1\",\"create_time\":1719305229000,\"company_id\":\"Y\",\"user_code_q\":\"KP003\",\"format\":\"ZH-CN\",\"mobile\":\"123123\",\"identityverifycode\":\"静态密码验证\",\"islocked\":\"N\",\"update_status\":\"0\",\"base_doc_type\":\"0\",\"sts\":\"Y\",\"login_name\":\"123123\",\"pwdparam\":\"2024-06-17\",\"org_id\":\"Y\",\"abledate\":\"2024-06-17 00:00:00\",\"isca\":\"Y\",\"contentlang\":\"ZH\"},\"query\":\"[]\",\"header\":\"[{\\\"parameterType\\\":\\\"fundamental\\\",\\\"length\\\":\\\"100\\\",\\\"index\\\":0,\\\"description\\\":\\\"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA87rrNR\\\",\\\"concreteType\\\":\\\"String\\\",\\\"id\\\":\\\"7127798c-b731-453a-b3ac-cfe9033eeace\\\",\\\"parameterName\\\":\\\"pubKey\\\",\\\"required\\\":true,\\\"example\\\":\\\"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA87rrNREgMNeOEOwlvM2iqqEfshDadRHziDSB2PbRnoMqSv1nGr3XBlZuseNj5HmxDEkLhOdfyw0yjzoz3wK7XhFpeN4Iyf7NT7hps5jAQMEpnul9Qwmj5qUr/eK5SaO9H8n7sh9BvCdrX9oRUh+U2/ceA3O+y/MUHk5DRvSadc8FhpqbOaNBbAzPnyYAwpVUPvaJ90jcGN1ZG99HR1GEzC+Cn9s6vgt7dYL6ysMs36bSP47xraDSxpfr0CLwa6JV/9KjLIeqL1ZaMtK0CJ1zJGCBA6O6kgxeE9Ul7q2lSS6mPAEJ78izaTYsrjhLpKT+eTtFBOLFbiCrbLp8tVE5kwIDAQAB\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"length\\\":\\\"50\\\",\\\"index\\\":1,\\\"description\\\":\\\"OA\\\",\\\"concreteType\\\":\\\"String\\\",\\\"id\\\":\\\"7f965281-df0f-4d2f-b005-07e061fcde49\\\",\\\"parameterName\\\":\\\"client_id\\\",\\\"required\\\":true,\\\"example\\\":\\\"OA\\\"},{\\\"parameterType\\\":\\\"authport\\\",\\\"length\\\":\\\"50\\\",\\\"index\\\":2,\\\"concreteType\\\":\\\"String\\\",\\\"id\\\":\\\"cbc0e105-17c0-4385-8863-8903303edc1f\\\",\\\"parameterName\\\":\\\"access_token\\\",\\\"example\\\":[\\\"attribute\\\",\\\"data\\\",\\\"access_token\\\"]}]\",\"body\":\"[{\\\"index\\\":0,\\\"id\\\":\\\"beeedbc6-24c2-4093-9a5e-20fced9fb1b4\\\",\\\"parameterName\\\":\\\"body\\\",\\\"first\\\":true}]\"}";
+        java.lang.String str = "{\"data\":{\"year\":\"2024\",\"prepared\":\"demo\",\"modify_time\":1730863191000,\"num\":\"13\",\"gl_detail\":[{\"create_user_id\":\"1\",\"amount\":\"5000\",\"formmain_id\":\"9da5a28900084951913df0d233427178\",\"create_time\":1730863191000,\"company_id\":\"0\",\"globalcreditamount\":\"0\",\"modify_time\":1730863191000,\"localcreditamount\":\"0\",\"localdebitamount\":\"5000\",\"explanation\":\"演示分录1\",\"globaldebitamount\":\"5000\",\"detail_id\":\"1\",\"groupdebitamount\":\"5000\",\"sts\":\"Y\",\"currtype_code\":\"CNY\",\"org_id\":\"0\",\"busidate\":\"2024-11-05\",\"groupcreditamount\":\"0\",\"detailindex\":\"1\",\"account_code\":\"100210\",\"id\":\"0eb6d3d5f12944e1bcbb00883cc4f13e\",\"data_status\":\"Y\",\"modify_user_id\":\"1\",\"sorts\":1},{\"create_user_id\":\"1\",\"amount\":\"5000\",\"formmain_id\":\"9da5a28900084951913df0d233427178\",\"create_time\":1730863191000,\"company_id\":\"0\",\"globalcreditamount\":\"5000\",\"modify_time\":1730863191000,\"localcreditamount\":\"5000\",\"localdebitamount\":\"0\",\"explanation\":\"演示分录2\",\"globaldebitamount\":\"0\",\"detail_id\":\"2\",\"groupdebitamount\":\"0\",\"sts\":\"Y\",\"currtype_code\":\"CNY\",\"org_id\":\"0\",\"busidate\":\"2024-11-05\",\"groupcreditamount\":\"5000\",\"detailindex\":\"2\",\"account_code\":\"2231\",\"id\":\"db9c531af7a94af2975d1c9f1ae21813\",\"data_status\":\"Y\",\"modify_user_id\":\"1\",\"sorts\":2}],\"document_rule_num\":1,\"add_status\":\"0\",\"vouchertype\":\"01\",\"attachment\":\"0\",\"delete_status\":\"1\",\"id\":\"9da5a28900084951913df0d233427178\",\"data_status\":\"Y\",\"modify_user_id\":\"1\",\"sorts\":1,\"document_rule\":\"PZ-20241106-00001\",\"create_user_id\":\"1\",\"period\":\"11\",\"create_time\":1730863191000,\"company_id\":\"Y\",\"update_status\":\"1\",\"accbook_code\":\"101-0002\",\"sts\":\"Y\",\"org_id\":\"Y\",\"prepareddate\":\"2024-11-05\",\"voucher_id\":\"1\",\"gl_fixtmpfreevalue\":[{\"create_user_id\":\"1\",\"formmain_id\":\"9da5a28900084951913df0d233427178\",\"create_time\":1730863191000,\"company_id\":\"0\",\"checktypecode\":\"0012\",\"modify_time\":1730863191000,\"checkvaluecode\":\"101\",\"detail_id\":\"2\",\"sts\":\"Y\",\"org_id\":\"0\",\"voucher_id\":\"1\",\"id\":\"779d40051ae3470583885d9c202d5ba1\",\"data_status\":\"Y\",\"modify_user_id\":\"1\",\"sorts\":1},{\"create_user_id\":\"1\",\"formmain_id\":\"9da5a28900084951913df0d233427178\",\"create_time\":1730863191000,\"company_id\":\"0\",\"checktypecode\":\"0006\",\"modify_time\":1730863191000,\"checkvaluecode\":\"000001\",\"detail_id\":\"2\",\"sts\":\"Y\",\"org_id\":\"0\",\"voucher_id\":\"1\",\"id\":\"f313361e495445958245ec61a00a1216\",\"data_status\":\"Y\",\"modify_user_id\":\"1\",\"sorts\":2}]},\"query\":\"[]\",\"header\":\"[{\\\"parameterType\\\":\\\"fundamental\\\",\\\"index\\\":0,\\\"concreteType\\\":\\\"String\\\",\\\"id\\\":\\\"77ba4bd1-c693-488f-b3b7-69bb4c02be76\\\",\\\"parameterName\\\":\\\"pubKey\\\",\\\"example\\\":\\\"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmlnN6sXjhJN6wUY0DILqiIL1ZX9ZU5Q40Hrr+4qhf3fddV/+/D1CyJo7aVGd3mJjD1BC1RXtnfxetaLzLrfTViq80RQvmmmKgt6rKiYMiW8ibcWoKaWMvwrlm0uT7RzYeXDP0l4qvoe8vjVWL63mQbx0y17p4opwTA9BV7P/CZ+9QyIJstN+yAg/owlNn48Jq4WspQps0/Zl/HvpiRjAPggVOqZLXkCjoBGrpNn/tlrDFbt+btK7tjhvsfT1zPMVAq8dNUKCMw5LoLsMxfT/ZWlI62zUAIbyO2/0iv5kCZw0I+DxPmGKVEOQ4x9FwXosSSD202H93CuBvVy/P31iUwIDAQAB\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"index\\\":1,\\\"concreteType\\\":\\\"String\\\",\\\"id\\\":\\\"df32aa53-9c8e-4d31-8a9b-d78bc70f9214\\\",\\\"parameterName\\\":\\\"client_id\\\",\\\"example\\\":\\\"u8c\\\"},{\\\"parameterType\\\":\\\"authport\\\",\\\"index\\\":2,\\\"concreteType\\\":\\\"String\\\",\\\"id\\\":\\\"de304f55-ca04-47d9-93f9-70b52d9bba50\\\",\\\"parameterName\\\":\\\"access_token\\\",\\\"example\\\":[\\\"attribute\\\",\\\"data\\\",\\\"access_token\\\"]}]\",\"body\":\"[{\\\"parameterType\\\":\\\"complex\\\",\\\"children\\\":[{\\\"parameterType\\\":\\\"complex\\\",\\\"children\\\":[{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":2,\\\"parameterName\\\":\\\"accbookCode\\\",\\\"id\\\":\\\"95ff2224-bdb7-4a9d-a45b-8c19f444022b\\\",\\\"example\\\":\\\"X0644-0001\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":3,\\\"parameterName\\\":\\\"prepareddate\\\",\\\"id\\\":\\\"7106bf79-133c-446e-be58-bf18d43a7c14\\\",\\\"example\\\":\\\"2023-09-19\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":4,\\\"parameterName\\\":\\\"year\\\",\\\"id\\\":\\\"9b005ca9-e246-41c0-bbbb-aead5d6f44f1\\\",\\\"example\\\":\\\"2023\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":5,\\\"parameterName\\\":\\\"num\\\",\\\"id\\\":\\\"fbe1d3a2-69e9-4df7-91d0-bb9005cd333e\\\",\\\"example\\\":\\\"4\\\"},{\\\"parameterType\\\":\\\"complexlist\\\",\\\"children\\\":[{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":7,\\\"parameterName\\\":\\\"detailindex\\\",\\\"id\\\":\\\"386e20b9-5992-4a95-8fa7-fb64677d55e9\\\",\\\"example\\\":\\\"1\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":8,\\\"parameterName\\\":\\\"explanation\\\",\\\"id\\\":\\\"20cab876-bd5a-46b8-96ba-7112104a273f\\\",\\\"example\\\":\\\"测试\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":9,\\\"parameterName\\\":\\\"accountCode\\\",\\\"id\\\":\\\"e1a89672-8449-4bda-a404-478f0594ac70\\\",\\\"example\\\":\\\"150401\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":10,\\\"parameterName\\\":\\\"currtypeCode\\\",\\\"id\\\":\\\"43b33900-c5da-4afb-bbd7-0865bd02db58\\\",\\\"example\\\":\\\"CNY\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":11,\\\"parameterName\\\":\\\"amount\\\",\\\"id\\\":\\\"4b0fd6a4-b1d0-489e-aec1-ca509e9221ad\\\",\\\"example\\\":\\\"1000\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":12,\\\"parameterName\\\":\\\"localdebitamount\\\",\\\"id\\\":\\\"9a43ad19-f903-4a8a-a5ac-f13c9fba445e\\\",\\\"example\\\":\\\"1000\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":13,\\\"parameterName\\\":\\\"localcreditamount\\\",\\\"id\\\":\\\"df2d1f92-89cb-411d-83ba-62366e931dba\\\",\\\"example\\\":\\\"0\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":14,\\\"parameterName\\\":\\\"groupdebitamount\\\",\\\"id\\\":\\\"61965366-0500-40d7-bae4-5dd16eb90761\\\",\\\"example\\\":\\\"1000\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":15,\\\"parameterName\\\":\\\"groupcreditamount\\\",\\\"id\\\":\\\"bdc3c6c2-de87-45f1-85cf-24f3b92920c6\\\",\\\"example\\\":\\\"0\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":16,\\\"parameterName\\\":\\\"globaldebitamount\\\",\\\"id\\\":\\\"a6069792-2a6b-43ba-97d7-504e1c5e3156\\\",\\\"example\\\":\\\"1000\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":17,\\\"parameterName\\\":\\\"globalcreditamount\\\",\\\"id\\\":\\\"528b2c6b-86a5-47ec-8b26-00259dacb0b4\\\",\\\"example\\\":\\\"0\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":18,\\\"parameterName\\\":\\\"busidate\\\",\\\"id\\\":\\\"11636e2a-b9d8-4ee3-81fc-0e809d11bf4f\\\",\\\"example\\\":\\\"2023-09-19\\\"},{\\\"parameterType\\\":\\\"complexlist\\\",\\\"children\\\":[{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":20,\\\"parameterName\\\":\\\"checktypecode\\\",\\\"id\\\":\\\"b56bf160-7180-47ea-996a-acd8307eb5fa\\\",\\\"example\\\":\\\"0004\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":21,\\\"parameterName\\\":\\\"checkvaluecode\\\",\\\"id\\\":\\\"88d4fbb0-d3b7-4f1e-981d-71e60d10e603\\\",\\\"example\\\":\\\"X0015\\\"}],\\\"concreteType\\\":\\\"ObjectCom\\\",\\\"index\\\":19,\\\"parameterName\\\":\\\"ass\\\",\\\"id\\\":\\\"c10103af-f382-4c9b-a8f4-0738b664abb0\\\"}],\\\"concreteType\\\":\\\"ObjectCom\\\",\\\"index\\\":6,\\\"parameterName\\\":\\\"detail\\\",\\\"id\\\":\\\"70f9d810-039e-4884-b986-bc5b75331fb4\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":22,\\\"parameterName\\\":\\\"period\\\",\\\"id\\\":\\\"de91d6ad-c07b-4f84-a8c9-52e87de39d50\\\",\\\"example\\\":\\\"09\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":23,\\\"parameterName\\\":\\\"vouchertype\\\",\\\"id\\\":\\\"5de12ed3-d27e-4848-a008-5fb2e5c656a8\\\",\\\"example\\\":\\\"01\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":24,\\\"parameterName\\\":\\\"attachment\\\",\\\"id\\\":\\\"cc0ae4fb-5f33-46c9-a0bf-775b46ae8511\\\",\\\"example\\\":\\\"0\\\"},{\\\"parameterType\\\":\\\"fundamental\\\",\\\"concreteType\\\":\\\"String\\\",\\\"index\\\":25,\\\"parameterName\\\":\\\"prepared\\\",\\\"id\\\":\\\"4b1622d6-980e-4920-82d0-e078e8bdb009\\\",\\\"example\\\":\\\"zhuc\\\"}],\\\"concreteType\\\":\\\"Object\\\",\\\"index\\\":1,\\\"parameterName\\\":\\\"sendData\\\",\\\"id\\\":\\\"2fc2918b-73fd-4c31-ba9f-1721132f1fdf\\\"}],\\\"concreteType\\\":\\\"Object\\\",\\\"index\\\":0,\\\"id\\\":\\\"669eebef-e4ae-474e-9b88-46a5490dc3db\\\",\\\"parameterName\\\":\\\"body\\\",\\\"first\\\":true}]\"}";
         A88772 s = new A88772();
         s.execute(str);
     }
 
     static class A88772 {
         String execute(String jsonStr) {
-            com.alibaba.fastjson.JSONObject returnObject = new com.alibaba.fastjson.JSONObject();
-            com.alibaba.fastjson.JSONObject bodys = new com.alibaba.fastjson.JSONObject();
-
             com.alibaba.fastjson.JSONObject reqData = com.alibaba.fastjson.JSON.parseObject(jsonStr);
             com.alibaba.fastjson.JSONObject data = reqData.getJSONObject("data");
-            com.alibaba.fastjson.JSONObject ufinterfaceObject = new com.alibaba.fastjson.JSONObject();
-            ufinterfaceObject.put("billtype", "customer");
-            ufinterfaceObject.put("isexchange", "Y");
-            ufinterfaceObject.put("replace", "Y");
-            ufinterfaceObject.put("sender", "openUser");
-            ufinterfaceObject.put("account", "ycjf");
-            ufinterfaceObject.put("groupcode", "ycjf");
-            com.alibaba.fastjson.JSONObject billObject = new com.alibaba.fastjson.JSONObject();
-            com.alibaba.fastjson.JSONObject billheadObject = new com.alibaba.fastjson.JSONObject();
-            billheadObject.put("code", data.get("code"));
-            billheadObject.put("custprop", data.get("custprop"));
-            billheadObject.put("custstate", data.get("custstate"));
-            billheadObject.put("pk_custclass", data.get("pk_custclass"));
-            billheadObject.put("pk_country", data.get("pk_country"));
-            billheadObject.put("pk_timezone", "P0800");
-            billheadObject.put("pk_format", "ZH-CN");
-            billheadObject.put("enablestate", data.get("enablestate"));
-            billheadObject.put("name", data.get("name"));
-            billheadObject.put("pk_group", data.get("pk_group"));
-            billheadObject.put("pk_org", data.get("pk_org"));
-            billheadObject.put("taxpayerid", data.get("taxpayerid"));
-            billObject.put("billhead", billheadObject);
-            ufinterfaceObject.put("bill", billObject);
-            bodys.put("ufinterface", ufinterfaceObject);
-            returnObject.put("bodys",bodys.toJSONString());
+            com.alibaba.fastjson.JSONArray gl_detail = data.getJSONArray("gl_detail");
+            com.alibaba.fastjson.JSONArray gl_fixtmpfreevalue = data.getJSONArray("gl_fixtmpfreevalue");
+
+            com.alibaba.fastjson.JSONObject returnObject = new com.alibaba.fastjson.JSONObject();
+            com.alibaba.fastjson.JSONObject sendData = new com.alibaba.fastjson.JSONObject();
+            sendData.put("accbookCode",data.getString("accbook_code"));
+            sendData.put("prepareddate",data.getString("prepareddate"));
+            sendData.put("year",data.getString("year"));
+            sendData.put("num",data.getString("num"));
+            sendData.put("period",data.getString("period"));
+            sendData.put("vouchertype",data.getString("vouchertype"));
+            sendData.put("attachment",data.getString("attachment"));
+            sendData.put("prepared",data.getString("prepared"));
+            com.alibaba.fastjson.JSONArray detail = new com.alibaba.fastjson.JSONArray();
+            if(gl_detail != null && gl_detail.size() > 0){
+                for (int i = 0; i < gl_detail.size(); i++) {
+                    com.alibaba.fastjson.JSONObject detaildata = gl_detail.getJSONObject(i);
+                    com.alibaba.fastjson.JSONObject object1 = new com.alibaba.fastjson.JSONObject();
+                    object1.put("detailindex",detaildata.getString("detailindex"));
+                    object1.put("explanation",detaildata.getString("explanation"));
+                    object1.put("accountCode",detaildata.getString("account_code"));
+                    object1.put("currtypeCode",detaildata.getString("currtype_code"));
+                    object1.put("amount",detaildata.getString("amount"));
+                    object1.put("localdebitamount",detaildata.getString("localdebitamount"));
+                    object1.put("localcreditamount",detaildata.getString("localcreditamount"));
+                    object1.put("groupdebitamount",detaildata.getString("groupdebitamount"));
+                    object1.put("groupcreditamount",detaildata.getString("groupcreditamount"));
+                    object1.put("globaldebitamount",detaildata.getString("globaldebitamount"));
+                    object1.put("globalcreditamount",detaildata.getString("globalcreditamount"));
+                    object1.put("busidate",detaildata.getString("busidate"));
+                    detail.add(object1);
+                    if(gl_fixtmpfreevalue != null && gl_fixtmpfreevalue.size() > 0){
+                        com.alibaba.fastjson.JSONArray ass = new com.alibaba.fastjson.JSONArray();
+                        for (int i1 = 0; i1 < gl_fixtmpfreevalue.size(); i1++) {
+                            if(gl_fixtmpfreevalue.getJSONObject(i1).getString("voucher_id").equals(data.getString("voucher_id"))
+                                && gl_fixtmpfreevalue.getJSONObject(i1).getString("detail_id").equals(detaildata.getString("detail_id"))){
+                                com.alibaba.fastjson.JSONObject assdetail1 = new com.alibaba.fastjson.JSONObject();
+                                assdetail1.put("checktypecode",gl_fixtmpfreevalue.getJSONObject(i1).getString("checktypecode"));
+                                assdetail1.put("checkvaluecode",gl_fixtmpfreevalue.getJSONObject(i1).getString("checkvaluecode"));
+                                ass.add(assdetail1);
+                            }
+                        }
+                        if(ass.size() > 0){
+                            object1.put("ass",ass);
+
+                        }
+                    }
+                }
+            }
+            sendData.put("detail",detail);
+            returnObject.put("bodys",sendData);
             return returnObject.toJSONString();
-
-
-
-
-
         }
     }
 
diff --git a/base-webapp/pom.xml b/base-webapp/pom.xml
index 3507e248..f751b1fe 100644
--- a/base-webapp/pom.xml
+++ b/base-webapp/pom.xml
@@ -18,11 +18,11 @@
             <artifactId>base-service</artifactId>
             <version>${revision}</version>
         </dependency>
-<!--        <dependency>-->
-<!--            <groupId>com.hzya.frame</groupId>-->
-<!--            <artifactId>fw-bip</artifactId>-->
-<!--            <version>${revision}</version>-->
-<!--        </dependency>-->
+        <dependency>
+            <groupId>com.hzya.frame</groupId>
+            <artifactId>fw-bip</artifactId>
+            <version>${revision}</version>
+        </dependency>
 <!--        <dependency>-->
 <!--            <groupId>com.hzya.frame</groupId>-->
 <!--            <artifactId>fw-cbs</artifactId>-->
diff --git a/fw-bip/pom.xml b/fw-bip/pom.xml
new file mode 100644
index 00000000..f0f762fa
--- /dev/null
+++ b/fw-bip/pom.xml
@@ -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/webapp/WEB-INF/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>
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/IBipArchivesDao.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/IBipArchivesDao.java
new file mode 100644
index 00000000..02516313
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/IBipArchivesDao.java
@@ -0,0 +1,15 @@
+package com.hzya.frame.bip.v3.v2207.dao;
+
+import com.hzya.frame.basedao.dao.IBaseDao;
+import com.hzya.frame.bip.v3.v2207.entity.BipArchivesEntity;
+import com.hzya.frame.bip.v3.v2207.entity.BipOrgsEntity;
+
+import java.util.List;
+
+
+public interface IBipArchivesDao extends IBaseDao<BipArchivesEntity, String> {
+
+    List<BipArchivesEntity> queryArchivesData(BipArchivesEntity archivesEntity);
+    List<BipArchivesEntity> queryArchivesDatays(BipArchivesEntity archivesEntity);
+
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/IBipOrgsDao.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/IBipOrgsDao.java
new file mode 100644
index 00000000..0ad05a4c
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/IBipOrgsDao.java
@@ -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);
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/IBipOrgsDetailsDao.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/IBipOrgsDetailsDao.java
new file mode 100644
index 00000000..e0e6ea3f
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/IBipOrgsDetailsDao.java
@@ -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);
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/IBipSupplierDao.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/IBipSupplierDao.java
new file mode 100644
index 00000000..ba069080
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/IBipSupplierDao.java
@@ -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);
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/IBipSupplierDetailsDao.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/IBipSupplierDetailsDao.java
new file mode 100644
index 00000000..2edaa29e
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/IBipSupplierDetailsDao.java
@@ -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);
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/impl/BipArchivesDaoImpl.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/impl/BipArchivesDaoImpl.java
new file mode 100644
index 00000000..987d702c
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/impl/BipArchivesDaoImpl.java
@@ -0,0 +1,25 @@
+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.IBipArchivesDao;
+import com.hzya.frame.bip.v3.v2207.dao.IBipOrgsDao;
+import com.hzya.frame.bip.v3.v2207.entity.BipArchivesEntity;
+import com.hzya.frame.bip.v3.v2207.entity.BipOrgsEntity;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository("bipArchivesDaoImpl")
+public class BipArchivesDaoImpl extends MybatisGenericDao<BipArchivesEntity,String> implements IBipArchivesDao {
+
+    @Override
+    public List<BipArchivesEntity> queryArchivesData(BipArchivesEntity entity) {
+        List<BipArchivesEntity> o = super.query(getSqlIdPrifx() + "queryArchivesData", entity);
+        return o;
+    }   @Override
+    public List<BipArchivesEntity> queryArchivesDatays(BipArchivesEntity entity) {
+        List<BipArchivesEntity> o = super.query(getSqlIdPrifx() + "queryArchivesDatays", entity);
+        return o;
+    }
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/impl/BipOrgsDaoImpl.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/impl/BipOrgsDaoImpl.java
new file mode 100644
index 00000000..478c54ca
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/impl/BipOrgsDaoImpl.java
@@ -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);
+    }
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/impl/BipOrgsDetailsDaoImpl.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/impl/BipOrgsDetailsDaoImpl.java
new file mode 100644
index 00000000..5d51da6d
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/impl/BipOrgsDetailsDaoImpl.java
@@ -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);
+    }
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/impl/BipSupplierDaoImpl.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/impl/BipSupplierDaoImpl.java
new file mode 100644
index 00000000..9abe9ee7
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/impl/BipSupplierDaoImpl.java
@@ -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);
+    }
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/impl/BipSupplierDetailsDaoImpl.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/impl/BipSupplierDetailsDaoImpl.java
new file mode 100644
index 00000000..89443371
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dao/impl/BipSupplierDetailsDaoImpl.java
@@ -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);
+    }
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dps/service/IPayMentService.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dps/service/IPayMentService.java
new file mode 100644
index 00000000..ba800dce
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dps/service/IPayMentService.java
@@ -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);
+
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dps/service/impl/PayMentServiceImpl.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dps/service/impl/PayMentServiceImpl.java
new file mode 100644
index 00000000..1b9308a5
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dps/service/impl/PayMentServiceImpl.java
@@ -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;
+    }
+
+
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dps/task/ElectronicTask.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dps/task/ElectronicTask.java
new file mode 100644
index 00000000..a5b46c5d
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/dps/task/ElectronicTask.java
@@ -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;
+    }
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipArchivesEntity.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipArchivesEntity.java
new file mode 100644
index 00000000..eef1c56d
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipArchivesEntity.java
@@ -0,0 +1,188 @@
+package com.hzya.frame.bip.v3.v2207.entity;
+
+import cn.dev33.satoken.stp.StpUtil;
+import com.hzya.frame.uuid.UUIDUtils;
+import com.hzya.frame.web.entity.BaseEntity;
+
+import java.util.Date;
+
+/**
+ * (BdCorp)实体类
+ *
+ * @author makejava
+ * @since 2023-09-06 14:47:18
+ */
+public class BipArchivesEntity extends BaseEntity {
+
+    private String archivesType;//类型
+    private String leftCode;//左编码
+    private String rightCode;//右编码
+
+    private String leftAppId;//左应用id
+    private String leftAppCode;//左应用编码
+    private String leftAppName;//左应用名称
+    private String leftApiId;//左接口ID
+    private String leftId;//左id
+    private String leftName;//左名称
+    private String rightAppId;//右应用id
+    private String rightAppCode;//右应用编码
+    private String rightAppName;//右应用名称
+    private String rightApiId;//右接口ID
+    private String rightId;//右id
+    private String rightName;//右名称
+    private String leftOrg;//左公司
+    private String rightOrg;//右公司
+
+    public String getArchivesType() {
+        return archivesType;
+    }
+
+    public void setArchivesType(String archivesType) {
+        this.archivesType = archivesType;
+    }
+
+    public String getLeftCode() {
+        return leftCode;
+    }
+
+    public void setLeftCode(String leftCode) {
+        this.leftCode = leftCode;
+    }
+
+    public String getRightCode() {
+        return rightCode;
+    }
+
+    public void setRightCode(String rightCode) {
+        this.rightCode = rightCode;
+    }
+
+    public String getLeftAppId() {
+        return leftAppId;
+    }
+
+    public void setLeftAppId(String leftAppId) {
+        this.leftAppId = leftAppId;
+    }
+
+    public String getLeftAppCode() {
+        return leftAppCode;
+    }
+
+    public void setLeftAppCode(String leftAppCode) {
+        this.leftAppCode = leftAppCode;
+    }
+
+    public String getLeftAppName() {
+        return leftAppName;
+    }
+
+    public void setLeftAppName(String leftAppName) {
+        this.leftAppName = leftAppName;
+    }
+
+    public String getLeftApiId() {
+        return leftApiId;
+    }
+
+    public void setLeftApiId(String leftApiId) {
+        this.leftApiId = leftApiId;
+    }
+
+    public String getLeftId() {
+        return leftId;
+    }
+
+    public void setLeftId(String leftId) {
+        this.leftId = leftId;
+    }
+
+    public String getLeftName() {
+        return leftName;
+    }
+
+    public void setLeftName(String leftName) {
+        this.leftName = leftName;
+    }
+
+    public String getRightAppId() {
+        return rightAppId;
+    }
+
+    public void setRightAppId(String rightAppId) {
+        this.rightAppId = rightAppId;
+    }
+
+    public String getRightAppCode() {
+        return rightAppCode;
+    }
+
+    public void setRightAppCode(String rightAppCode) {
+        this.rightAppCode = rightAppCode;
+    }
+
+    public String getRightAppName() {
+        return rightAppName;
+    }
+
+    public void setRightAppName(String rightAppName) {
+        this.rightAppName = rightAppName;
+    }
+
+    public String getRightApiId() {
+        return rightApiId;
+    }
+
+    public void setRightApiId(String rightApiId) {
+        this.rightApiId = rightApiId;
+    }
+
+    public String getRightId() {
+        return rightId;
+    }
+
+    public void setRightId(String rightId) {
+        this.rightId = rightId;
+    }
+
+    public String getRightName() {
+        return rightName;
+    }
+
+    public void setRightName(String rightName) {
+        this.rightName = rightName;
+    }
+
+    public String getLeftOrg() {
+        return leftOrg;
+    }
+
+    public void setLeftOrg(String leftOrg) {
+        this.leftOrg = leftOrg;
+    }
+
+    public String getRightOrg() {
+        return rightOrg;
+    }
+
+    public void setRightOrg(String rightOrg) {
+        this.rightOrg = rightOrg;
+    }
+
+    public void setCreate() {
+        this.setId(UUIDUtils.getUUID());
+        this.setSts("Y");
+        this.setCreate_user_id("1");
+        this.setModify_user_id("1");
+        this.setCreate_time(new Date());
+        this.setModify_time(new Date());
+        this.setOrg_id("0");
+        this.setCompanyId("0");
+    }
+    //修改信息
+    public void setUpdate() {
+        this.setModify_user_id("1");
+        this.setModify_time(new Date());
+    }
+}
+
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipArchivesEntity.xml b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipArchivesEntity.xml
new file mode 100644
index 00000000..1a2f96ab
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipArchivesEntity.xml
@@ -0,0 +1,71 @@
+<?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.BipArchivesDaoImpl">
+    <resultMap id="get-ArchivesEntity-result" type="com.hzya.frame.bip.v3.v2207.entity.BipArchivesEntity" >
+        <result property="id" column="id" jdbcType="VARCHAR"/>
+        <result property="leftAppId" column="left_app_id" jdbcType="VARCHAR"/>
+        <result property="leftAppCode" column="left_app_code" jdbcType="VARCHAR"/>
+        <result property="leftAppName" column="left_app_name" jdbcType="VARCHAR"/>
+        <result property="leftApiId" column="left_api_id" jdbcType="VARCHAR"/>
+        <result property="leftId" column="left_id" jdbcType="VARCHAR"/>
+        <result property="leftCode" column="left_code" jdbcType="VARCHAR"/>
+        <result property="leftName" column="left_name" jdbcType="VARCHAR"/>
+        <result property="rightAppId" column="right_app_id" jdbcType="VARCHAR"/>
+        <result property="rightAppCode" column="right_app_code" jdbcType="VARCHAR"/>
+        <result property="rightAppName" column="right_app_name" jdbcType="VARCHAR"/>
+        <result property="rightApiId" column="right_api_id" jdbcType="VARCHAR"/>
+        <result property="rightId" column="right_id" jdbcType="VARCHAR"/>
+        <result property="rightCode" column="right_code" jdbcType="VARCHAR"/>
+        <result property="rightName" column="right_name" jdbcType="VARCHAR"/>
+        <result property="sorts" column="sorts" jdbcType="INTEGER"/>
+        <result property="create_user_id" column="create_user_id" jdbcType="VARCHAR"/>
+        <result property="create_time" column="create_time" jdbcType="TIMESTAMP"/>
+        <result property="modify_user_id" column="modify_user_id" jdbcType="VARCHAR"/>
+        <result property="modify_time" column="modify_time" jdbcType="TIMESTAMP"/>
+        <result property="sts" column="sts" jdbcType="VARCHAR"/>
+        <result property="org_id" column="org_id" jdbcType="VARCHAR"/>
+        <result property="companyId" column="company_id" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <select id="queryArchivesData" resultMap="get-ArchivesEntity-result"
+            parameterType="com.hzya.frame.bip.v3.v2207.entity.BipArchivesEntity">
+        select
+        right_code
+        from
+        <choose>
+            <when test="archivesType == '1'.toString()"> sys_personnel_control </when>
+            <when test="archivesType == '2'.toString()"> sys_org_control </when>
+            <when test="archivesType == '6'.toString()"> sys_stock_control </when>
+            <when test="archivesType == '73'.toString()"> sys_merchant_control </when>
+            <when test="archivesType == 'D01'.toString()"> sys_taxrate_control </when>
+            <when test="archivesType == 'jobass'.toString()"> sys_project_control </when>
+            <when test="archivesType == '93'.toString()"> sys_bank_control </when>
+            <when test="archivesType == '96'.toString()"> sys_bankaccount_control </when>
+            <when test="archivesType == '22'.toString()"> sys_assets_control </when>
+        </choose>
+        <trim prefix="where" prefixOverrides="and">
+            <if test="leftCode != null and leftCode != ''">and left_code = #{leftCode}</if>
+            <if test="leftOrg != null and leftOrg != ''">and left_org = #{leftOrg}</if>
+            and sts='Y'
+        </trim>
+    </select>
+
+    <select id="queryArchivesDatays" resultMap="get-ArchivesEntity-result"
+            parameterType="com.hzya.frame.bip.v3.v2207.entity.BipArchivesEntity">
+        select
+        right_code
+        from
+        <choose>
+            <when test="archivesType == '0012'.toString()"> sys_stock_control </when>
+            <when test="archivesType == '0006'.toString()"> sys_stock_control </when>
+            <when test="archivesType == '0004'.toString()"> sys_merchant_control </when>
+        </choose>
+        <trim prefix="where" prefixOverrides="and">
+            <if test="leftCode != null and leftCode != ''">and left_code = #{leftCode}</if>
+            <if test="leftOrg != null and leftOrg != ''">and left_org = #{leftOrg}</if>
+            and sts='Y'
+        </trim>
+    </select>
+
+</mapper>
+
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipAss.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipAss.java
new file mode 100644
index 00000000..ebb9d80b
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipAss.java
@@ -0,0 +1,24 @@
+package com.hzya.frame.bip.v3.v2207.entity;
+
+
+public class BipAss {
+    private String checktypecode;
+    private String checkvaluecode;
+
+
+    public String getChecktypecode() {
+        return checktypecode;
+    }
+
+    public void setChecktypecode(String checktypecode) {
+        this.checktypecode = checktypecode;
+    }
+
+    public String getCheckvaluecode() {
+        return checkvaluecode;
+    }
+
+    public void setCheckvaluecode(String checkvaluecode) {
+        this.checkvaluecode = checkvaluecode;
+    }
+}
\ No newline at end of file
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipCashflow.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipCashflow.java
new file mode 100644
index 00000000..f29cb81c
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipCashflow.java
@@ -0,0 +1,23 @@
+package com.hzya.frame.bip.v3.v2207.entity;
+
+
+public class BipCashflow {
+    private String money;
+    private String pk_cashflow;
+
+    public String getMoney() {
+        return money;
+    }
+
+    public void setMoney(String money) {
+        this.money = money;
+    }
+
+    public String getPk_cashflow() {
+        return pk_cashflow;
+    }
+
+    public void setPk_cashflow(String pk_cashflow) {
+        this.pk_cashflow = pk_cashflow;
+    }
+}
\ No newline at end of file
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipOrgsDetailsEntity.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipOrgsDetailsEntity.java
new file mode 100644
index 00000000..67f3d8e3
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipOrgsDetailsEntity.java
@@ -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;
+    }
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipOrgsDetailsEntity.xml b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipOrgsDetailsEntity.xml
new file mode 100644
index 00000000..14fcaaa6
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipOrgsDetailsEntity.xml
@@ -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>
+
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipOrgsEntity.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipOrgsEntity.java
new file mode 100644
index 00000000..ec5d7572
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipOrgsEntity.java
@@ -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;
+    }
+
+
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipOrgsEntity.xml b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipOrgsEntity.xml
new file mode 100644
index 00000000..272541a7
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipOrgsEntity.xml
@@ -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>
+
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipSupplierDetailsEntity.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipSupplierDetailsEntity.java
new file mode 100644
index 00000000..48c6d9c4
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipSupplierDetailsEntity.java
@@ -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;
+    }
+
+
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipSupplierDetailsEntity.xml b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipSupplierDetailsEntity.xml
new file mode 100644
index 00000000..64933d2f
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipSupplierDetailsEntity.xml
@@ -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>
+
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipSupplierEntity.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipSupplierEntity.java
new file mode 100644
index 00000000..53190872
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipSupplierEntity.java
@@ -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;
+    }
+
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipSupplierEntity.xml b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipSupplierEntity.xml
new file mode 100644
index 00000000..2854fcd2
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipSupplierEntity.xml
@@ -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>
+
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipTokenVo.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipTokenVo.java
new file mode 100644
index 00000000..f01ede61
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipTokenVo.java
@@ -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 {
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipVoucher.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipVoucher.java
new file mode 100644
index 00000000..b2138afe
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipVoucher.java
@@ -0,0 +1,150 @@
+package com.hzya.frame.bip.v3.v2207.entity;
+
+import java.util.List;
+
+public class BipVoucher {
+    private List<BipVoucherDetails> details;
+    private List<BipVoucherDetails> detail;
+    private String no;
+    private String pk_corp;
+    private String pk_glorgbook;
+    private String pk_prepared;
+    private String pk_vouchertype;
+    private String pk_voucher;
+    private String period;
+    private String vouchertype;
+    private String attachment;
+    private String year;
+    private String prepared;
+    private String prepareddate;
+    private String num;
+    private String accbookCode;
+
+    public List<BipVoucherDetails> getDetails() {
+        return details;
+    }
+
+    public void setDetails(List<BipVoucherDetails> details) {
+        this.details = details;
+    }
+
+    public String getNo() {
+        return no;
+    }
+
+    public void setNo(String no) {
+        this.no = no;
+    }
+
+    public String getPk_corp() {
+        return pk_corp;
+    }
+
+    public void setPk_corp(String pk_corp) {
+        this.pk_corp = pk_corp;
+    }
+
+    public String getPk_glorgbook() {
+        return pk_glorgbook;
+    }
+
+    public void setPk_glorgbook(String pk_glorgbook) {
+        this.pk_glorgbook = pk_glorgbook;
+    }
+
+    public String getPk_prepared() {
+        return pk_prepared;
+    }
+
+    public void setPk_prepared(String pk_prepared) {
+        this.pk_prepared = pk_prepared;
+    }
+
+    public String getPk_vouchertype() {
+        return pk_vouchertype;
+    }
+
+    public void setPk_vouchertype(String pk_vouchertype) {
+        this.pk_vouchertype = pk_vouchertype;
+    }
+
+    public String getPk_voucher() {
+        return pk_voucher;
+    }
+
+    public void setPk_voucher(String pk_voucher) {
+        this.pk_voucher = pk_voucher;
+    }
+
+    public List<BipVoucherDetails> getDetail() {
+        return detail;
+    }
+
+    public void setDetail(List<BipVoucherDetails> detail) {
+        this.detail = detail;
+    }
+
+    public String getPeriod() {
+        return period;
+    }
+
+    public void setPeriod(String period) {
+        this.period = period;
+    }
+
+    public String getVouchertype() {
+        return vouchertype;
+    }
+
+    public void setVouchertype(String vouchertype) {
+        this.vouchertype = vouchertype;
+    }
+
+    public String getAttachment() {
+        return attachment;
+    }
+
+    public void setAttachment(String attachment) {
+        this.attachment = attachment;
+    }
+
+    public String getYear() {
+        return year;
+    }
+
+    public void setYear(String year) {
+        this.year = year;
+    }
+
+    public String getPrepared() {
+        return prepared;
+    }
+
+    public void setPrepared(String prepared) {
+        this.prepared = prepared;
+    }
+
+    public String getPrepareddate() {
+        return prepareddate;
+    }
+
+    public void setPrepareddate(String prepareddate) {
+        this.prepareddate = prepareddate;
+    }
+
+    public String getNum() {
+        return num;
+    }
+
+    public void setNum(String num) {
+        this.num = num;
+    }
+
+    public String getAccbookCode() {
+        return accbookCode;
+    }
+
+    public void setAccbookCode(String accbookCode) {
+        this.accbookCode = accbookCode;
+    }
+}
\ No newline at end of file
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipVoucherDetails.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipVoucherDetails.java
new file mode 100644
index 00000000..252b7fba
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/entity/BipVoucherDetails.java
@@ -0,0 +1,186 @@
+package com.hzya.frame.bip.v3.v2207.entity;
+
+import java.util.List;
+
+public class BipVoucherDetails {
+    private List<BipAss> ass;
+    private List<BipCashflow> cashflow;
+    private String creditamount;
+    private String debitamount;
+    private String explanation;
+    private String localcreditamount;
+    private String localdebitamount;
+    private String pk_accsubj;
+    private String pk_currtype;
+    private String debitquantity;
+    private String price;
+    private String accountCode;
+    private String amount;
+    private String globalcreditamount;
+    private String globaldebitamount;
+    private String groupdebitamount;
+    private String currtypeCode;
+    private String busidate;
+    private String groupcreditamount;
+    private String detailindex;
+
+    public List<BipAss> getAss() {
+        return ass;
+    }
+
+    public void setAss(List<BipAss> ass) {
+        this.ass = ass;
+    }
+
+    public List<BipCashflow> getCashflow() {
+        return cashflow;
+    }
+
+    public void setCashflow(List<BipCashflow> cashflow) {
+        this.cashflow = cashflow;
+    }
+
+    public String getCreditamount() {
+        return creditamount;
+    }
+
+    public void setCreditamount(String creditamount) {
+        this.creditamount = creditamount;
+    }
+
+    public String getDebitamount() {
+        return debitamount;
+    }
+
+    public void setDebitamount(String debitamount) {
+        this.debitamount = debitamount;
+    }
+
+    public String getExplanation() {
+        return explanation;
+    }
+
+    public void setExplanation(String explanation) {
+        this.explanation = explanation;
+    }
+
+    public String getLocalcreditamount() {
+        return localcreditamount;
+    }
+
+    public void setLocalcreditamount(String localcreditamount) {
+        this.localcreditamount = localcreditamount;
+    }
+
+    public String getLocaldebitamount() {
+        return localdebitamount;
+    }
+
+    public void setLocaldebitamount(String localdebitamount) {
+        this.localdebitamount = localdebitamount;
+    }
+
+    public String getPk_accsubj() {
+        return pk_accsubj;
+    }
+
+    public void setPk_accsubj(String pk_accsubj) {
+        this.pk_accsubj = pk_accsubj;
+    }
+
+    public String getPk_currtype() {
+        return pk_currtype;
+    }
+
+    public void setPk_currtype(String pk_currtype) {
+        this.pk_currtype = pk_currtype;
+    }
+
+    public String getDebitquantity() {
+        return debitquantity;
+    }
+
+    public void setDebitquantity(String debitquantity) {
+        this.debitquantity = debitquantity;
+    }
+
+    public String getPrice() {
+        return price;
+    }
+
+    public void setPrice(String price) {
+        this.price = price;
+    }
+
+    public String getAccountCode() {
+        return accountCode;
+    }
+
+    public void setAccountCode(String accountCode) {
+        this.accountCode = accountCode;
+    }
+
+    public String getAmount() {
+        return amount;
+    }
+
+    public void setAmount(String amount) {
+        this.amount = amount;
+    }
+
+    public String getGlobalcreditamount() {
+        return globalcreditamount;
+    }
+
+    public void setGlobalcreditamount(String globalcreditamount) {
+        this.globalcreditamount = globalcreditamount;
+    }
+
+    public String getGlobaldebitamount() {
+        return globaldebitamount;
+    }
+
+    public void setGlobaldebitamount(String globaldebitamount) {
+        this.globaldebitamount = globaldebitamount;
+    }
+
+    public String getGroupdebitamount() {
+        return groupdebitamount;
+    }
+
+    public void setGroupdebitamount(String groupdebitamount) {
+        this.groupdebitamount = groupdebitamount;
+    }
+
+    public String getCurrtypeCode() {
+        return currtypeCode;
+    }
+
+    public void setCurrtypeCode(String currtypeCode) {
+        this.currtypeCode = currtypeCode;
+    }
+
+    public String getBusidate() {
+        return busidate;
+    }
+
+    public void setBusidate(String busidate) {
+        this.busidate = busidate;
+    }
+
+    public String getGroupcreditamount() {
+        return groupcreditamount;
+    }
+
+    public void setGroupcreditamount(String groupcreditamount) {
+        this.groupcreditamount = groupcreditamount;
+    }
+
+    public String getDetailindex() {
+        return detailindex;
+    }
+
+    public void setDetailindex(String detailindex) {
+        this.detailindex = detailindex;
+    }
+}
\ No newline at end of file
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/IBipPzService.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/IBipPzService.java
new file mode 100644
index 00000000..1582e8d7
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/IBipPzService.java
@@ -0,0 +1,12 @@
+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 IBipPzService extends  IBaseService<BipTokenVo,String>{
+
+
+    SysExtensionApiEntity getPz(SysExtensionApiEntity entity);
+}
\ No newline at end of file
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/IBipSsoService.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/IBipSsoService.java
new file mode 100644
index 00000000..2f8fe71e
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/IBipSsoService.java
@@ -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);
+}
\ No newline at end of file
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/IBipV32207BillService.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/IBipV32207BillService.java
new file mode 100644
index 00000000..31806e42
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/IBipV32207BillService.java
@@ -0,0 +1,19 @@
+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 此方法获取BIPtoken,heade参数动态传入
+ * @author laborer
+ * @date 2024/5/27 0027 11:38
+ *
+ */
+
+    SysExtensionApiEntity getBipBill(SysExtensionApiEntity entity);
+    SysExtensionApiEntity getBipBillYs(SysExtensionApiEntity entity);
+}
\ No newline at end of file
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/IBipV32207Service.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/IBipV32207Service.java
new file mode 100644
index 00000000..d5bb362b
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/IBipV32207Service.java
@@ -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);
+}
\ No newline at end of file
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/IBipV32207TokenService.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/IBipV32207TokenService.java
new file mode 100644
index 00000000..fb452978
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/IBipV32207TokenService.java
@@ -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 此方法获取BIPtoken,heade参数动态传入
+ * @author laborer
+ * @date 2024/5/27 0027 11:38
+ *
+ */
+
+    SysExtensionApiEntity getBipToken(SysExtensionApiEntity entity);
+}
\ No newline at end of file
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/impl/BipPzServiceImpl.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/impl/BipPzServiceImpl.java
new file mode 100644
index 00000000..b41af4e6
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/impl/BipPzServiceImpl.java
@@ -0,0 +1,72 @@
+package com.hzya.frame.bip.v3.v2207.service.impl;
+
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.basedao.service.impl.BaseService;
+import com.hzya.frame.bip.v3.v2207.dao.IBipArchivesDao;
+import com.hzya.frame.bip.v3.v2207.entity.BipArchivesEntity;
+import com.hzya.frame.bip.v3.v2207.entity.BipAss;
+import com.hzya.frame.bip.v3.v2207.entity.BipTokenVo;
+import com.hzya.frame.bip.v3.v2207.entity.BipVoucher;
+import com.hzya.frame.bip.v3.v2207.entity.BipVoucherDetails;
+import com.hzya.frame.bip.v3.v2207.service.IBipPzService;
+import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity;
+import com.hzya.frame.web.entity.BaseResult;
+import jdk.nashorn.internal.ir.annotations.Reference;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+
+
+@Service(value = "bipPzService")
+public class BipPzServiceImpl extends BaseService<BipTokenVo, String> implements IBipPzService {
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+    @Resource
+    private IBipArchivesDao bipArchivesDao;
+    /**
+     * @param entity
+     * @return com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity
+     * @Author lvleigang
+     * @Description 组装凭证数据
+     * @Date 10:52 上午 2024/11/5
+     **/
+    @Override
+    public SysExtensionApiEntity getPz(SysExtensionApiEntity entity) {
+        String bodys = entity.getBodys();
+        BipVoucher voucher = JSONObject.parseObject(bodys, BipVoucher.class);
+        List<String> fzhs = Arrays.asList(new String[]{"1", "2", "6", "73", "D01", "jobass", "93", "96", "22"});
+        if (voucher.getDetails() != null && voucher.getDetails().size() > 0) {
+            for (int a = 0; a < voucher.getDetails().size(); a++) {
+                BipVoucherDetails voucherDetails = voucher.getDetails().get(a);
+                if (voucherDetails.getAss() != null && voucherDetails.getAss().size() > 0) {
+                    for (int b = 0; b < voucherDetails.getAss().size(); b++) {
+                        BipAss ass = voucherDetails.getAss().get(b);
+                        if (ass.getChecktypecode() != null && !"".equals(ass.getChecktypecode())) {
+                            //存在需要转换的
+                            if (fzhs.contains(ass.getChecktypecode())) {
+                                BipArchivesEntity archivesEntity = new BipArchivesEntity();
+                                archivesEntity.setArchivesType(ass.getChecktypecode());
+                                archivesEntity.setLeftCode(ass.getCheckvaluecode());
+                                archivesEntity.setLeftOrg(voucher.getPk_corp());
+
+                                List<BipArchivesEntity> archivesEntities = bipArchivesDao.queryArchivesData(archivesEntity);
+                                if (archivesEntities != null && archivesEntities.size() > 0) {
+                                    ass.setCheckvaluecode(archivesEntities.get(0).getRightCode());
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        bodys = JSON.toJSONString(voucher);
+        entity.setBodys(bodys);
+        return entity;
+    }
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/impl/BipSsoServiceImpl.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/impl/BipSsoServiceImpl.java
new file mode 100644
index 00000000..c1d69514
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/impl/BipSsoServiceImpl.java
@@ -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()));
+    }
+
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/impl/BipV32207BillServiceImpl.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/impl/BipV32207BillServiceImpl.java
new file mode 100644
index 00000000..1511d1ee
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/impl/BipV32207BillServiceImpl.java
@@ -0,0 +1,134 @@
+package com.hzya.frame.bip.v3.v2207.service.impl;
+
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.basedao.service.impl.BaseService;
+import com.hzya.frame.bip.v3.v2207.dao.IBipArchivesDao;
+import com.hzya.frame.bip.v3.v2207.entity.BipArchivesEntity;
+import com.hzya.frame.bip.v3.v2207.entity.BipAss;
+import com.hzya.frame.bip.v3.v2207.entity.BipTokenVo;
+import com.hzya.frame.bip.v3.v2207.entity.BipVoucher;
+import com.hzya.frame.bip.v3.v2207.entity.BipVoucherDetails;
+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 javax.annotation.Resource;
+import java.net.URLEncoder;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+
+@Service(value = "BipV32207BillServiceImpl")
+public class BipV32207BillServiceImpl extends BaseService<BipTokenVo, String> implements IBipV32207BillService {
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+    @Resource
+    private IBipArchivesDao bipArchivesDao;
+    /**
+     *
+     * @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;
+    }
+    @Override
+    public SysExtensionApiEntity getBipBillYs(SysExtensionApiEntity entity) {
+        try {
+            String bodys = entity.getBodys();
+            BipVoucher voucher = JSONObject.parseObject(bodys, BipVoucher.class);
+            List<String> fzhs = Arrays.asList(new String[]{"0012", "0006", "0004"});
+            if (voucher.getDetail() != null && voucher.getDetail().size() > 0) {
+                for (int a = 0; a < voucher.getDetail().size(); a++) {
+                    BipVoucherDetails voucherDetails = voucher.getDetail().get(a);
+                    if (voucherDetails.getAss() != null && voucherDetails.getAss().size() > 0) {
+                        for (int b = 0; b < voucherDetails.getAss().size(); b++) {
+                            BipAss ass = voucherDetails.getAss().get(b);
+                            if (ass.getChecktypecode() != null && !"".equals(ass.getChecktypecode())) {
+                                //存在需要转换的
+                                if (fzhs.contains(ass.getChecktypecode())) {
+                                    BipArchivesEntity archivesEntity = new BipArchivesEntity();
+                                    archivesEntity.setArchivesType(ass.getChecktypecode());
+                                    archivesEntity.setLeftCode(ass.getCheckvaluecode());
+                                    archivesEntity.setLeftOrg(voucher.getPk_corp());
+
+                                    List<BipArchivesEntity> archivesEntities = bipArchivesDao.queryArchivesDatays(archivesEntity);
+                                    if (archivesEntities != null && archivesEntities.size() > 0) {
+                                        ass.setCheckvaluecode(archivesEntities.get(0).getRightCode());
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            bodys = JSON.toJSONString(voucher);
+            entity.setBodys(bodys);
+
+            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;
+    }
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/impl/BipV32207ServiceImpl.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/impl/BipV32207ServiceImpl.java
new file mode 100644
index 00000000..841e291b
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/impl/BipV32207ServiceImpl.java
@@ -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");
+        //服务器ip:port
+        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      服务器ip:port
+     * @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";
+    }
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/impl/BipV32207TokenServiceImpl.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/impl/BipV32207TokenServiceImpl.java
new file mode 100644
index 00000000..0d6fda14
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/service/impl/BipV32207TokenServiceImpl.java
@@ -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 此方法获取BIPtoken,heade参数动态传入
+     * @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;
+    }
+}
diff --git a/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/util/BipUtil.java b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/util/BipUtil.java
new file mode 100644
index 00000000..a7bfe324
--- /dev/null
+++ b/fw-bip/src/main/java/com/hzya/frame/bip/v3/v2207/util/BipUtil.java
@@ -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");
+    }
+}
diff --git a/fw-bip/src/main/resources/lib/DataApiSdk-jar-with-dependencies.jar b/fw-bip/src/main/resources/lib/DataApiSdk-jar-with-dependencies.jar
new file mode 100644
index 00000000..85b98bf5
Binary files /dev/null and b/fw-bip/src/main/resources/lib/DataApiSdk-jar-with-dependencies.jar differ
diff --git a/fw-bip/src/main/resources/lib/bcprov-jdk15on-1.57.jar b/fw-bip/src/main/resources/lib/bcprov-jdk15on-1.57.jar
new file mode 100644
index 00000000..5a10986b
Binary files /dev/null and b/fw-bip/src/main/resources/lib/bcprov-jdk15on-1.57.jar differ
diff --git a/fw-bip/src/main/resources/lib/bcprov-jdk15on-1.70.jar b/fw-bip/src/main/resources/lib/bcprov-jdk15on-1.70.jar
new file mode 100644
index 00000000..0e4198e5
Binary files /dev/null and b/fw-bip/src/main/resources/lib/bcprov-jdk15on-1.70.jar differ
diff --git a/fw-bip/src/main/resources/lib/openBasicSDK-2.1.230630.jar b/fw-bip/src/main/resources/lib/openBasicSDK-2.1.230630.jar
new file mode 100644
index 00000000..e7e5ce1b
Binary files /dev/null and b/fw-bip/src/main/resources/lib/openBasicSDK-2.1.230630.jar differ
diff --git a/fw-bip/src/main/resources/lib/pubbaseapp_nccloud_rtLevel-1.jar b/fw-bip/src/main/resources/lib/pubbaseapp_nccloud_rtLevel-1.jar
new file mode 100644
index 00000000..78aedbcf
Binary files /dev/null and b/fw-bip/src/main/resources/lib/pubbaseapp_nccloud_rtLevel-1.jar differ
diff --git a/fw-bip/src/main/resources/lib/yonyoulog.jar b/fw-bip/src/main/resources/lib/yonyoulog.jar
new file mode 100644
index 00000000..06a4fa84
Binary files /dev/null and b/fw-bip/src/main/resources/lib/yonyoulog.jar differ
diff --git a/fw-bip/src/main/webapp/WEB-INF/lib/DataApiSdk-jar-with-dependencies.jar b/fw-bip/src/main/webapp/WEB-INF/lib/DataApiSdk-jar-with-dependencies.jar
new file mode 100644
index 00000000..85b98bf5
Binary files /dev/null and b/fw-bip/src/main/webapp/WEB-INF/lib/DataApiSdk-jar-with-dependencies.jar differ
diff --git a/fw-bip/src/main/webapp/WEB-INF/lib/bcprov-jdk15on-1.57.jar b/fw-bip/src/main/webapp/WEB-INF/lib/bcprov-jdk15on-1.57.jar
new file mode 100644
index 00000000..5a10986b
Binary files /dev/null and b/fw-bip/src/main/webapp/WEB-INF/lib/bcprov-jdk15on-1.57.jar differ
diff --git a/fw-bip/src/main/webapp/WEB-INF/lib/bcprov-jdk15on-1.70.jar b/fw-bip/src/main/webapp/WEB-INF/lib/bcprov-jdk15on-1.70.jar
new file mode 100644
index 00000000..0e4198e5
Binary files /dev/null and b/fw-bip/src/main/webapp/WEB-INF/lib/bcprov-jdk15on-1.70.jar differ
diff --git a/fw-bip/src/main/webapp/WEB-INF/lib/openBasicSDK-2.1.230630.jar b/fw-bip/src/main/webapp/WEB-INF/lib/openBasicSDK-2.1.230630.jar
new file mode 100644
index 00000000..e7e5ce1b
Binary files /dev/null and b/fw-bip/src/main/webapp/WEB-INF/lib/openBasicSDK-2.1.230630.jar differ
diff --git a/fw-bip/src/main/webapp/WEB-INF/lib/pubbaseapp_nccloud_rtLevel-1.jar b/fw-bip/src/main/webapp/WEB-INF/lib/pubbaseapp_nccloud_rtLevel-1.jar
new file mode 100644
index 00000000..78aedbcf
Binary files /dev/null and b/fw-bip/src/main/webapp/WEB-INF/lib/pubbaseapp_nccloud_rtLevel-1.jar differ
diff --git a/fw-bip/src/main/webapp/WEB-INF/lib/yonyoulog.jar b/fw-bip/src/main/webapp/WEB-INF/lib/yonyoulog.jar
new file mode 100644
index 00000000..06a4fa84
Binary files /dev/null and b/fw-bip/src/main/webapp/WEB-INF/lib/yonyoulog.jar differ
diff --git a/fw-bip/src/main/webapp/WEB-INF/web.xml b/fw-bip/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 00000000..d80081d1
--- /dev/null
+++ b/fw-bip/src/main/webapp/WEB-INF/web.xml
@@ -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>
\ No newline at end of file
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/dao/IMakeInvoiceDao.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/dao/IMakeInvoiceDao.java
new file mode 100644
index 00000000..12c863de
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/dao/IMakeInvoiceDao.java
@@ -0,0 +1,19 @@
+package com.hzya.frame.seeyon.makeinvoice.dao;
+
+import com.hzya.frame.basedao.dao.IBaseDao;
+import com.hzya.frame.seeyon.makeinvoice.entity.MakeInvoiceEntity;
+
+import java.util.List;
+
+public interface IMakeInvoiceDao extends IBaseDao<MakeInvoiceEntity, String> {
+/**
+ *
+ * @content 获取未推送税务的蓝字发票集合
+ * @className: Administrator
+ * @author laborer
+ * @date 2025-03-20 15:32
+ *
+ */
+
+    List<MakeInvoiceEntity> getMakeInvoiceByState(MakeInvoiceEntity entity);
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/dao/impl/MakeInvoiceDaoImpl.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/dao/impl/MakeInvoiceDaoImpl.java
new file mode 100644
index 00000000..a2990984
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/dao/impl/MakeInvoiceDaoImpl.java
@@ -0,0 +1,20 @@
+package com.hzya.frame.seeyon.makeinvoice.dao.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.hzya.frame.basedao.dao.MybatisGenericDao;
+import com.hzya.frame.seeyon.makeinvoice.dao.IMakeInvoiceDao;
+import com.hzya.frame.seeyon.makeinvoice.entity.MakeInvoiceEntity;
+import org.springframework.stereotype.Repository;
+
+import java.util.HashMap;
+import java.util.List;
+
+@Repository(value = "MakeInvoiceDaoImpl")
+public class MakeInvoiceDaoImpl extends MybatisGenericDao<MakeInvoiceEntity,String> implements IMakeInvoiceDao {
+
+    @Override
+    @DS("#entity.dataSourceCode")
+    public List<MakeInvoiceEntity> getMakeInvoiceByState(MakeInvoiceEntity entity) {
+        return (List<MakeInvoiceEntity>) super.selectList("com.hzya.frame.seeyon.makeinvoice.dao.impl.MakeInvoiceDaoImpl.getMakeInvoiceByState",entity);
+    }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/entity/MakeInvoiceEntity.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/entity/MakeInvoiceEntity.java
new file mode 100644
index 00000000..46167157
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/entity/MakeInvoiceEntity.java
@@ -0,0 +1,531 @@
+package com.hzya.frame.seeyon.makeinvoice.entity;
+
+import com.hzya.frame.web.entity.BaseEntity;
+
+public class MakeInvoiceEntity extends BaseEntity {
+
+    private String sellerTaxNo;//企业纳税人识别号,建议传
+    private String templateId;//模版ID,固定值: 测试环境: 生产环境:"
+    private String businessNo;//业务单号 (40长度)
+    private String superiorBusinessNo;//上级业务单号,后续接口创建红字发票申请时,可根据此字段查找该单号下的已开发票。可传:销售单号等,或可与业务单号保持一致
+    private String buyerName;//购买方名称,收购发票会以在开票企业在云帐房内维护的信息覆盖该属性
+    private String buyerTaxNo;//购买方纳税人识别号,收购发票时与企业编码二选一必传
+    private String buyerAddrPhone;//购买方地址、电话,收购发票会以在开票企业在云帐房内维护的信息覆盖该属性
+    private String buyerBankAccount;//购买方开户行及账号,收购发票会以在开票企业在云帐房内维护的信息覆盖该属性
+    private String applyPerson;//申请人,为空时,平台将记录申请人为“系统自动”
+    private String applyEmailNotice;//是否邮件通知申请人,按平台内申请人邮箱发送示例值:0可选值:1 是0 否
+    private String buyerEmailNotice;//是否邮件通知购买方,按平台内购买方邮箱发送示例值:0可选值:1 是0 否
+    private String workcode;// 申请人工号
+    private String otherEmail;//其他发票接收邮箱,可支持最多10个邮箱,邮箱间以英文字符;分隔
+    private String buyerContact;//购买方发票邮寄接收联系人名称
+    private String buyerMobile;//购买方发票邮寄接收手机号
+    private String buyerRecvAddress;//购买方发票邮寄接收地址
+    private String applicationRemark;//申请单其他说明
+    private String attachments;//附件,文件Url地址列表
+    private String notifyUrl;//回调通知地址【必须为外网可以调通的地址】
+    private String specialInvoiceMark;//特殊票种标识 00非特殊票种 01农产品销售 02农产品收购 03 建筑服务 04 货物运输服务 05 不动产销售服务 06不动产经营租赁服务 14机动车"
+    private String sellerName;//销售方名称,收购类发票必填 ,非收购发票会以在开票企业在云帐房内维护的信息覆盖该属性
+    private String sellerAddrPhone;//销售方地址、电话,非收购发票会以在开票企业在云帐房内维护的信息覆盖该属性
+    private String sellerBankAccount;//销售方银行账号,非收购发票会以在开票企业在云帐房内维护的信息覆盖该属性
+    private String extFieldJSONObject;//自定义字段,具体传参见示例
+    private String extendFields;//自定义扩展字段.最多支持6个文本类型和4个日期类型,日期格式为yyyy-MM-dd.其中的key为用户自行配置(集团视角-应用设置-扩展字段配置)
+    private String applicationForm;//申请单信息
+    private String invoiceType;//发票种类示例值:0可选值:0 增值税普通发票10 增值税专用发票2 增值税电子普通发票13增值税电子专用发票 21电子发票(增值税专用发票) 22电子发票(普通发票)
+    private String isPerson;//是否自然人 1是 默认为否
+    private String levyTaxType;//征税方式,差额征税时,一个开票申请中只可有一张发票示例值:0 可选值:0 普通征税2 差额征税(差额开具)3 差额征税(全额开具)
+    private String deduction;//扣除额,差额征税时必填
+    private String remark;//发票备注,换行使用\n隔开230字节(115个纯汉字)
+    private String detailList;//开票明细
+    private String itemNo;//明细行编号,为空时,平台将自动生成一个唯一编号
+    private String itemName;//商品名称
+    private String taxCateCode;//税收分类编码,19位
+    private String spec;//规格型号/(车辆识别代号/车架号码)
+    private String unit;//单位
+    private String quantity;//数量示例值:200 (特殊票种为机动车时必填,且车架识别代号/车架号码不为空时,数值必须为正整数)
+    private String unitPrice;//单价示例值:100.23(特殊票种为机动车时必填)
+    private String price;//金额示例值:100.23
+    private String taxRate;//税率示例值:0.03
+    private String zeroFlag;//零税率标识,如果税率为0,必填示例值:1 可选值: 1:免税2:不征收3:普通零税率
+    private String tax;//税额示例值:100.23
+    private String includeTaxTag;//含税标识,为1时,则单价和金额为不含税单价及不含税金额示例值:0 可选值:0 含税1 不含税
+    private String detailType;//明细行性质示例值:0 可选值: 0 正常行1 折扣行2 被折扣行 如果是折扣行,只开票明细只接受金额,并且金额不能超过被折扣行
+    private String enjoyPreferentialFlag;//是否享受优惠 示例值:0 可选值: 0 否  1是
+    private String preferentialPolicyType;//优惠政策类型(是否享受优惠为是时必传)传递 code 示例:100 100-简易征收 107-按3%简易征收, 108-按5%简易征收, 109-按5%简易征收减按1.5%计征"
+    private String specialIndustryDTO;//特殊票种信息-建筑服务
+    private String place;//地址:建筑服务发生地,不动产地址。“-”分割 示例:江苏省-南京市-雨花台区 北京市-海淀区"
+    private String placeOfDetail;//详细地址:建筑服务发生地详细地址,不动产详细地址
+    private String constructionProjectName;//建筑项目名称
+    private String kqysssxbgglbm;//跨区域涉税事项报验管理編号
+    private String productNo;//土地增值税项目编号
+    private String crossDistinctCityFlag;//跨地(市)标志:是,否
+
+
+    private String certificateOfTitle;//产权证书/不动产权证号
+    private String areaUnit;//面积单位: 平方千米 平方米 孔公里 公顷 亩 h㎡ k㎡ ㎡"
+    private String startDate;//租赁开始,格式yyyy-MM-dd
+    private String endDate;//租赁结束,格式yyyy-MM-dd
+
+    public String getSellerTaxNo() {
+        return sellerTaxNo;
+    }
+
+    public void setSellerTaxNo(String sellerTaxNo) {
+        this.sellerTaxNo = sellerTaxNo;
+    }
+
+    public String getTemplateId() {
+        return templateId;
+    }
+
+    public void setTemplateId(String templateId) {
+        this.templateId = templateId;
+    }
+
+    public String getBusinessNo() {
+        return businessNo;
+    }
+
+    public void setBusinessNo(String businessNo) {
+        this.businessNo = businessNo;
+    }
+
+    public String getSuperiorBusinessNo() {
+        return superiorBusinessNo;
+    }
+
+    public void setSuperiorBusinessNo(String superiorBusinessNo) {
+        this.superiorBusinessNo = superiorBusinessNo;
+    }
+
+    public String getBuyerName() {
+        return buyerName;
+    }
+
+    public void setBuyerName(String buyerName) {
+        this.buyerName = buyerName;
+    }
+
+    public String getBuyerTaxNo() {
+        return buyerTaxNo;
+    }
+
+    public void setBuyerTaxNo(String buyerTaxNo) {
+        this.buyerTaxNo = buyerTaxNo;
+    }
+
+    public String getBuyerAddrPhone() {
+        return buyerAddrPhone;
+    }
+
+    public void setBuyerAddrPhone(String buyerAddrPhone) {
+        this.buyerAddrPhone = buyerAddrPhone;
+    }
+
+    public String getBuyerBankAccount() {
+        return buyerBankAccount;
+    }
+
+    public void setBuyerBankAccount(String buyerBankAccount) {
+        this.buyerBankAccount = buyerBankAccount;
+    }
+
+    public String getApplyPerson() {
+        return applyPerson;
+    }
+
+    public void setApplyPerson(String applyPerson) {
+        this.applyPerson = applyPerson;
+    }
+
+    public String getApplyEmailNotice() {
+        return applyEmailNotice;
+    }
+
+    public void setApplyEmailNotice(String applyEmailNotice) {
+        this.applyEmailNotice = applyEmailNotice;
+    }
+
+    public String getBuyerEmailNotice() {
+        return buyerEmailNotice;
+    }
+
+    public void setBuyerEmailNotice(String buyerEmailNotice) {
+        this.buyerEmailNotice = buyerEmailNotice;
+    }
+
+    public String getWorkcode() {
+        return workcode;
+    }
+
+    public void setWorkcode(String workcode) {
+        this.workcode = workcode;
+    }
+
+    public String getOtherEmail() {
+        return otherEmail;
+    }
+
+    public void setOtherEmail(String otherEmail) {
+        this.otherEmail = otherEmail;
+    }
+
+    public String getBuyerContact() {
+        return buyerContact;
+    }
+
+    public void setBuyerContact(String buyerContact) {
+        this.buyerContact = buyerContact;
+    }
+
+    public String getBuyerMobile() {
+        return buyerMobile;
+    }
+
+    public void setBuyerMobile(String buyerMobile) {
+        this.buyerMobile = buyerMobile;
+    }
+
+    public String getBuyerRecvAddress() {
+        return buyerRecvAddress;
+    }
+
+    public void setBuyerRecvAddress(String buyerRecvAddress) {
+        this.buyerRecvAddress = buyerRecvAddress;
+    }
+
+    public String getApplicationRemark() {
+        return applicationRemark;
+    }
+
+    public void setApplicationRemark(String applicationRemark) {
+        this.applicationRemark = applicationRemark;
+    }
+
+    public String getAttachments() {
+        return attachments;
+    }
+
+    public void setAttachments(String attachments) {
+        this.attachments = attachments;
+    }
+
+    public String getNotifyUrl() {
+        return notifyUrl;
+    }
+
+    public void setNotifyUrl(String notifyUrl) {
+        this.notifyUrl = notifyUrl;
+    }
+
+    public String getSpecialInvoiceMark() {
+        return specialInvoiceMark;
+    }
+
+    public void setSpecialInvoiceMark(String specialInvoiceMark) {
+        this.specialInvoiceMark = specialInvoiceMark;
+    }
+
+    public String getSellerName() {
+        return sellerName;
+    }
+
+    public void setSellerName(String sellerName) {
+        this.sellerName = sellerName;
+    }
+
+    public String getSellerAddrPhone() {
+        return sellerAddrPhone;
+    }
+
+    public void setSellerAddrPhone(String sellerAddrPhone) {
+        this.sellerAddrPhone = sellerAddrPhone;
+    }
+
+    public String getSellerBankAccount() {
+        return sellerBankAccount;
+    }
+
+    public void setSellerBankAccount(String sellerBankAccount) {
+        this.sellerBankAccount = sellerBankAccount;
+    }
+
+    public String getExtFieldJSONObject() {
+        return extFieldJSONObject;
+    }
+
+    public void setExtFieldJSONObject(String extFieldJSONObject) {
+        this.extFieldJSONObject = extFieldJSONObject;
+    }
+
+    public String getExtendFields() {
+        return extendFields;
+    }
+
+    public void setExtendFields(String extendFields) {
+        this.extendFields = extendFields;
+    }
+
+    public String getApplicationForm() {
+        return applicationForm;
+    }
+
+    public void setApplicationForm(String applicationForm) {
+        this.applicationForm = applicationForm;
+    }
+
+    public String getInvoiceType() {
+        return invoiceType;
+    }
+
+    public void setInvoiceType(String invoiceType) {
+        this.invoiceType = invoiceType;
+    }
+
+    public String getIsPerson() {
+        return isPerson;
+    }
+
+    public void setIsPerson(String isPerson) {
+        this.isPerson = isPerson;
+    }
+
+    public String getLevyTaxType() {
+        return levyTaxType;
+    }
+
+    public void setLevyTaxType(String levyTaxType) {
+        this.levyTaxType = levyTaxType;
+    }
+
+    public String getDeduction() {
+        return deduction;
+    }
+
+    public void setDeduction(String deduction) {
+        this.deduction = deduction;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getDetailList() {
+        return detailList;
+    }
+
+    public void setDetailList(String detailList) {
+        this.detailList = detailList;
+    }
+
+    public String getItemNo() {
+        return itemNo;
+    }
+
+    public void setItemNo(String itemNo) {
+        this.itemNo = itemNo;
+    }
+
+    public String getItemName() {
+        return itemName;
+    }
+
+    public void setItemName(String itemName) {
+        this.itemName = itemName;
+    }
+
+    public String getTaxCateCode() {
+        return taxCateCode;
+    }
+
+    public void setTaxCateCode(String taxCateCode) {
+        this.taxCateCode = taxCateCode;
+    }
+
+    public String getSpec() {
+        return spec;
+    }
+
+    public void setSpec(String spec) {
+        this.spec = spec;
+    }
+
+    public String getUnit() {
+        return unit;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+
+    public String getQuantity() {
+        return quantity;
+    }
+
+    public void setQuantity(String quantity) {
+        this.quantity = quantity;
+    }
+
+    public String getUnitPrice() {
+        return unitPrice;
+    }
+
+    public void setUnitPrice(String unitPrice) {
+        this.unitPrice = unitPrice;
+    }
+
+    public String getPrice() {
+        return price;
+    }
+
+    public void setPrice(String price) {
+        this.price = price;
+    }
+
+    public String getTaxRate() {
+        return taxRate;
+    }
+
+    public void setTaxRate(String taxRate) {
+        this.taxRate = taxRate;
+    }
+
+    public String getZeroFlag() {
+        return zeroFlag;
+    }
+
+    public void setZeroFlag(String zeroFlag) {
+        this.zeroFlag = zeroFlag;
+    }
+
+    public String getTax() {
+        return tax;
+    }
+
+    public void setTax(String tax) {
+        this.tax = tax;
+    }
+
+    public String getIncludeTaxTag() {
+        return includeTaxTag;
+    }
+
+    public void setIncludeTaxTag(String includeTaxTag) {
+        this.includeTaxTag = includeTaxTag;
+    }
+
+    public String getDetailType() {
+        return detailType;
+    }
+
+    public void setDetailType(String detailType) {
+        this.detailType = detailType;
+    }
+
+    public String getEnjoyPreferentialFlag() {
+        return enjoyPreferentialFlag;
+    }
+
+    public void setEnjoyPreferentialFlag(String enjoyPreferentialFlag) {
+        this.enjoyPreferentialFlag = enjoyPreferentialFlag;
+    }
+
+    public String getPreferentialPolicyType() {
+        return preferentialPolicyType;
+    }
+
+    public void setPreferentialPolicyType(String preferentialPolicyType) {
+        this.preferentialPolicyType = preferentialPolicyType;
+    }
+
+    public String getSpecialIndustryDTO() {
+        return specialIndustryDTO;
+    }
+
+    public void setSpecialIndustryDTO(String specialIndustryDTO) {
+        this.specialIndustryDTO = specialIndustryDTO;
+    }
+
+    public String getPlace() {
+        return place;
+    }
+
+    public void setPlace(String place) {
+        this.place = place;
+    }
+
+    public String getPlaceOfDetail() {
+        return placeOfDetail;
+    }
+
+    public void setPlaceOfDetail(String placeOfDetail) {
+        this.placeOfDetail = placeOfDetail;
+    }
+
+    public String getConstructionProjectName() {
+        return constructionProjectName;
+    }
+
+    public void setConstructionProjectName(String constructionProjectName) {
+        this.constructionProjectName = constructionProjectName;
+    }
+
+    public String getKqysssxbgglbm() {
+        return kqysssxbgglbm;
+    }
+
+    public void setKqysssxbgglbm(String kqysssxbgglbm) {
+        this.kqysssxbgglbm = kqysssxbgglbm;
+    }
+
+    public String getProductNo() {
+        return productNo;
+    }
+
+    public void setProductNo(String productNo) {
+        this.productNo = productNo;
+    }
+
+    public String getCrossDistinctCityFlag() {
+        return crossDistinctCityFlag;
+    }
+
+    public void setCrossDistinctCityFlag(String crossDistinctCityFlag) {
+        this.crossDistinctCityFlag = crossDistinctCityFlag;
+    }
+
+    public String getCertificateOfTitle() {
+        return certificateOfTitle;
+    }
+
+    public void setCertificateOfTitle(String certificateOfTitle) {
+        this.certificateOfTitle = certificateOfTitle;
+    }
+
+    public String getAreaUnit() {
+        return areaUnit;
+    }
+
+    public void setAreaUnit(String areaUnit) {
+        this.areaUnit = areaUnit;
+    }
+
+    public String getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(String startDate) {
+        this.startDate = startDate;
+    }
+
+    public String getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(String endDate) {
+        this.endDate = endDate;
+    }
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/entity/MakeInvoiceEntity.xml b/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/entity/MakeInvoiceEntity.xml
new file mode 100644
index 00000000..68fe74db
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/entity/MakeInvoiceEntity.xml
@@ -0,0 +1,70 @@
+<?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.seeyon.makeinvoice.dao.impl.MakeInvoiceDaoImpl">
+	<resultMap id="get-MakeInvoiceEntity-result" type="com.hzya.frame.seeyon.makeinvoice.entity.MakeInvoiceEntity">
+		<result property="sourceFlowNumber" column="sourceFlowNumber" />
+		
+
+	</resultMap>
+
+	<sql id="MakeInvoiceEntity_Base_Column_List">
+		 id
+
+	</sql>
+
+
+
+	<select id="getMakeInvoiceByState" resultMap="get-MakeInvoiceEntity-result" parameterType="com.hzya.frame.seeyon.makeinvoice.entity.MakeInvoiceEntity">
+		select
+			main.id as id,
+			field0163 as sellerTaxNo,-- 销方税号
+			'等待客户提供' as templateId, -- 模版ID
+			field0117 as businessNo,-- 申请单单号
+			field0106 as buyerName,-- 客户名称
+			field0105 as buyerTaxNo,-- 客户税号
+			field0100 + ' ' + field0101 as buyerAddrPhone,-- 地址和电话中间用空格隔开
+			field0103 + ' ' + field0102 as buyerBankAccount,-- 开户行名称和开户行银行账户中间用空格隔开
+			field0115 as applyPerson,-- 制单人
+			0  as applyEmailNotice,-- 是否邮件通知申请人
+			0 as buyerEmailNotice,-- 是否邮件通知购买方
+			field0111 as otherEmail,-- 收件人邮箱
+			field0126 as buyerRecvAddress,-- 邮寄地址
+			'00' as specialInvoiceMark ,-- 临时默认00 后续确认 field0167建筑服务传03, 不动产租赁传06, 其他传00
+			field0108 as sellerName, -- 销售方名称
+			field0109 as invoiceType,-- 专票:21  普票:22
+			'否' as isPerson, -- 是否自然人
+			0 as levyTaxType,-- 征税方式
+			field0090 as remark,-- 备注
+			field0080 as itemName,-- 上网电费
+			'1100101010600000000' as taxCateCode,-- 税收分类编码
+			field0083 as spec,-- 规格型号
+			field0084 as quantity,-- 电量
+			field0168 as unitPrice,-- 单价(不含税)
+			field0086 as price,-- 金额(不含税)
+			field0118 as taxRate,-- 默认0.13
+			field0169 as tax,-- 税额
+			field0169 as includeTaxTag,-- 税额
+			1 as detailType,-- 含税标识
+			0 as detailType,-- 明细行性质
+			0 as enjoyPreferentialFlag,-- 是否享受优惠
+			field0167
+		from formmain_0331 main
+				 left join formson_0332 body on main.id = body.formmain_id
+				 left join COL_SUMMARY summary on main.id = summary.form_recordid
+		where summary.state = '3'
+		  and field0154 ='-8073674727882144390' -- 蓝字发票条件 是否红冲为是
+		  and  field0206 is null
+	</select>
+	<select id="getMakeInvoiceByFormson_0700" resultMap="get-MakeInvoiceEntity-result" parameterType="com.hzya.frame.seeyon.makeinvoice.entity.MakeInvoiceEntity">
+		
+	</select>
+	<select id="getMakeInvoiceByFormson_0701" resultMap="get-MakeInvoiceEntity-result" parameterType="com.hzya.frame.seeyon.makeinvoice.entity.MakeInvoiceEntity">
+
+	</select>
+	<!--通过主键修改方法-->
+	<update id="updatePushStatus" parameterType = "com.hzya.frame.seeyon.makeinvoice.entity.MakeInvoiceEntity" >
+		update ${tabName} set ${pushStatusField} =#{pushStatus} where id=#{dataId}
+	</update>
+
+</mapper>
+
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/service/IMakeInvoiceService.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/service/IMakeInvoiceService.java
new file mode 100644
index 00000000..981808af
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/service/IMakeInvoiceService.java
@@ -0,0 +1,19 @@
+package com.hzya.frame.seeyon.makeinvoice.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.basedao.service.IBaseService;
+import com.hzya.frame.seeyon.makeinvoice.entity.MakeInvoiceEntity;
+import com.hzya.frame.web.entity.JsonResultEntity;
+
+public interface IMakeInvoiceService extends IBaseService<MakeInvoiceEntity,String> {
+/**
+ *
+ * @content 推送蓝字发票申请单申请到税务平台
+ * @className: Administrator
+ * @author laborer
+ * @date 2025-03-20 15:26
+ *
+ */
+
+JsonResultEntity sendMakeInvoiceSw(JSONObject requestJson);
+}
diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/service/impl/MakeInvoiceServiceImpl.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/service/impl/MakeInvoiceServiceImpl.java
new file mode 100644
index 00000000..5c987fe8
--- /dev/null
+++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/makeinvoice/service/impl/MakeInvoiceServiceImpl.java
@@ -0,0 +1,27 @@
+package com.hzya.frame.seeyon.makeinvoice.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.hzya.frame.basedao.service.impl.BaseService;
+import com.hzya.frame.seeyon.makeinvoice.dao.IMakeInvoiceDao;
+import com.hzya.frame.seeyon.makeinvoice.entity.MakeInvoiceEntity;
+import com.hzya.frame.seeyon.makeinvoice.service.IMakeInvoiceService;
+import com.hzya.frame.web.entity.BaseResult;
+import com.hzya.frame.web.entity.JsonResultEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service("MakeInvoiceServiceImpl")
+public class MakeInvoiceServiceImpl extends BaseService<MakeInvoiceEntity, String> implements IMakeInvoiceService {
+
+@Autowired
+private IMakeInvoiceDao makeInvoiceDao;
+    @Override
+    public JsonResultEntity sendMakeInvoiceSw(JSONObject requestJson) {
+        MakeInvoiceEntity makeInvoice = new MakeInvoiceEntity();
+        makeInvoice.setDataSourceCode("HT_OA");
+        List<MakeInvoiceEntity> makeInvoiceEntityList = makeInvoiceDao.getMakeInvoiceByState(makeInvoice);
+        return  BaseResult.getSuccessMessageEntity("操作成功");
+    }
+}
diff --git a/pom.xml b/pom.xml
index 2d3edc15..5b4fdf24 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,6 +19,17 @@
 <!--        <module>fw-u8c</module>-->
 <!--        <module>fw-u9c</module>-->
 <!--        <module>fw-weixin</module>-->
+        <module>fw-bip</module>
+<!--        <module>fw-cbs</module>-->
+<!--        <module>fw-dd</module>-->
+<!--        <module>fw-grpU8</module>-->
+<!--        <module>fw-nc</module>-->
+<!--        <module>fw-ncc</module>-->
+<!--        <module>fw-ningbobank</module>-->
+<!--        <module>fw-oa</module>-->
+<!--        <module>fw-u8</module>-->
+<!--        <module>fw-u8c</module>-->
+<!--        <module>fw-u9c</module>-->
     </modules>
     <groupId>com.hzya.frame</groupId>
     <artifactId>kangarooDataCenterV3</artifactId>
@@ -114,11 +125,6 @@
             <artifactId>httpclient</artifactId>
             <version>${httpclient.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.apache.httpcomponents</groupId>
-            <artifactId>httpmime</artifactId>
-            <version>4.5.13</version>
-        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-cache</artifactId>
@@ -411,16 +417,6 @@
             <artifactId>alibaba-dingtalk-service-sdk</artifactId>
             <version>2.0.0</version>
         </dependency>
-        <dependency>
-            <groupId>commons-net</groupId>
-            <artifactId>commons-net</artifactId>
-            <version>3.8.0</version> <!-- 这里的版本号可根据实际情况修改 -->
-        </dependency>
-        <dependency>
-            <groupId>com.jcraft</groupId>
-            <artifactId>jsch</artifactId>
-            <version>0.1.53</version>
-        </dependency>
     </dependencies>
 
     <build>
@@ -471,33 +467,33 @@
                 <artifactId>maven-war-plugin</artifactId>
                 <configuration>
                     <webResources>
-<!--                        <resource>-->
-<!--                            <directory>${basedir}/../base-service/src/main/webapp/WEB-INF/lib</directory>-->
-<!--                            <targetPath>WEB-INF/lib/</targetPath>-->
-<!--                            <filtering>false</filtering>-->
-<!--                            <includes>-->
-<!--                                &lt;!&ndash; 匹配所有jar包 &ndash;&gt;-->
-<!--                                <include>**/*.jar</include>-->
-<!--                            </includes>-->
-<!--                        </resource>-->
-<!--                        <resource>-->
-<!--                            <directory>${basedir}/../fw-bip/src/main/webapp/WEB-INF/lib</directory>-->
-<!--                            <targetPath>WEB-INF/lib/</targetPath>-->
-<!--                            <filtering>false</filtering>-->
-<!--                            <includes>-->
-<!--                                &lt;!&ndash; 匹配所有jar包 &ndash;&gt;-->
-<!--                                <include>**/*.jar</include>-->
-<!--                            </includes>-->
-<!--                        </resource>-->
-<!--                        <resource>-->
-<!--                            <directory>${basedir}/../fw-ningbobank/src/main/webapp/WEB-INF/lib</directory>-->
-<!--                            <targetPath>WEB-INF/lib/</targetPath>-->
-<!--                            <filtering>false</filtering>-->
-<!--                            <includes>-->
-<!--                                &lt;!&ndash; 匹配所有jar包 &ndash;&gt;-->
-<!--                                <include>**/*.jar</include>-->
-<!--                            </includes>-->
-<!--                        </resource>-->
+                        <resource>
+                            <directory>${basedir}/../base-service/src/main/webapp/WEB-INF/lib</directory>
+                            <targetPath>WEB-INF/lib/</targetPath>
+                            <filtering>false</filtering>
+                            <includes>
+                                <!-- 匹配所有jar包 -->
+                                <include>**/*.jar</include>
+                            </includes>
+                        </resource>
+                        <resource>
+                            <directory>${basedir}/../fw-bip/src/main/webapp/WEB-INF/lib</directory>
+                            <targetPath>WEB-INF/lib/</targetPath>
+                            <filtering>false</filtering>
+                            <includes>
+                                <!-- 匹配所有jar包 -->
+                                <include>**/*.jar</include>
+                            </includes>
+                        </resource>
+                        <resource>
+                            <directory>${basedir}/../fw-ningbobank/src/main/webapp/WEB-INF/lib</directory>
+                            <targetPath>WEB-INF/lib/</targetPath>
+                            <filtering>false</filtering>
+                            <includes>
+                                <!-- 匹配所有jar包 -->
+                                <include>**/*.jar</include>
+                            </includes>
+                        </resource>
                     </webResources>
                 </configuration>
             </plugin>