应付单

This commit is contained in:
lvleigang 2025-07-16 16:01:50 +08:00
parent 74c5bff3b5
commit f4cfdfd4c7
12 changed files with 403 additions and 2 deletions

View File

@ -187,7 +187,7 @@ public class NuoNuoServiceImpl extends BaseService<NuoNuoEntity, String> impleme
expenseItem.put("srcDetailId", null); expenseItem.put("srcDetailId", null);
expenseItem.put("balatype", null); expenseItem.put("balatype", null);
expenseItem.put("cashaccount", null); expenseItem.put("cashaccount", null);
expenseItem.put("scomment", detailArray.getJSONObject(i).getString("field0191")); expenseItem.put("scomment", mainData.getString("field0191"));
expenseItem.put("amount", detailArray.getJSONObject(i).getString("field0149")); expenseItem.put("amount", detailArray.getJSONObject(i).getString("field0149"));
expenseItem.put("deptcode", detailArray.getJSONObject(i).getString("field0124")); expenseItem.put("deptcode", detailArray.getJSONObject(i).getString("field0124"));
expenseItem.put("recaccount", detailArray.getJSONObject(i).getString("field0165")); expenseItem.put("recaccount", detailArray.getJSONObject(i).getString("field0165"));
@ -718,7 +718,7 @@ public class NuoNuoServiceImpl extends BaseService<NuoNuoEntity, String> impleme
expenseItem.put("srcDetailId", null); expenseItem.put("srcDetailId", null);
expenseItem.put("balatype", null); expenseItem.put("balatype", null);
expenseItem.put("cashaccount", null); expenseItem.put("cashaccount", null);
expenseItem.put("scomment", detailArray.getJSONObject(i).getString("field0196")); expenseItem.put("scomment", mainData.getString("field0196"));
expenseItem.put("amount", detailArray.getJSONObject(i).getString("field0149") != null ? detailArray.getJSONObject(i).getBigDecimal("field0149") : "0"); expenseItem.put("amount", detailArray.getJSONObject(i).getString("field0149") != null ? detailArray.getJSONObject(i).getBigDecimal("field0149") : "0");
expenseItem.put("deptcode", detailArray.getJSONObject(i).getString("field0124")); expenseItem.put("deptcode", detailArray.getJSONObject(i).getString("field0124"));
expenseItem.put("recaccount", detailArray.getJSONObject(i).getString("field0165")); expenseItem.put("recaccount", detailArray.getJSONObject(i).getString("field0165"));

View File

@ -0,0 +1,11 @@
package com.hzya.frame.plugin.paymentSlip.dao;
import com.hzya.frame.basedao.dao.IBaseDao;
import com.hzya.frame.plugin.paymentSlip.entity.PaymentSlipEntity;
public interface IPaymentSlipDao extends IBaseDao<PaymentSlipEntity, String> {
int updateSendMsg(PaymentSlipEntity paymentSlipEntity);
}

View File

@ -0,0 +1,19 @@
package com.hzya.frame.plugin.paymentSlip.dao.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.hzya.frame.basedao.dao.MybatisGenericDao;
import com.hzya.frame.plugin.nuonuo.entity.NuoNuoEntity;
import com.hzya.frame.plugin.paymentSlip.dao.IPaymentSlipDao;
import com.hzya.frame.plugin.paymentSlip.entity.PaymentSlipEntity;
public class PaymentSlipDaoImpl extends MybatisGenericDao<PaymentSlipEntity, String> implements IPaymentSlipDao {
@DS("#entity.dataSourceCode")
@Override
public int updateSendMsg(PaymentSlipEntity entity) {
return super.update(getSqlIdPrifx()+"updateSendMsg",entity);
}
}

View File

@ -0,0 +1,25 @@
package com.hzya.frame.plugin.paymentSlip.entity;
import com.hzya.frame.web.entity.BaseEntity;
public class PaymentSlipEntity extends BaseEntity {
private String field0151;
private String field0152;
public String getField0151() {
return field0151;
}
public void setField0151(String field0151) {
this.field0151 = field0151;
}
public String getField0152() {
return field0152;
}
public void setField0152(String field0152) {
this.field0152 = field0152;
}
}

View File

@ -0,0 +1,14 @@
<?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.plugin.paymentSlip.dao.impl.PaymentSlipDaoImpl">
<update id="updateSendMsg" parameterType="com.hzya.frame.plugin.paymentSlip.entity.PaymentSlipEntity">
update formmain_8546 set
<trim suffix="" suffixOverrides=",">
<if test="field0151 != null and field0151 !='' "> field0151 = #{field0151},</if>
<if test="field0152 != null and field0152 !='' "> field0152 = #{field0152},</if>
</trim>
where id = #{id}
</update>
</mapper>

