科目余额表推送有度

This commit is contained in:
yuqh 2025-04-25 15:43:01 +08:00
parent cb82bed10c
commit 9df31890d4
4 changed files with 241 additions and 4 deletions

View File

@ -32,5 +32,7 @@ public interface IIncomeInvoiceDao extends IBaseDao<IncomeInvoiceEntity, String>
List<IncomeInvoiceEntity> queryZtzz(IncomeInvoiceEntity entity); List<IncomeInvoiceEntity> queryZtzz(IncomeInvoiceEntity entity);
List<JSONObject> queryByAloneId(IncomeInvoiceEntity jnquerydata); List<JSONObject> queryByAloneId(IncomeInvoiceEntity jnquerydata);
List<JSONObject> queryAccount(IncomeInvoiceEntity jnentity);
} }

View File

@ -66,5 +66,11 @@ public class IncomeInvoiceDaoImpl extends MybatisGenericDao<IncomeInvoiceEntity,
List<JSONObject> o = (List<JSONObject>) super.selectList(getSqlIdPrifx() + "queryByAloneId", entity); List<JSONObject> o = (List<JSONObject>) super.selectList(getSqlIdPrifx() + "queryByAloneId", entity);
return o; return o;
} }
@Override
public List<JSONObject> queryAccount(IncomeInvoiceEntity jnentity) {
List<JSONObject> o = (List<JSONObject>) super.selectList(getSqlIdPrifx() + "queryAccountByZq", jnentity);
return o;
}
} }

View File

@ -534,5 +534,183 @@
<if test="aloneId != null and aloneId != ''"> and a.ALONE_ID = #{aloneId} </if> <if test="aloneId != null and aloneId != ''"> and a.ALONE_ID = #{aloneId} </if>
</trim> </trim>
</select> </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> </mapper>

View File

@ -65,6 +65,7 @@ public class IncomeInvoiceServiceImpl extends BaseService<IncomeInvoiceEntity, S
} }
String cbUrl = "http://oapi.nanofintax.com/api/collect/uploadFinancialReport?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 uploadBalanceTableUrl = "http://oapi.nanofintax.com/api/collect/uploadBalanceTable?accessToken";
String tokenUrl = "http://oapi.nanofintax.com/api/getToken"; String tokenUrl = "http://oapi.nanofintax.com/api/getToken";
String accessKey = "6X3B526P5HqE6ums"; String accessKey = "6X3B526P5HqE6ums";
String accessSecret = "34e5fc32ac894a2ba2ade8c3852c7a0a"; String accessSecret = "34e5fc32ac894a2ba2ade8c3852c7a0a";
@ -697,18 +698,20 @@ public class IncomeInvoiceServiceImpl extends BaseService<IncomeInvoiceEntity, S
JSONObject jsonStr = requestJson.getJSONObject("jsonStr"); JSONObject jsonStr = requestJson.getJSONObject("jsonStr");
JSONObject businessDataStr = jsonStr.getJSONObject("businessDataStr"); JSONObject businessDataStr = jsonStr.getJSONObject("businessDataStr");
String eventType = jsonStr.getString("eventType"); String eventType = jsonStr.getString("eventType");
String ztbm = businessDataStr.getString("ztCode");//账套编码
String cjzq = businessDataStr.getString("period");//采集账期
String rwbm = businessDataStr.getString("taskNo");//任务编码
switch (eventType) { switch (eventType) {
case "onProcessFinished"://流程结束事件同步物料到U8C case "onProcessFinished"://流程结束事件同步物料到U8C
if(businessDataStr.getString("dataType") == null){//数据类型 if(businessDataStr.getString("dataType") == null){//数据类型
return BaseResult.getFailureMessageEntity("数据类型为空"); return BaseResult.getFailureMessageEntity("数据类型为空");
} }
if(businessDataStr.getString("dataType").equals("1")){//科目余额 if(businessDataStr.getString("dataType").equals("1")){//科目余额
taskExecutor.execute(() -> sendAccountCodeReport(ztbm,cjzq,rwbm));//科目余额
return BaseResult.getSuccessMessageEntity("数据获取成功");
} }
if(businessDataStr.getString("dataType").equals("2")){//财报 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)){ if(ztbm == null || "".equals(ztbm)){
return BaseResult.getFailureMessageEntity("账套编码为空"); return BaseResult.getFailureMessageEntity("账套编码为空");
} }
@ -736,6 +739,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 * @Author lvleigang