From a3eb8ddea4c2edbb9165b37df27ed1381bb798ba Mon Sep 17 00:00:00 2001 From: lvleigang <957075182@qq.com> Date: Fri, 12 Sep 2025 08:49:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E9=80=81=E9=A2=84=E7=AE=97=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E6=98=8E=E7=BB=86=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BudgetExecutionDetailsServiceImpl.java | 251 ++++++++++++++++-- .../service/impl/NuoNuoServiceImpl.java | 10 +- .../test/java/com/hzya/frame/temButtom.java | 155 ++++++++++- 3 files changed, 392 insertions(+), 24 deletions(-) diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/BudgetExecutionDetails/service/impl/BudgetExecutionDetailsServiceImpl.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/BudgetExecutionDetails/service/impl/BudgetExecutionDetailsServiceImpl.java index e77e9047..f1b51981 100644 --- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/BudgetExecutionDetails/service/impl/BudgetExecutionDetailsServiceImpl.java +++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/BudgetExecutionDetails/service/impl/BudgetExecutionDetailsServiceImpl.java @@ -13,6 +13,8 @@ import com.hzya.frame.basedao.service.impl.BaseService; import org.springframework.beans.factory.annotation.Value; import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; public class BudgetExecutionDetailsServiceImpl extends BaseService implements IBudgetExecutionDetailsService { @Value("${zt.url}") @@ -79,26 +81,29 @@ public class BudgetExecutionDetailsServiceImpl extends BaseService impleme detail.put("detailAddress", mainData.getString("field0180"));//不动产详细地址 detail.put("realPropertyCertificate", field0177);//规格型号/不动产权证 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - Date date = inputFormat.parse(mainData.getString("field0183")); + Date date = mainData.getDate("field0183"); detail.put("rentStartDate", sdf.format(date));//租赁期起期,停车费业务支持yyyy-MM-dd HH:mm格式 - Date date1 = inputFormat.parse(mainData.getString("field0184")); + Date date1 = mainData.getDate("field0184"); detail.put("rentEndDate", sdf.format(date1));//租赁期止期支持yyyy-MM-dd HH:mm格式 if (mainData.getString("field0185") != null && "1".equals(mainData.getString("field0185"))) { detail.put("crossCityFlag", 1);//跨地市标志 @@ -404,14 +403,13 @@ public class NuoNuoServiceImpl extends BaseService impleme asd.append(" "); } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if(mainData.getString("field0183") != null){ - Date date = inputFormat.parse(mainData.getString("field0183")); + Date date = mainData.getDate("field0183"); asd.append(sdf.format(date)); asd.append(" "); } if(mainData.getString("field0184") != null){ - Date date = inputFormat.parse(mainData.getString("field0184")); + Date date = mainData.getDate("field0184"); asd.append(sdf.format(date)); asd.append(" "); } diff --git a/base-buildpackage/src/test/java/com/hzya/frame/temButtom.java b/base-buildpackage/src/test/java/com/hzya/frame/temButtom.java index 41218210..feeb49ae 100644 --- a/base-buildpackage/src/test/java/com/hzya/frame/temButtom.java +++ b/base-buildpackage/src/test/java/com/hzya/frame/temButtom.java @@ -1,12 +1,14 @@ package com.hzya.frame; import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.hzya.frame.plugin.businessData.dao.IBusinessDao; import com.hzya.frame.plugin.c4project.plugin.LexmisC4ProjectPluginInitializer; import com.hzya.frame.plugin.paymentSlip.service.IPaymentSlipService; import com.hzya.frame.plugin.paymentSlip.service.impl.PaymentSlipServiceImpl; import com.hzya.frame.util.AESUtil; +import com.hzya.frame.web.entity.BaseResult; import org.apache.http.HttpEntity; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; @@ -24,6 +26,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.io.IOException; +import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -47,7 +50,7 @@ public class temButtom { private LexmisC4ProjectPluginInitializer lexmisC4ProjectPluginInitializer; @Test - public void test01() { + public void test01() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); long timestamp = Long.parseLong("1744473600000"); // 字符串转 long @@ -75,12 +78,162 @@ public class temButtom { // e.printStackTrace(); //} //String asd = sdf.format(date); + String asdasda = "{\"jsonStr\":\"{\\\"affairId\\\":\\\"65490615926082872\\\",\\\"businessDataStr\\\":\\\"{\\\\\\\"formson_11953\\\\\\\":[{\\\\\\\"field0154\\\\\\\":163.79997856,\\\\\\\"field0155\\\\\\\":156,\\\\\\\"field0166\\\\\\\":\\\\\\\"经营租赁\\\\\\\",\\\\\\\"field0177\\\\\\\":\\\\\\\"浙2017,0155337\\\\\\\",\\\\\\\"field0156\\\\\\\":0.05,\\\\\\\"field0178\\\\\\\":\\\\\\\"平方米\\\\\\\",\\\\\\\"formmain_id\\\\\\\":-8403014784906081879,\\\\\\\"field0157\\\\\\\":93.29,\\\\\\\"field0147\\\\\\\":1,\\\\\\\"field0158\\\\\\\":\\\\\\\"3040502020400000000\\\\\\\",\\\\\\\"field0169\\\\\\\":\\\\\\\"1\\\\\\\",\\\\\\\"field0202\\\\\\\":1,\\\\\\\"field0148\\\\\\\":\\\\\\\"房租费\\\\\\\",\\\\\\\"field0159\\\\\\\":727.66,\\\\\\\"field0190\\\\\\\":\\\\\\\"SWJZ-2025043\\\\\\\",\\\\\\\"sort\\\\\\\":1,\\\\\\\"field0170\\\\\\\":\\\\\\\"09\\\\\\\",\\\\\\\"field0192\\\\\\\":\\\\\\\"HL05-013-20250008711\\\\\\\",\\\\\\\"field0160\\\\\\\":14553.24,\\\\\\\"field0193\\\\\\\":\\\\\\\"06\\\\\\\",\\\\\\\"field0149\\\\\\\":15280.9,\\\\\\\"id\\\\\\\":6181348360060813429}],\\\\\\\"formmain_11951\\\\\\\":{\\\\\\\"field0191\\\\\\\":\\\\\\\"B座705室 2025-09-01&2025-11-30 \\\\\\\",\\\\\\\"id\\\\\\\":-8403014784906081879,\\\\\\\"state\\\\\\\":1,\\\\\\\"field0163\\\\\\\":\\\\\\\"0571-88866999\\\\\\\",\\\\\\\"field0164\\\\\\\":\\\\\\\"中国银行杭州市庆春支行\\\\\\\",\\\\\\\"field0165\\\\\\\":\\\\\\\"381858327191\\\\\\\",\\\\\\\"field0001\\\\\\\":\\\\\\\"HL05-013-2025000871\\\\\\\",\\\\\\\"field0122\\\\\\\":\\\\\\\"cmp802\\\\\\\",\\\\\\\"ratifyflag\\\\\\\":0,\\\\\\\"field0167\\\\\\\":\\\\\\\"数电普票(电子)\\\\\\\",\\\\\\\"field0200\\\\\\\":4269396590321421689,\\\\\\\"field0124\\\\\\\":\\\\\\\"7202\\\\\\\",\\\\\\\"field0168\\\\\\\":\\\\\\\"pc\\\\\\\",\\\\\\\"field0201\\\\\\\":\\\\\\\"B座705室\\\\\\\",\\\\\\\"field0005\\\\\\\":\\\\\\\"-5276321587621769733\\\\\\\",\\\\\\\"sort\\\\\\\":0,\\\\\\\"field0161\\\\\\\":\\\\\\\"浙江省杭州市滨江区火炬大道581号D座\\\\\\\",\\\\\\\"field0162\\\\\\\":\\\\\\\"91330000768682555E\\\\\\\",\\\\\\\"ratify_member_id\\\\\\\":\\\\\\\"0\\\\\\\",\\\\\\\"finishedflag\\\\\\\":0,\\\\\\\"field0130\\\\\\\":\\\\\\\"018\\\\\\\",\\\\\\\"field0174\\\\\\\":15280.9,\\\\\\\"field0175\\\\\\\":727.66,\\\\\\\"field0011\\\\\\\":\\\\\\\"2296848734747248917\\\\\\\",\\\\\\\"field0176\\\\\\\":14553.24,\\\\\\\"field0134\\\\\\\":\\\\\\\"浙江省杭州市上城区环站东路859号金龙中心、铭腾大厦A幢-407\\\\\\\",\\\\\\\"field0135\\\\\\\":\\\\\\\"13003673092\\\\\\\",\\\\\\\"field0091\\\\\\\":\\\\\\\"CY000047\\\\\\\",\\\\\\\"field0092\\\\\\\":\\\\\\\"杭州皓诚企业管理有限公司\\\\\\\",\\\\\\\"field0173\\\\\\\":93.29,\\\\\\\"field0006\\\\\\\":\\\\\\\"sw25102\\\\\\\",\\\\\\\"field0007\\\\\\\":\\\\\\\"6247337885813720085\\\\\\\",\\\\\\\"field0128\\\\\\\":\\\\\\\"中国银行股份有限公司杭州湖墅支行\\\\\\\",\\\\\\\"field0129\\\\\\\":\\\\\\\"浙江三维无线科技有限公司\\\\\\\",\\\\\\\"field0009\\\\\\\":\\\\\\\"-7145603844771590658\\\\\\\",\\\\\\\"modify_member_id\\\\\\\":\\\\\\\"2021102011312154727\\\\\\\",\\\\\\\"start_date\\\\\\\":1757493604548,\\\\\\\"field0185\\\\\\\":\\\\\\\"0\\\\\\\",\\\\\\\"field0142\\\\\\\":\\\\\\\"OA01\\\\\\\",\\\\\\\"field0186\\\\\\\":\\\\\\\"2\\\\\\\",\\\\\\\"field0143\\\\\\\":\\\\\\\"SW01\\\\\\\",\\\\\\\"field0187\\\\\\\":\\\\\\\"06\\\\\\\",\\\\\\\"field0144\\\\\\\":\\\\\\\"(36D1-Cxx-F3)\\\\\\\",\\\\\\\"field0024\\\\\\\":\\\\\\\"3847844229251616506\\\\\\\",\\\\\\\"field0189\\\\\\\":7508062739999639242,\\\\\\\"field0146\\\\\\\":\\\\\\\"91330109MA2HXGRK5U\\\\\\\",\\\\\\\"field0180\\\\\\\":\\\\\\\"浙江省杭州市滨江区浦沿街道火炬大道581号\\\\\\\",\\\\\\\"field0182\\\\\\\":\\\\\\\"浙江省杭州市滨江区\\\\\\\",\\\\\\\"field0183\\\\\\\":1756656000000,\\\\\\\"field0184\\\\\\\":1764432000000,\\\\\\\"approve_member_id\\\\\\\":\\\\\\\"0\\\\\\\",\\\\\\\"start_member_id\\\\\\\":\\\\\\\"-5276321587621769733\\\\\\\",\\\\\\\"field0017\\\\\\\":1755619200000,\\\\\\\"field0139\\\\\\\":\\\\\\\"394878199259\\\\\\\",\\\\\\\"modify_date\\\\\\\":1757556515371}}\\\",\\\"formApp\\\":\\\"749147193823937773\\\",\\\"currentActivityId\\\":\\\"\\\",\\\"eventType\\\":\\\"onBeforeFinishWorkitem\\\",\\\"id\\\":\\\"-8403014784906081879\\\"}\",\"eventType\":\"onBeforeFinishWorkitem\",\"formAppId\":\"749147193823937773\"}"; + JSONObject requestJson = JSONObject.parseObject(asdasda); + JSONObject jsonStr = requestJson.getJSONObject("jsonStr"); + if (jsonStr == null) { + } + JSONObject businessDataStr = jsonStr.getJSONObject("businessDataStr"); + if (businessDataStr == null) { + } + JSONObject mainData = businessDataStr.getJSONObject("formmain_11951"); + if (mainData == null) { + } + JSONArray detailArray = businessDataStr.getJSONArray("formson_11953"); + if (mainData.getString("field0168") != null && "SJ".equals(mainData.getString("field0168"))) { + } + if (mainData.getString("field0150") != null && !"".equals(mainData.getString("field0150"))) { + } + JSONObject jsonObject = getSendData(mainData,detailArray); String a = AESUtil.encrypt("hzya@1314"); System.out.println(a); String b = AESUtil.decrypt("62e4295b615a30dbf3b8ee96f41c820b"); System.out.println(b); } + private JSONObject getSendData(JSONObject mainData, JSONArray detailArray) throws ParseException { + JSONObject sendData = new JSONObject(); + sendData.put("buyerName", mainData.getString("field0092"));//购方名称 + sendData.put("buyerTaxnum", mainData.getString("field0146"));//购方税号 + sendData.put("buyerAddress", mainData.getString("field0134"));//购方地址 + sendData.put("buyerPhone", mainData.getString("field0135"));//购方电话 + sendData.put("buyerBank", mainData.getString("field0128"));//购方开户行 + sendData.put("buyerAccount", mainData.getString("field0139"));//购方银行账号 + sendData.put("orderNo", mainData.getString("field0001"));//订单编号 + //sendData.put("bizCallbackUrl", "http://10.0.2.112:9021/kangarooDataCenterV3/entranceController/nuoNuoCallback");//回调地址测试 + sendData.put("bizCallbackUrl","http://10.0.2.112:9011/kangarooDataCenterV3/entranceController/nuoNuoCallback");//回调地址正式 + sendData.put("sellerName", mainData.getString("field0129"));//销方名称 + sendData.put("sellerTaxnum", mainData.getString("field0162"));//销方税号 + sendData.put("sellerAddress", mainData.getString("field0161"));//销方地址 + sendData.put("sellerPhone", mainData.getString("field0163"));//销方电话 + sendData.put("sellerBank", mainData.getString("field0164"));//销方开户银行 + sendData.put("sellerAccount", mainData.getString("field0165"));//销方银行账号 + sendData.put("invoiceLine", mainData.getString("field0168"));//发票种类,bs:数电专票(电子),pc:数电普票(电子) + sendData.put("invoiceType", 1);//开票类型,1:蓝票;2:红票 + sendData.put("substituteFlag", 0);//代开标志,0:非代开;1:代开。 + sendData.put("listFlag", 0);//清单标志,0:非清单;1:清单 + sendData.put("notifyType", -1);//推送方式,-1:不推送;0:邮箱;1:手机(默认);2:邮箱、手机;3:根据交付手机、邮箱动态交付 + sendData.put("requestSrc", 0);//请求来源,0 :api接口 + sendData.put("checkBlue", 0);//开具红票时是否校验蓝票 0.校验蓝票是否存在诺税通 1.不校验蓝票是否存在诺税通但校验可冲红金额 2.不校验蓝票是否存在诺税通且不校验可冲红金额 + JSONArray sendArray = new JSONArray(); + String ys = null; + String field0177 = null; + String field0190 = null; + if (detailArray != null && detailArray.size() > 0) { + for (int i = 0; i < detailArray.size(); i++) { + if (detailArray.getJSONObject(i).getString("field0193") != null && "06".equals(detailArray.getJSONObject(i).getString("field0193"))) { + ys = "06"; + field0177 = detailArray.getJSONObject(i).getString("field0177"); + } + if (detailArray.getJSONObject(i).getString("field0193") != null && "03".equals(detailArray.getJSONObject(i).getString("field0193"))) { + ys = "03"; + field0190 = detailArray.getJSONObject(i).getString("field0190"); + } + JSONObject detail = new JSONObject(); + detail.put("detailIndex", detailArray.getJSONObject(i).getString("field0147"));//明细序号数电票明细行必须从1开始编号 + detail.put("detailType", 0);//明细行性质:0,正常行;1,折扣行;2,被折扣行 + detail.put("goodsName", detailArray.getJSONObject(i).getString("field0148"));//商品名称 + if (detailArray.getJSONObject(i).getString("field0159") != null && !"".equals(detailArray.getJSONObject(i).getString("field0159")) + && detailArray.getJSONObject(i).getBigDecimal("field0159").compareTo(BigDecimal.ONE) == 0 //税额 + ) { + detail.put("withTaxFlag", 0);//含税标志,0:不含税,1:含税 + } else { + detail.put("withTaxFlag", 1);//含税标志,0:不含税,1:含税 + } + if(ys == null || !"03".equals(ys)){ + detail.put("goodsPrice", detailArray.getJSONObject(i).getString("field0154"));//含税单价 + detail.put("taxFreePrice", detailArray.getJSONObject(i).getString("field0155"));//不含税单价 + detail.put("goodsNum", detailArray.getJSONObject(i).getString("field0157"));//数量 + } + detail.put("taxrate", detailArray.getJSONObject(i).getString("field0156"));//税率 + detail.put("goodsCode", detailArray.getJSONObject(i).getString("field0158"));//税收分类编码 + detail.put("favouredPolicyCode", detailArray.getJSONObject(i).getString("field0170"));//优惠政策编码 + detail.put("deduction", detailArray.getJSONObject(i).getString("field0172"));//扣除额 + detail.put("taxFreeAmount", detailArray.getJSONObject(i).getString("field0160"));//不含税金额 + detail.put("tax", detailArray.getJSONObject(i).getString("field0159"));//税额 + detail.put("taxAmount", detailArray.getJSONObject(i).getString("field0149"));//含税金额 + if (detailArray.getJSONObject(i).getString("field0147") != null && !"".equals(detailArray.getJSONObject(i).getString("field0147"))) { + detail.put("favouredPolicyFlag", "1");//优惠政策标识,0:不使用;1:使用 数电发票时为空,仅传入优惠政策编码即可 + } else { + detail.put("favouredPolicyFlag", "0");//优惠政策标识,0:不使用;1:使用 数电发票时为空,仅传入优惠政策编码即可 + } + sendArray.add(detail); + } + } + sendData.put("detail", sendArray); + if ("06".equals(ys)) { + sendData.put("specificFactor", "06");//不动产租赁发票 + JSONArray realPropertyRentInfoList = new JSONArray(); + JSONObject detail = new JSONObject(); + detail.put("realPropertyAddress", mainData.getString("field0182"));//不动产地址 + detail.put("detailAddress", mainData.getString("field0180"));//不动产详细地址 + detail.put("realPropertyCertificate", field0177);//规格型号/不动产权证 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date date = mainData.getDate("field0183"); + detail.put("rentStartDate", sdf.format(date));//租赁期起期,停车费业务支持yyyy-MM-dd HH:mm格式 + Date date1 = mainData.getDate("field0184"); + detail.put("rentEndDate", sdf.format(date1));//租赁期止期支持yyyy-MM-dd HH:mm格式 + if (mainData.getString("field0185") != null && "1".equals(mainData.getString("field0185"))) { + detail.put("crossCityFlag", 1);//跨地市标志 + } else { + detail.put("crossCityFlag", 0);//跨地市标志 + } + detail.put("unit", mainData.getString("field0186"));//面积单位(默认平方米) + realPropertyRentInfoList.add(detail); + sendData.put("realPropertyRentInfoList", realPropertyRentInfoList);//不动产租赁发票 + }else if ("03".equals(ys)) { + sendData.put("specificFactor", "03");//建筑服务 + JSONObject detail = new JSONObject(); + detail.put("buildingAddress", mainData.getString("field0182"));//建筑服务发生地 + detail.put("detailedAddress", mainData.getString("field0180"));//不动产详细地址 + detail.put("landVatItemNo", mainData.getString("field0194"));//土地增值税项目编号 + detail.put("itemName", field0190);//项目名称 + detail.put("taxRelatedNumber", mainData.getString("field0196"));//跨区域涉税事项报验管理编号 + + if (mainData.getString("field0185") != null && "1".equals(mainData.getString("field0185"))) { + detail.put("crossCityFlag", 1);//跨地市标志 + } else { + detail.put("crossCityFlag", 0);//跨地市标志 + } + sendData.put("invoiceBuildingInfo", detail);//不动产租赁发票 + }else { + StringBuffer asd = new StringBuffer(); + if(mainData.getString("field0179") != null){ + asd.append(mainData.getString("field0179")); + asd.append(" "); + } + if(mainData.getString("field0180") != null){ + asd.append(mainData.getString("field0180")); + asd.append(" "); + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if(mainData.getString("field0183") != null){ + Date date = inputFormat.parse(mainData.getString("field0183")); + asd.append(sdf.format(date)); + asd.append(" "); + } + if(mainData.getString("field0184") != null){ + Date date = inputFormat.parse(mainData.getString("field0184")); + asd.append(sdf.format(date)); + asd.append(" "); + } + if(asd != null && !"".equals(asd.toString())){ + sendData.put("remark",asd.toString()); + } + } + return sendData; + } //@Test public void test02() {