View File

@ -0,0 +1,57 @@
package com.hzya.frame.plugin.paymentSlip.plugin;
import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.base.PluginBaseEntity;
import com.hzya.frame.plugin.paymentSlip.service.IPaymentSlipService;
import com.hzya.frame.web.entity.JsonResultEntity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
public class PaymentSlipPluginInitializer extends PluginBaseEntity {
Logger logger = LoggerFactory.getLogger(PaymentSlipPluginInitializer.class);
@Autowired
private IPaymentSlipService paymentSlipService;
@Override
public void initialize() {
logger.info(getPluginLabel() + "执行初始化方法initialize()");
}
@Override
public void destroy() {
logger.info(getPluginLabel() + "执行销毁方法destroy()");
}
@Override
public String getPluginId() {
return "PaymentSlipPlugin";
}
@Override
public String getPluginName() {
return "PaymentSlipPlugin插件";
}
@Override
public String getPluginLabel() {
return "PaymentSlipPlugin";
}
@Override
public String getPluginType() {
return "1";
}
@Override
public JsonResultEntity executeBusiness(JSONObject requestJson) {
try {
logger.info("======开始执行付款单同步========");
return paymentSlipService.sendPaymentSlip(requestJson);
} catch (Exception e) {
logger.info("======执行付款单同步失败:{}========", e.getMessage());
}
return null;
}
}

View File

@ -0,0 +1,18 @@
package com.hzya.frame.plugin.paymentSlip.service;
import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.basedao.service.IBaseService;
import com.hzya.frame.plugin.paymentSlip.entity.PaymentSlipEntity;
import com.hzya.frame.web.entity.JsonResultEntity;
public interface IPaymentSlipService extends IBaseService<PaymentSlipEntity, String> {
/**
* @Author lvleigang
* @Description 同步付款单到BIP到款认领单和BIP保证金付款申请单还款
* @Date 10:45 上午 2025/7/16
* @param requestJson
* @return com.hzya.frame.web.entity.JsonResultEntity
**/
JsonResultEntity sendPaymentSlip(JSONObject requestJson);
}

View File

