This commit is contained in:
lvleigang 2025-07-03 14:40:01 +08:00
parent 7f3a7b73f2
commit 7ce3eab954
9 changed files with 379 additions and 7 deletions

1
.gitignore vendored
View File

@ -66,3 +66,4 @@ $RECYCLE.BIN/
/base-webapp/target/classes/com/hzya/frame/ /base-webapp/target/classes/com/hzya/frame/
/fw-weixin/target/ /fw-weixin/target/
/E:/yongansystem/log/2024-10-15/ /E:/yongansystem/log/2024-10-15/
/base-buildpackage/D:/yongansystem/kangarooDataCenter/v3/logs/2025-07-01/

View File

@ -107,8 +107,9 @@ public class NuoNuoServiceImpl extends BaseService<NuoNuoEntity, String> impleme
sendData.put("buyerBank",mainData.getString("field0128"));//购方开户行 sendData.put("buyerBank",mainData.getString("field0128"));//购方开户行
sendData.put("buyerAccount",mainData.getString("field0139"));//购方银行账号 sendData.put("buyerAccount",mainData.getString("field0139"));//购方银行账号
sendData.put("orderNo",mainData.getString("field0001"));//订单编号 sendData.put("orderNo",mainData.getString("field0001"));//订单编号
//sendData.put("bizCallbackUrl","http://10.0.2.112:9021/kangarooDataCenterV3/entranceController/nuoNuoCallback");//回调地址测试 //todo
sendData.put("bizCallbackUrl","http://10.0.2.112:9011/kangarooDataCenterV3/entranceController/nuoNuoCallback");//回调地址正式 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("sellerName",mainData.getString("field0129"));//销方名称
sendData.put("sellerTaxnum",mainData.getString("field0162"));//销方税号 sendData.put("sellerTaxnum",mainData.getString("field0162"));//销方税号
sendData.put("sellerAddress",mainData.getString("field0161"));//销方地址 sendData.put("sellerAddress",mainData.getString("field0161"));//销方地址
@ -249,8 +250,8 @@ public class NuoNuoServiceImpl extends BaseService<NuoNuoEntity, String> impleme
//可能需要转换 //可能需要转换
sendData.put("redReason",mainData.getString("field0190"));//冲红原因1销货退回2开票有误3服务中止4销售折让 sendData.put("redReason",mainData.getString("field0190"));//冲红原因1销货退回2开票有误3服务中止4销售折让
//todo 切换地址 //todo 切换地址
sendData.put("bizCallbackUrl","http://10.0.2.112:9021/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/nuoNuoCallback");//回调地址正式 //sendData.put("bizCallbackUrl","http://10.0.2.112:9011/kangarooDataCenterV3/entranceController/nuoNuoQrdCallback");//回调地址正式
return sendData; return sendData;
} }
@ -311,8 +312,8 @@ public class NuoNuoServiceImpl extends BaseService<NuoNuoEntity, String> impleme
//可能需要转换 //可能需要转换
sendData.put("billId",mainData.getString("field0191"));//红字确认单申请单号 sendData.put("billId",mainData.getString("field0191"));//红字确认单申请单号
//todo 切换地址 //todo 切换地址
sendData.put("bizCallbackUrl","http://10.0.2.112:9021/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/nuoNuoCallback");//回调地址正式 //sendData.put("bizCallbackUrl","http://10.0.2.112:9011/kangarooDataCenterV3/entranceController/nuoNuoHcCallback");//回调地址正式
return sendData; return sendData;
} }

View File

@ -231,5 +231,14 @@ public class EntranceController {
public JSONObject nuoNuoCallback(@RequestBody JSONObject jsonObject) throws Exception { public JSONObject nuoNuoCallback(@RequestBody JSONObject jsonObject) throws Exception {
return nuoNuoCallbackService.nuoNuoCallback(jsonObject); 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);
}
} }

View File

@ -11,5 +11,11 @@ public interface INuoNuoCallbackDao extends IBaseDao<NuoNuoCallbackEntity, Strin
List<NuoNuoCallbackEntity> queryOaData(NuoNuoCallbackEntity queryData); List<NuoNuoCallbackEntity> queryOaData(NuoNuoCallbackEntity queryData);
int updateNuoNuo(NuoNuoCallbackEntity nuoNuoCallbackEntity); int updateNuoNuo(NuoNuoCallbackEntity nuoNuoCallbackEntity);
int updateNuoNuoQrd(NuoNuoCallbackEntity nuoNuoCallbackEntity);
List<NuoNuoCallbackEntity> queryOaHcData(NuoNuoCallbackEntity queryData);
int updateNuoNuoHc(NuoNuoCallbackEntity nuoNuoCallbackEntity);
} }

View File

@ -22,5 +22,20 @@ public class NuoNuoCallbackDaoImpl extends MybatisGenericDao<NuoNuoCallbackEntit
public int updateNuoNuo(NuoNuoCallbackEntity entity) { public int updateNuoNuo(NuoNuoCallbackEntity entity) {
return super.update(getSqlIdPrifx()+"updateNuoNuo",entity); return super.update(getSqlIdPrifx()+"updateNuoNuo",entity);
} }
@DS("#entity.dataSourceCode")
@Override
public int updateNuoNuoQrd(NuoNuoCallbackEntity entity) {
return super.update(getSqlIdPrifx()+"updateNuoNuoQrd",entity);
}
@DS("#entity.dataSourceCode")
@Override
public List<NuoNuoCallbackEntity> queryOaHcData(NuoNuoCallbackEntity entity) {
return (List<NuoNuoCallbackEntity>) super.selectList(getSqlIdPrifx()+"queryOaHcData",entity);
}
@DS("#entity.dataSourceCode")
@Override
public int updateNuoNuoHc(NuoNuoCallbackEntity entity) {
return super.update(getSqlIdPrifx()+"updateNuoNuoHc",entity);
}
} }

