From 7ce3eab95436bbe72af202869be462910e7c1d55 Mon Sep 17 00:00:00 2001 From: lvleigang <957075182@qq.com> Date: Thu, 3 Jul 2025 14:40:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E7=A5=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../service/impl/NuoNuoServiceImpl.java | 13 +- .../controler/EntranceController.java | 11 +- .../frame/seeyon/dao/INuoNuoCallbackDao.java | 6 + .../dao/impl/NuoNuoCallbackDaoImpl.java | 15 + .../seeyon/entity/NuoNuoCallbackEntity.java | 46 ++++ .../seeyon/entity/NuoNuoCallbackEntity.xml | 33 +++ .../service/INuoNuoCallbackService.java | 4 + .../impl/NuoNuoCallbackServiceImpl.java | 257 ++++++++++++++++++ 9 files changed, 379 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index b252f4db..fe79d3e4 100644 --- a/.gitignore +++ b/.gitignore @@ -66,3 +66,4 @@ $RECYCLE.BIN/ /base-webapp/target/classes/com/hzya/frame/ /fw-weixin/target/ /E:/yongansystem/log/2024-10-15/ +/base-buildpackage/D:/yongansystem/kangarooDataCenter/v3/logs/2025-07-01/ diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/nuonuo/service/impl/NuoNuoServiceImpl.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/nuonuo/service/impl/NuoNuoServiceImpl.java index 0afc5e48..29617455 100644 --- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/nuonuo/service/impl/NuoNuoServiceImpl.java +++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/nuonuo/service/impl/NuoNuoServiceImpl.java @@ -107,8 +107,9 @@ public class NuoNuoServiceImpl extends BaseService impleme 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");//回调地址正式 + //todo + 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"));//销方地址 @@ -249,8 +250,8 @@ public class NuoNuoServiceImpl extends BaseService impleme //可能需要转换 sendData.put("redReason",mainData.getString("field0190"));//冲红原因:1销货退回2开票有误3服务中止4销售折让 //todo 切换地址 - 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("bizCallbackUrl","http://10.0.2.112:9021/kangarooDataCenterV3/entranceController/nuoNuoQrdCallback");//回调地址测试 + //sendData.put("bizCallbackUrl","http://10.0.2.112:9011/kangarooDataCenterV3/entranceController/nuoNuoQrdCallback");//回调地址正式 return sendData; } @@ -311,8 +312,8 @@ public class NuoNuoServiceImpl extends BaseService impleme //可能需要转换 sendData.put("billId",mainData.getString("field0191"));//红字确认单申请单号 //todo 切换地址 - 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("bizCallbackUrl","http://10.0.2.112:9021/kangarooDataCenterV3/entranceController/nuoNuoHcCallback");//回调地址测试 + //sendData.put("bizCallbackUrl","http://10.0.2.112:9011/kangarooDataCenterV3/entranceController/nuoNuoHcCallback");//回调地址正式 return sendData; } diff --git a/base-webapp/src/main/java/com/hzya/frame/webapp/entrance/controler/EntranceController.java b/base-webapp/src/main/java/com/hzya/frame/webapp/entrance/controler/EntranceController.java index bc9a2ccd..a725d83a 100644 --- a/base-webapp/src/main/java/com/hzya/frame/webapp/entrance/controler/EntranceController.java +++ b/base-webapp/src/main/java/com/hzya/frame/webapp/entrance/controler/EntranceController.java @@ -231,5 +231,14 @@ public class EntranceController { public JSONObject nuoNuoCallback(@RequestBody JSONObject jsonObject) throws Exception { return nuoNuoCallbackService.nuoNuoCallback(jsonObject); } - + @RequestMapping(value = "/nuoNuoQrdCallback") + @ResponseBody + public JSONObject nuoNuoQrdCallback(@RequestBody JSONObject jsonObject) throws Exception { + return nuoNuoCallbackService.nuoNuoQrdCallback(jsonObject); + } + @RequestMapping(value = "/nuoNuoHcCallback") + @ResponseBody + public JSONObject nuoNuoHcCallback(@RequestBody JSONObject jsonObject) throws Exception { + return nuoNuoCallbackService.nuoNuoHcCallback(jsonObject); + } } diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/INuoNuoCallbackDao.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/INuoNuoCallbackDao.java index 1709f048..bbebf0b0 100644 --- a/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/INuoNuoCallbackDao.java +++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/INuoNuoCallbackDao.java @@ -11,5 +11,11 @@ public interface INuoNuoCallbackDao extends IBaseDao queryOaData(NuoNuoCallbackEntity queryData); int updateNuoNuo(NuoNuoCallbackEntity nuoNuoCallbackEntity); + + int updateNuoNuoQrd(NuoNuoCallbackEntity nuoNuoCallbackEntity); + + List queryOaHcData(NuoNuoCallbackEntity queryData); + + int updateNuoNuoHc(NuoNuoCallbackEntity nuoNuoCallbackEntity); } diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/impl/NuoNuoCallbackDaoImpl.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/impl/NuoNuoCallbackDaoImpl.java index a42e631c..ea3d0822 100644 --- a/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/impl/NuoNuoCallbackDaoImpl.java +++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/dao/impl/NuoNuoCallbackDaoImpl.java @@ -22,5 +22,20 @@ public class NuoNuoCallbackDaoImpl extends MybatisGenericDao queryOaHcData(NuoNuoCallbackEntity entity) { + return (List) super.selectList(getSqlIdPrifx()+"queryOaHcData",entity); + } + @DS("#entity.dataSourceCode") + @Override + public int updateNuoNuoHc(NuoNuoCallbackEntity entity) { + return super.update(getSqlIdPrifx()+"updateNuoNuoHc",entity); + } } diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/entity/NuoNuoCallbackEntity.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/entity/NuoNuoCallbackEntity.java index 72c79a65..6cda1f0f 100644 --- a/fw-oa/src/main/java/com/hzya/frame/seeyon/entity/NuoNuoCallbackEntity.java +++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/entity/NuoNuoCallbackEntity.java @@ -14,6 +14,12 @@ public class NuoNuoCallbackEntity extends BaseEntity { private String field0153;//电子发票 + private String field0191;//申请编号 + private String field0192;//红字确认单状态 + private String field0193;//红字确认单描述 + private String field0194;//红冲状态 + private String field0195;//红冲描述 + public String getFieldsum() { return fieldsum; } @@ -79,5 +85,45 @@ public class NuoNuoCallbackEntity extends BaseEntity { public void setField0153(String field0153) { this.field0153 = field0153; } + + public String getField0191() { + return field0191; + } + + public void setField0191(String field0191) { + this.field0191 = field0191; + } + + public String getField0192() { + return field0192; + } + + public void setField0192(String field0192) { + this.field0192 = field0192; + } + + public String getField0193() { + return field0193; + } + + public void setField0193(String field0193) { + this.field0193 = field0193; + } + + public String getField0194() { + return field0194; + } + + public void setField0194(String field0194) { + this.field0194 = field0194; + } + + public String getField0195() { + return field0195; + } + + public void setField0195(String field0195) { + this.field0195 = field0195; + } } diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/entity/NuoNuoCallbackEntity.xml b/fw-oa/src/main/java/com/hzya/frame/seeyon/entity/NuoNuoCallbackEntity.xml index d8f45cb1..c56942ef 100644 --- a/fw-oa/src/main/java/com/hzya/frame/seeyon/entity/NuoNuoCallbackEntity.xml +++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/entity/NuoNuoCallbackEntity.xml @@ -30,5 +30,38 @@ where id = #{id} + + update formmain_11970 set + + field0192 = #{field0192}, + field0193 = #{field0193}, + + where field0191 = #{field0191} + + + + + + update formmain_11970 set + + field0150 = #{field0150}, + field0151 = TO_DATE(#{field0151}, 'YYYY-MM-DD HH24:MI:SS') , + field0188 = #{field0188}, + field0152 = #{field0152}, + field0153 = #{field0153}, + field0191 = #{field0191}, + field0194 = #{field0194}, + field0195 = #{field0195}, + + where id = #{id} + diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/service/INuoNuoCallbackService.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/service/INuoNuoCallbackService.java index 38c815d7..86e9dfca 100644 --- a/fw-oa/src/main/java/com/hzya/frame/seeyon/service/INuoNuoCallbackService.java +++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/service/INuoNuoCallbackService.java @@ -15,4 +15,8 @@ public interface INuoNuoCallbackService { * @return com.alibaba.fastjson.JSONObject **/ JSONObject nuoNuoCallback(JSONObject jsonObject); + + JSONObject nuoNuoQrdCallback(JSONObject jsonObject); + + JSONObject nuoNuoHcCallback(JSONObject jsonObject); } diff --git a/fw-oa/src/main/java/com/hzya/frame/seeyon/service/impl/NuoNuoCallbackServiceImpl.java b/fw-oa/src/main/java/com/hzya/frame/seeyon/service/impl/NuoNuoCallbackServiceImpl.java index eb651c87..3118024e 100644 --- a/fw-oa/src/main/java/com/hzya/frame/seeyon/service/impl/NuoNuoCallbackServiceImpl.java +++ b/fw-oa/src/main/java/com/hzya/frame/seeyon/service/impl/NuoNuoCallbackServiceImpl.java @@ -8,6 +8,7 @@ import com.hzya.frame.seeyon.dao.INuoNuoCallbackDao; import com.hzya.frame.seeyon.entity.NuoNuoCallbackEntity; import com.hzya.frame.seeyon.service.ICtpAttachmentService; import com.hzya.frame.seeyon.service.INuoNuoCallbackService; +import com.hzya.frame.web.exception.BaseSystemException; import org.apache.http.HttpEntity; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; @@ -34,6 +35,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLDecoder; @@ -202,6 +204,8 @@ public class NuoNuoCallbackServiceImpl implements INuoNuoCallbackService { return returnData; } + + private String sendFileUpload(String fileurl) { try { // 获取文件字节数据 @@ -391,4 +395,257 @@ public class NuoNuoCallbackServiceImpl implements INuoNuoCallbackService { logger.info("url:"+url+"。bodys:"+bodys+"。body"+body); return body.toString(); } + + + + /** + * @Author lvleigang + * @Description 诺诺确认单回调 + * @Date 1:47 下午 2025/7/3 + * @param jsonObject + * @return com.alibaba.fastjson.JSONObject + **/ + @Override + public JSONObject nuoNuoQrdCallback(JSONObject jsonObject) { + logger.error("诺诺发票回调接口:"+jsonObject.toJSONString()); + String backType = jsonObject.getString("backType");//回传类型, 1: 红字信息表 2:红字确认单 + String billId = jsonObject.getString("billId");//申请单号 + String billStatus = jsonObject.getString("billStatus");//确认单状态 + String billMessage = jsonObject.getString("billMessage");//确认单状态描述 + if(backType == null || !"2".equals(backType)){ + JSONObject returnData = new JSONObject(); + returnData.put("code","9999"); + returnData.put("message","非红字确认单"); + return returnData; + } + if(billId == null || "".equals(billId)){ + JSONObject returnData = new JSONObject(); + returnData.put("code","9999"); + returnData.put("message","申请单号为空"); + return returnData; + } + NuoNuoCallbackEntity nuoNuoCallbackEntity = new NuoNuoCallbackEntity(); + nuoNuoCallbackEntity.setDataSourceCode("SW-OA"); + nuoNuoCallbackEntity.setField0191(billId); + nuoNuoCallbackEntity.setField0192(billStatus); + if(billMessage != null && !"".equals(billMessage)){ + nuoNuoCallbackEntity.setField0193(billMessage); + }else { + switch (billStatus) { + case "-1": + nuoNuoCallbackEntity.setField0193("提交失败"); + break; + case "00": + nuoNuoCallbackEntity.setField0193("提交中"); + break; + case "01": + nuoNuoCallbackEntity.setField0193("无需确认"); + break; + case "02": + nuoNuoCallbackEntity.setField0193("销方录入待购方确认"); + break; + case "03": + nuoNuoCallbackEntity.setField0193("购方录入待销方确认"); + break; + case "04": + nuoNuoCallbackEntity.setField0193("购销双方已确认"); + break; + case "05": + nuoNuoCallbackEntity.setField0193("作废(销方录入购方否认)"); + break; + case "06": + nuoNuoCallbackEntity.setField0193("作废(购方录入销方否认)"); + break; + case "07": + nuoNuoCallbackEntity.setField0193("作废(超72小时未确认)"); + break; + case "08": + nuoNuoCallbackEntity.setField0193("作废(发起方撤销)"); + break; + case "09": + nuoNuoCallbackEntity.setField0193("作废(确认方撤销)"); + break; + case "10": + nuoNuoCallbackEntity.setField0193("作废(异常凭证)"); + break; + case "11": + nuoNuoCallbackEntity.setField0193("作废(纳税人状态异常阻断)"); + break; + case "15": + nuoNuoCallbackEntity.setField0193("提交税局中"); + break; + case "16": + nuoNuoCallbackEntity.setField0193("提交税局失败"); + break; + default: + nuoNuoCallbackEntity.setField0193("诺诺确认单状态错误"); + } + } + nuoNuoCallbackDao.updateNuoNuoQrd(nuoNuoCallbackEntity); + JSONObject returnData = new JSONObject(); + returnData.put("code","0000"); + returnData.put("message","业务方接收同步成功"); + return returnData; + } + + /** + * @Author lvleigang + * @Description 诺诺红冲回调 + * @Date 1:47 下午 2025/7/3 + * @param jsonObject + * @return com.alibaba.fastjson.JSONObject + **/ + @Override + public JSONObject nuoNuoHcCallback(JSONObject jsonObject) { + + logger.error("诺诺发票红冲回调接口:"+jsonObject.toJSONString()); + String successFlag = jsonObject.getString("successFlag");//True:开票成功;false:开票失败 + String errorMessage = jsonObject.getString("errorMessage");//开票异常信息 + String pdfUrl = jsonObject.getString("pdfUrl");//发票pdf地址 + String imageUrl = jsonObject.getString("imageUrl");//发票jpg地址 + String invoiceTime = jsonObject.getString("invoiceTime");//开票日期 + String invoiceCode = jsonObject.getString("allElectronicInvoiceNumber");//发票代码 + String invoiceNumber = jsonObject.getString("invoiceNumber");//发票号码 + String invoiceStatus = jsonObject.getString("invoiceStatus");//发票处理结果 + String orderNo = jsonObject.getString("orderNo");//订单编号 + logger.error("诺诺发票红冲回调接口1:"+invoiceTime); + if(invoiceTime != null && !"".equals(invoiceTime)){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = new Date(jsonObject.getLong("invoiceTime")); + invoiceTime = sdf.format(date); + } + logger.error("诺诺发票红冲回调接口2:"+orderNo); + + if(orderNo == null || "".equals(orderNo)){ + JSONObject returnData = new JSONObject(); + returnData.put("code","9999"); + returnData.put("message","订单编号不存在"); + return returnData; + } + logger.error("诺诺发票红冲回调接口3:"+successFlag); + if(successFlag == null || "".equals(successFlag)){ + JSONObject returnData = new JSONObject(); + returnData.put("code","9999"); + returnData.put("message","开票状态不存在"); + return returnData; + } + logger.error("诺诺发票红冲回调接口4:"+errorMessage); + + if(jsonObject.getBoolean("successFlag")){ + errorMessage = "开票成功"; + }else { + if(errorMessage == null || "".equals(errorMessage)){ + JSONObject returnData = new JSONObject(); + returnData.put("code","9999"); + returnData.put("message","开票异常信息不存在"); + return returnData; + } + } + logger.error("诺诺发票红冲回调接口5:"+errorMessage); + + //查找单据,上传附件 + NuoNuoCallbackEntity queryData = new NuoNuoCallbackEntity(); + queryData.setDataSourceCode("SW-OA"); + queryData.setField0191(orderNo); + List entityList = nuoNuoCallbackDao.queryOaHcData(queryData); + logger.error("诺诺发票红冲回调接口6:"+entityList.size()); + + if(entityList == null || entityList.size() == 0){ + JSONObject returnData = new JSONObject(); + returnData.put("code","9999"); + returnData.put("message","根据订单编号查找不到单据"); + return returnData; + } + if( entityList.size() > 1){ + JSONObject returnData = new JSONObject(); + returnData.put("code","9999"); + returnData.put("message","根据订单编号查找到多条单据"); + return returnData; + } + logger.error("诺诺发票红冲回调接口7:"+entityList.size()); + + NuoNuoCallbackEntity nuoNuoCallbackEntity = entityList.get(0); + nuoNuoCallbackEntity.setDataSourceCode("SW-OA"); + nuoNuoCallbackEntity.setField0191(orderNo);//单据号 + nuoNuoCallbackEntity.setField0150(invoiceNumber);//发票号码 + nuoNuoCallbackEntity.setField0151(invoiceTime);//开票日期 + nuoNuoCallbackEntity.setField0194(invoiceStatus);//红冲状态 + switch (invoiceStatus) { + case "1": + nuoNuoCallbackEntity.setField0195("开票成功");//红冲描述 + break; + case "2": + nuoNuoCallbackEntity.setField0195("开票失败");//红冲描述 + break; + case "3": + nuoNuoCallbackEntity.setField0195("作废成功");//红冲描述 + break; + case "4": + nuoNuoCallbackEntity.setField0195("作废失败");//红冲描述 + break; + case "5": + nuoNuoCallbackEntity.setField0195("开票失败删除成功");//红冲描述 + break; + default: + nuoNuoCallbackEntity.setField0195("诺诺发票红冲状态错误");//红冲描述 + } + //nuoNuoCallbackEntity.setField0188(invoiceCode);//发票代码 + nuoNuoCallbackEntity.setField0152(errorMessage);//开票结果 + String urluuid = String.valueOf(UUID.randomUUID().getLeastSignificantBits()); + logger.error("诺诺发票红冲回调接口8:"+pdfUrl); + + if(pdfUrl != null){ + String urlData = sendFileUpload(pdfUrl); + logger.error("诺诺发票红冲回调接口9:"+urlData); + + if(urlData != null){ + //保存关联表 + nuoNuoCallbackEntity.setField0153(urluuid);//发票文件 + logger.error("诺诺发票红冲回调接口10:"+nuoNuoCallbackEntity.getFieldsum()); + try { + ctpAttachmentService.saveAttachment(urlData,nuoNuoCallbackEntity.getFieldsum(),urluuid,nuoNuoCallbackEntity.getDataSourceCode()); + } catch (Exception e) { + logger.error("诺诺发票红冲回调接口10error"+e.getMessage()); + JSONObject returnData = new JSONObject(); + returnData.put("code","9999"); + returnData.put("message","根据订单编号上传附件失败"); + return returnData; + } + logger.error("诺诺发票红冲回调接口11:"+urlData); + + } + } + logger.error("诺诺发票红冲回调接口12:"+imageUrl); + + if(imageUrl != null){ + logger.error("诺诺发票红冲回调接口13:"+imageUrl); + + String urlData = sendFileUpload(imageUrl); + logger.error("诺诺发票红冲回调接口14:"+imageUrl); + + if(urlData != null){ + //保存关联表 + nuoNuoCallbackEntity.setField0153(urluuid);//发票文件 + logger.error("诺诺发票红冲回调接口15:"+imageUrl); + try { + ctpAttachmentService.saveAttachment(urlData,nuoNuoCallbackEntity.getFieldsum(),urluuid,nuoNuoCallbackEntity.getDataSourceCode()); + } catch (Exception e) { + JSONObject returnData = new JSONObject(); + returnData.put("code","9999"); + returnData.put("message","根据订单编号上传附件失败"); + return returnData; + } + logger.error("诺诺发票红冲回调接口16:"+imageUrl); + + } + } + //修改单据信息 + logger.error("诺诺发票红冲回调接口17:"+imageUrl); + nuoNuoCallbackDao.updateNuoNuoHc(nuoNuoCallbackEntity); + logger.error("诺诺发票红冲回调接口18:"+imageUrl); + JSONObject returnData = new JSONObject(); + returnData.put("code","0000"); + returnData.put("message","业务方接收同步成功"); + return returnData; + } }