@ -0,0 +1,236 @@
package com.hzya.frame.plugin.paymentSlip.service.impl;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.basedao.service.impl.BaseService;
import com.hzya.frame.plugin.paymentSlip.dao.IPaymentSlipDao;
import com.hzya.frame.plugin.paymentSlip.entity.PaymentSlipEntity;
import com.hzya.frame.plugin.paymentSlip.service.IPaymentSlipService;
import com.hzya.frame.web.entity.BaseResult;
import com.hzya.frame.web.entity.JsonResultEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class PaymentSlipServiceImpl extends BaseService<PaymentSlipEntity, String> implements IPaymentSlipService {
@Value("${zt.url}")
private String url;
private IPaymentSlipDao paymentSlipDao;
@Autowired
public void setPaymentSlipDao(IPaymentSlipDao dao) {
this.paymentSlipDao = dao;
this.dao = dao;
}
/**
* @Author lvleigang
* @Description 同步付款单到BIP到款认领单和BIP保证金付款申请单还款
* @Date 10:45 上午 2025/7/16
* @param requestJson
* @return com.hzya.frame.web.entity.JsonResultEntity
**/
@Override
public JsonResultEntity sendPaymentSlip(JSONObject requestJson) {
logger.error("同步付款单:" + requestJson.toJSONString());
JSONObject jsonStr = requestJson.getJSONObject("jsonStr");
if (jsonStr == null) {
return BaseResult.getFailureMessageEntity("系统错误");
}
JSONObject businessDataStr = jsonStr.getJSONObject("businessDataStr");
if (businessDataStr == null) {
return BaseResult.getFailureMessageEntity("系统错误");
}
JSONObject mainData = businessDataStr.getJSONObject("formmain_8546");
if (mainData == null) {
return BaseResult.getFailureMessageEntity("系统错误");
}
//JSONArray detailArray = businessDataStr.getJSONArray("formson_11953");
JSONArray detailArray = new JSONArray();
if (mainData.getString("field0139") != null && "".equals(mainData.getString("field0139"))) {
JsonResultEntity dkrldmsg = senddkrld(mainData,detailArray);
JsonResultEntity bzjfksqhkmsg = sendbzjfksqhk(mainData,detailArray);
StringBuffer msg = new StringBuffer();
if(dkrldmsg.isFlag()){
msg.append("发送BIP到款认领单成功");
}else {
msg.append(dkrldmsg.getMsg()+"");
}
if(bzjfksqhkmsg.isFlag()){
msg.append("发送BIP保证金付款申请单还款成功。");
}else {
msg.append(bzjfksqhkmsg.getMsg()+"");
}
PaymentSlipEntity paymentSlipEntity = new PaymentSlipEntity();
paymentSlipEntity.setDataSourceCode("SW-OA");
paymentSlipEntity.setId(mainData.getString("id"));
paymentSlipEntity.setField0151(bzjfksqhkmsg.getMsg());
paymentSlipEntity.setField0152(dkrldmsg.getMsg());
paymentSlipDao.updateSendMsg(paymentSlipEntity);
if(dkrldmsg.isFlag() && bzjfksqhkmsg.isFlag()){
return BaseResult.getSuccessMessageEntity(msg.toString());
}else if(dkrldmsg.isFlag() || bzjfksqhkmsg.isFlag()){
return BaseResult.getSuccessMessageEntity(msg.toString());
}else {
return BaseResult.getFailureMessageEntity(msg.toString());
}
}else {
return BaseResult.getSuccessMessageEntity("是否需要打款不是否不推送BIP");
}
}
/**
* @Author lvleigang
* @Description 发送付款单到BIP保证金付款申请单还款
* @Date 11:21 上午 2025/7/16
* @param mainData
* @param detailArray
* @return com.hzya.frame.web.entity.JsonResultEntity
**/
private JsonResultEntity sendbzjfksqhk(JSONObject mainData, JSONArray detailArray) {
//组装发送数据
JSONObject sendData = getSendbzjfksqhkData(mainData, detailArray);
//发送数据
logger.error("发送付款单到BIP保证金付款申请单还款组装数据" + sendData.toJSONString());
String tokenResult = HttpRequest.post(url).
header("appId", "800050").
header("apiCode", "8000500026").
header("publicKey", "ZJYAM2YFEIsIaI1e4wMagkS2Q7SFgGk0RvsPhEES45m/OVFCe7eDIk+3zDUT+v578prj").
header("secretKey", "lR6+uf94mvNMclAB43oIwmhJSMDzQaViTkfXLeNvmGdpLfbFiUvbgbU+p43zO25Zj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=").
body(sendData.toJSONString()).
execute().
body();
logger.error("发送付款单到BIP保证金付款申请单还款返回" + tokenResult);
JSONObject resoutJson = JSONObject.parseObject(tokenResult);
if (resoutJson.getBoolean("flag")) {
return BaseResult.getSuccessMessageEntity("发送付款单到BIP保证金付款申请单还款成功");
} else {
return BaseResult.getFailureMessageEntity("发送付款单到BIP保证金付款申请单还款失败" + resoutJson.getString("msg"));
}
}
/**
* @Author lvleigang
* @Description 发送付款单到BIP保证金付款申请单还款组装数据
* @Date 11:28 上午 2025/7/16
* @param mainData
* @param detailArray
* @return com.alibaba.fastjson.JSONObject
**/
private JSONObject getSendbzjfksqhkData(JSONObject mainData, JSONArray detailArray) {
JSONObject sendData = new JSONObject();
sendData.put("c_bill_type", "R9");//单据类型 保证金付款申请单还款固定R9
sendData.put("formCode", mainData.getString("field0145"));//单据号
sendData.put("receiptDetailsId", null);//BIP到款明细主键
sendData.put("repaymentDate", mainData.getString("field0021"));//还款日期
sendData.put("repaymentType", "2");//还款类型
sendData.put("repaymentAmount", mainData.getString("field0077"));//还款金额
sendData.put("oacode", mainData.getString("field0001"));//还款金额
return sendData;
}
/**
* @Author lvleigang
* @Description 发送付款单到BIP到款认领单
* @Date 11:22 上午 2025/7/16
* @param mainData
* @param detailArray
* @return com.hzya.frame.web.entity.JsonResultEntity
**/
private JsonResultEntity senddkrld(JSONObject mainData, JSONArray detailArray) {
//组装发送数据
JSONObject sendData = getSenddkrldData(mainData, detailArray);
//发送数据
logger.error("发送付款单到BIP到款认领单组装数据" + sendData.toJSONString());
String tokenResult = HttpRequest.post(url).
header("appId", "800050").
header("apiCode", "8000500025").
header("publicKey", "ZJYAM2YFEIsIaI1e4wMagkS2Q7SFgGk0RvsPhEES45m/OVFCe7eDIk+3zDUT+v578prj").
header("secretKey", "lR6+uf94mvNMclAB43oIwmhJSMDzQaViTkfXLeNvmGdpLfbFiUvbgbU+p43zO25Zj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=").
body(sendData.toJSONString()).
execute().
body();
logger.error("发送付款单到BIP到款认领单返回" + tokenResult);
JSONObject resoutJson = JSONObject.parseObject(tokenResult);
if (resoutJson.getBoolean("flag")) {
return BaseResult.getSuccessMessageEntity("发送付款单到BIP到款认领单成功");
} else {
return BaseResult.getFailureMessageEntity("发送付款单到BIP到款认领单失败" + resoutJson.getString("msg"));
}
}
/**
* @param mainData
* @param detailArray
* @return com.alibaba.fastjson.JSONObject
* @Author lvleigang
* @Description 发送付款单到BIP到款认领单组装数据
* @Date 6:12 下午 2025/6/27
**/
private JSONObject getSenddkrldData(JSONObject mainData, JSONArray detailArray) {
JSONObject sendData = new JSONObject();
JSONObject hhdk01Master = new JSONObject();
JSONArray id_hhgl_detail = new JSONArray();
JSONArray id_hhdkrl_invoice = new JSONArray();
hhdk01Master.put("srcbillid", null);//到款明细主键
hhdk01Master.put("srcbilltype", "HHHP0104");//默认HHHP0104
hhdk01Master.put("pk_org", mainData.getString("field0105"));//公司编码
hhdk01Master.put("pk_group", mainData.getString("field0122"));//默认
hhdk01Master.put("infodate", mainData.getString("field0021"));//认领日期
hhdk01Master.put("transerial", mainData.getString("field0001"));//交易流水号
hhdk01Master.put("majorcategories", mainData.getString("field0103"));//经办大类(部门编码)
hhdk01Master.put("personnel", mainData.getString("field0124"));//业务人员人员编码
hhdk01Master.put("contractno", mainData.getString("field0029"));//回款合同号
hhdk01Master.put("name", mainData.getString("field0029"));//合同名称
hhdk01Master.put("vnote", mainData.getString("field0081"));//备注
hhdk01Master.put("ispoor", null);//是否差额
hhdk01Master.put("def1", null);//差额
hhdk01Master.put("poormsg", null);//差额原因
hhdk01Master.put("digest", mainData.getString("field0086"));//摘要
hhdk01Master.put("billingcust", null);//开票客户编码
hhdk01Master.put("syscode", "OA");//来源系统 默认OA
hhdk01Master.put("bankrelated_code", null);//对账标识码
hhdk01Master.put("currency", mainData.getString("field0116"));//币种
hhdk01Master.put("taxrate", null);//税率
hhdk01Master.put("oriamoneyy", mainData.getString("field0077"));//原币金额
hhdk01Master.put("unmoneyy", null);//未认领金额
hhdk01Master.put("olcrate", null);//当前汇率
hhdk01Master.put("rmbmoneyy", mainData.getString("field0076"));//人民币金额
hhdk01Master.put("paymentnature", "保证金");//款项性质
hhdk01Master.put("verificationtype", null);//核销类型
hhdk01Master.put("moneyy", mainData.getString("field0076"));//交易金额
hhdk01Master.put("unrmbmoneyy", null);//人民币未认领金额
hhdk01Master.put("oppbankaccount", mainData.getString("field0038"));//对方账号
hhdk01Master.put("oppunitname", mainData.getString("field0107"));//对方单位名称
hhdk01Master.put("pk_bank", null);//本方开户银行
hhdk01Master.put("bankname", null);//本方开户银行名称
hhdk01Master.put("pk_bankacc", null);//本方银行账号
hhdk01Master.put("bankaccount", null);//本方银行账户
hhdk01Master.put("pk_claimer", mainData.getString("field0124"));//认领人
hhdk01Master.put("claimdate", mainData.getString("field0021"));//认领日期
hhdk01Master.put("recpay_inneracc", null);//本方银行账号
hhdk01Master.put("pk_balatype", null);//结算方式
hhdk01Master.put("usemoney", null);//使用金额
hhdk01Master.put("ishb", null);//是否存在总部商务
hhdk01Master.put("creator", "OA01");//创建人(可以默认OA01)
hhdk01Master.put("creationtime", mainData.getString("field0021"));//创建时间
hhdk01Master.put("approvestatus", "-1");//默认-1
sendData.put("hhdk01Master",hhdk01Master);
sendData.put("id_hhgl_detail",id_hhgl_detail);
sendData.put("id_hhdkrl_invoice",id_hhdkrl_invoice);
return sendData;
}
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<id>PaymentSlipPlugin</id>
<name>PaymentSlipPlugin插件</name>
<category>20250716001</category>
</plugin>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean name="paymentSlipDao" class="com.hzya.frame.plugin.paymentSlip.dao.impl.PaymentSlipDaoImpl" />
</beans>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean name="paymentSlipPluginInitializer" class="com.hzya.frame.plugin.paymentSlip.plugin.PaymentSlipPluginInitializer" />
</beans>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean name="paymentSlipService" class="com.hzya.frame.plugin.paymentSlip.service.impl.PaymentSlipServiceImpl" />
</beans>