View File

@ -14,6 +14,12 @@ public class NuoNuoCallbackEntity extends BaseEntity {
private String field0153;//电子发票 private String field0153;//电子发票
private String field0191;//申请编号
private String field0192;//红字确认单状态
private String field0193;//红字确认单描述
private String field0194;//红冲状态
private String field0195;//红冲描述
public String getFieldsum() { public String getFieldsum() {
return fieldsum; return fieldsum;
} }
@ -79,5 +85,45 @@ public class NuoNuoCallbackEntity extends BaseEntity {
public void setField0153(String field0153) { public void setField0153(String field0153) {
this.field0153 = 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;
}
} }

View File

@ -30,5 +30,38 @@
where id = #{id} where id = #{id}
</update> </update>
<update id="updateNuoNuoQrd" parameterType="com.hzya.frame.seeyon.entity.NuoNuoCallbackEntity">
update formmain_11970 set
<trim suffix="" suffixOverrides=",">
<if test="field0192 != null and field0192 !='' "> field0192 = #{field0192},</if>
<if test="field0193 != null and field0193 !='' "> field0193 = #{field0193},</if>
</trim>
where field0191 = #{field0191}
</update>
<!-- 查询 采用==查询 -->
<select id="queryOaHcData" resultType="com.hzya.frame.seeyon.entity.NuoNuoCallbackEntity" parameterType="com.hzya.frame.seeyon.entity.NuoNuoCallbackEntity">
SELECT a.id as id ,
b.id as fieldsum
from formmain_11970 a
LEFT JOIN COL_SUMMARY b on a.id = b.FORM_RECORDID
<trim prefix="where" prefixOverrides="and">
<if test="field0191 != null and field0191 !='' ">a.field0191 = #{field0191} </if>
</trim>
</select>
<update id="updateNuoNuoHc" parameterType="com.hzya.frame.seeyon.entity.NuoNuoCallbackEntity">
update formmain_11970 set
<trim suffix="" suffixOverrides=",">
<if test="field0150 != null and field0150 !='' "> field0150 = #{field0150},</if>
<if test="field0151 != null and field0151 !='' "> field0151 = TO_DATE(#{field0151}, 'YYYY-MM-DD HH24:MI:SS') ,</if>
<if test="field0188 != null and field0188 !='' "> field0188 = #{field0188},</if>
<if test="field0152 != null and field0152 !='' "> field0152 = #{field0152},</if>
<if test="field0153 != null and field0153 !='' "> field0153 = #{field0153},</if>
<if test="field0191 != null and field0191 !='' "> field0191 = #{field0191},</if>
<if test="field0194 != null and field0194 !='' "> field0194 = #{field0194},</if>
<if test="field0195 != null and field0195 !='' "> field0195 = #{field0195},</if>
</trim>
where id = #{id}
</update>
</mapper> </mapper>

View File

@ -15,4 +15,8 @@ public interface INuoNuoCallbackService {
* @return com.alibaba.fastjson.JSONObject * @return com.alibaba.fastjson.JSONObject
**/ **/
JSONObject nuoNuoCallback(JSONObject jsonObject); JSONObject nuoNuoCallback(JSONObject jsonObject);
JSONObject nuoNuoQrdCallback(JSONObject jsonObject);
JSONObject nuoNuoHcCallback(JSONObject jsonObject);
} }

View File

@ -8,6 +8,7 @@ import com.hzya.frame.seeyon.dao.INuoNuoCallbackDao;
import com.hzya.frame.seeyon.entity.NuoNuoCallbackEntity; import com.hzya.frame.seeyon.entity.NuoNuoCallbackEntity;
import com.hzya.frame.seeyon.service.ICtpAttachmentService; import com.hzya.frame.seeyon.service.ICtpAttachmentService;
import com.hzya.frame.seeyon.service.INuoNuoCallbackService; import com.hzya.frame.seeyon.service.INuoNuoCallbackService;
import com.hzya.frame.web.exception.BaseSystemException;
import org.apache.http.HttpEntity; import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig; import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.CloseableHttpResponse;
@ -34,6 +35,7 @@ import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.net.URLDecoder; import java.net.URLDecoder;
@ -202,6 +204,8 @@ public class NuoNuoCallbackServiceImpl implements INuoNuoCallbackService {
return returnData; return returnData;
} }
private String sendFileUpload(String fileurl) { private String sendFileUpload(String fileurl) {
try { try {
// 获取文件字节数据 // 获取文件字节数据
@ -391,4 +395,257 @@ public class NuoNuoCallbackServiceImpl implements INuoNuoCallbackService {
logger.info("url"+url+"。bodys"+bodys+"。body"+body); logger.info("url"+url+"。bodys"+bodys+"。body"+body);
return body.toString(); 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<NuoNuoCallbackEntity> 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;
}
} }