材料付款单传NCC

This commit is contained in:
xiangerlin 2025-07-08 18:21:15 +08:00
parent 2c6715acdb
commit d0a4110ad2
5 changed files with 109 additions and 55 deletions

View File

@ -20,8 +20,10 @@ public class CLPayApplyEntity extends BaseEntity {
private String field0046;//单据类型选的是采购订单还是应付单 private String field0046;//单据类型选的是采购订单还是应付单
private String field0047;//应付单号 private String field0047;//应付单号
private String field0048;//采购订单号 private String field0048;//采购订单号
private String field0063;//采购订单付款计划pk
// 明细表
private String id;//明细表id private String id;//明细表id
private String formmain_id;//主表id private String formmain_id;//主表id
private String field0022;// 序号 private String field0022;// 序号
@ -49,9 +51,8 @@ public class CLPayApplyEntity extends BaseEntity {
private String field0057; //上层单据类型表头PK private String field0057; //上层单据类型表头PK
private String field0058; //上层单据类型表体PK private String field0058; //上层单据类型表体PK
private String field0061; //NCC采购订单/请购单表头pk private String field0061; //NCC采购订单/请购单表头pk
private String field0062; //C采购订单/请购单表体pk private String field0062; //NCC采购订单/请购单表体pk
private String field0064;//应付单组织本币余额付款的时候传这个值
public String getField0001() { public String getField0001() {
return field0001; return field0001;
} }
@ -363,4 +364,20 @@ public class CLPayApplyEntity extends BaseEntity {
public void setField0062(String field0062) { public void setField0062(String field0062) {
this.field0062 = field0062; this.field0062 = field0062;
} }
public String getField0063() {
return field0063;
}
public void setField0063(String field0063) {
this.field0063 = field0063;
}
public String getField0064() {
return field0064;
}
public void setField0064(String field0064) {
this.field0064 = field0064;
}
} }

View File

@ -42,6 +42,7 @@
<result property="field0060" column="field0060" /> <result property="field0060" column="field0060" />
<result property="field0061" column="field0061" /> <result property="field0061" column="field0061" />
<result property="field0062" column="field0062" /> <result property="field0062" column="field0062" />
<result property="field0064" column="field0064" />
</resultMap> </resultMap>
<sql id="CLPayApplyEntity_list"> <sql id="CLPayApplyEntity_list">
@ -56,6 +57,7 @@
formmain_0266.field0046,-- 单据类型 formmain_0266.field0046,-- 单据类型
formmain_0266.field0047,-- 应付单号 formmain_0266.field0047,-- 应付单号
formmain_0266.field0048,-- 采购订单号 formmain_0266.field0048,-- 采购订单号
formmain_0266.field0063,-- 采购订单付款计划pk
formson_0267.id, formson_0267.id,
formson_0267.formmain_id, formson_0267.formmain_id,
formson_0267.field0022,-- 序号 formson_0267.field0022,-- 序号
@ -82,8 +84,9 @@
formson_0267.field0056,-- 上层单据类型 formson_0267.field0056,-- 上层单据类型
formson_0267.field0057,-- 上层单据类型表头PK formson_0267.field0057,-- 上层单据类型表头PK
formson_0267.field0058,-- 上层单据类型表体PK formson_0267.field0058,-- 上层单据类型表体PK
formson_0267.field0061,-- NCC采购订单/请购单表头pk formson_0267.field0061,-- NCC采购订单/应付单表头pk
formson_0267.field0062-- NCC采购订单/请购单表体pk formson_0267.field0062,-- NCC采购订单/应付单表体pk
formson_0267.field0064-- NCC应付单单表体组织本币余额
</sql> </sql>
<select id="entity_list_base" resultMap="get-CLPayApplyEntity-result" parameterType="com.hzya.frame.plugin.oa.payapply.entity.CLPayApplyEntity"> <select id="entity_list_base" resultMap="get-CLPayApplyEntity-result" parameterType="com.hzya.frame.plugin.oa.payapply.entity.CLPayApplyEntity">
select select

View File

@ -11,7 +11,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
/** /**
* @Description 付款单传NCC * @Description 材料类付款单传NCC
* @Author xiangerlin * @Author xiangerlin
* @Date 2025-06-25 11:40:50 * @Date 2025-06-25 11:40:50
**/ **/
@ -61,7 +61,7 @@ public class PaybillPluginInitializer extends PluginBaseEntity {
**/ **/
@Override @Override
public String getPluginName() { public String getPluginName() {
return "付款单传NCC"; return "材料类付款单传NCC";
} }
/**** /****
@ -72,7 +72,7 @@ public class PaybillPluginInitializer extends PluginBaseEntity {
**/ **/
@Override @Override
public String getPluginLabel() { public String getPluginLabel() {
return "付款单传NCC"; return "材料类付款单传NCC";
} }
/*** /***
@ -96,7 +96,7 @@ public class PaybillPluginInitializer extends PluginBaseEntity {
**/ **/
@Override @Override
public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception { public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception {
logger.info("======开始执行付款单传NCC插件======"); logger.info("======开始执行材料类付款单传NCC插件======");
paybillPluginService.sync2ncc(requestJson); paybillPluginService.sync2ncc(requestJson);
return BaseResult.getSuccessMessageEntity("执行成功"); return BaseResult.getSuccessMessageEntity("执行成功");
} }

View File

@ -4,13 +4,13 @@ import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.web.entity.JsonResultEntity; import com.hzya.frame.web.entity.JsonResultEntity;
/** /**
* @Description 付款单传NCC * @Description 材料类付款单传NCC
* @Author xiangerlin * @Author xiangerlin
* @Date 2025/6/25 11:44 * @Date 2025/6/25 11:44
**/ **/
public interface IPaybillPluginService { public interface IPaybillPluginService {
/** /**
* 付款单传到NCC * 材料类付款单传到NCC
* @param requestJson * @param requestJson
* @return * @return
*/ */

View File

@ -51,7 +51,6 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
public JsonResultEntity sync2ncc(JSONObject requestJson) { public JsonResultEntity sync2ncc(JSONObject requestJson) {
//数据源编码 //数据源编码
String datasourceCode = requestJson.getString("sourceCode"); String datasourceCode = requestJson.getString("sourceCode");
String task_living_details_id = requestJson.getString("integration_task_living_details_id");
String headersStr = requestJson.getString("headers");//请求头 String headersStr = requestJson.getString("headers");//请求头
String eventType = requestJson.getString("eventType"); String eventType = requestJson.getString("eventType");
JSONObject headers = requestJson.getJSONObject("headers"); JSONObject headers = requestJson.getJSONObject("headers");
@ -69,7 +68,7 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
//流程结束 //流程结束
if (ColEventTypeEnum.ONPROCESSFINISHED.getType().equals(eventType)) { // if (ColEventTypeEnum.ONPROCESSFINISHED.getType().equals(eventType)) {
/** /**
* 判断付款单表头的财务组织如果是002说明是总部代项目部付款 * 判断付款单表头的财务组织如果是002说明是总部代项目部付款
* 要生成对应项目部的付款单 以及 总部的 付款结算单 * 要生成对应项目部的付款单 以及 总部的 付款结算单
@ -83,7 +82,7 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
if ("002".equals(orgCode)) { if ("002".equals(orgCode)) {
cmpPaybill(datasourceCode, formmainData, headers, forsonDataList); cmpPaybill(datasourceCode, formmainData, headers, forsonDataList);
} }
} // }
return BaseResult.getSuccessMessageEntity("操作成功"); return BaseResult.getSuccessMessageEntity("操作成功");
} }
@ -104,38 +103,43 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
boolean flag = true; boolean flag = true;
//结算方式编码 10备用金20开票21背书3网银 //结算方式编码 10备用金20开票21背书3网银
String balaTypeCode = formmainData.getString("field0076"); String balaTypeCode = formmainData.getString("field0076");
if ("20".equals(balaTypeCode)) { //付款结算单
logger.info("======OA付款单传开票的方式保证金传NCC付款结算单请求参数:{}======"); JSONObject param = getCmpPayBillVO(formmainData, forsonDataList, orgCode, billmaker, groupCode);
JSONObject param = getCmpPayBillVO(formmainData, forsonDataList, orgCode, billmaker, groupCode); String req = JSONObject.toJSONString(param);
String req = JSONObject.toJSONString(param); logger.info("======OA付款单传NCC付款结算单请求参数:{}======", req);
String result = HttpRequest.post(baseUrl) String access_token = getAccessToken();
.header("appId", "800065")//NCC应用 String result = HttpRequest.post(baseUrl)
.header("apiCode", "8000650006")//NCC付款单新增保存提交 .header("appId", "800065")//NCC应用
.header("publicKey", "ZJYAbkr9+XjnDrlfQCRKXtpVvg/BjxqtxzcLgg5TIGagEKJCe7eDIk+3zDUT+v578prj")//OA公钥 .header("apiCode", "8000650006")//NCC付款结算单新增
.header("secretKey", "2GR4+yrcx+Ev+pN0Q6V6wxCdvisPX7wzNKBgc5SsIYGxYI5GTISXT6GvTPfp1u2Rj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//OA密钥 .header("publicKey", "ZJYAbkr9+XjnDrlfQCRKXtpVvg/BjxqtxzcLgg5TIGagEKJCe7eDIk+3zDUT+v578prj")//OA公钥
.body(req)//表单内容 .header("secretKey", "2GR4+yrcx+Ev+pN0Q6V6wxCdvisPX7wzNKBgc5SsIYGxYI5GTISXT6GvTPfp1u2Rj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//OA密钥
.timeout(30000)//超时毫秒 .header("access_token", access_token)//token
.execute().body(); .body(req)//表单内容
logger.info("======OA付款单传开票的方式保证金传NCC付款结算单返回参数:{}",result); .timeout(30000)//超时毫秒
if (StrUtil.isNotEmpty(result)){ .execute().body();
JSONObject resultJson = JSONObject.parseObject(result); logger.info("======OA付款单传NCC付款结算单响应参数:{}======",result);
flag = resultJson.getBoolean("flag"); if (StrUtil.isNotEmpty(result)){
} JSONObject resultJson = JSONObject.parseObject(result);
flag = resultJson.getBoolean("flag");
} }
//如果有保证金的情况保证金保存成功再保存承兑的
if (flag){ if (flag){
JSONObject param = getCmpPayBillVO(formmainData, forsonDataList, orgCode, billmaker, groupCode); //保证金单独生成一张付款结算单
String req = JSONObject.toJSONString(param); if ("20".equals(balaTypeCode)) {
logger.info("======OA付款单传NCC付款结算单请求参数:{}======", req); logger.info("======OA付款单传开票的方式保证金传NCC付款结算单请求参数:{}======");
String result = HttpRequest.post(baseUrl) JSONObject bzjParam = getCmpPayBillVO(formmainData, forsonDataList, orgCode, billmaker, groupCode);
.header("appId", "800065")//NCC应用 String bzjReq = JSONObject.toJSONString(bzjParam);
.header("apiCode", "8000650006")//NCC付款单新增保存提交 String bazjResult = HttpRequest.post(baseUrl)
.header("publicKey", "ZJYAbkr9+XjnDrlfQCRKXtpVvg/BjxqtxzcLgg5TIGagEKJCe7eDIk+3zDUT+v578prj")//OA公钥 .header("appId", "800065")//NCC应用
.header("secretKey", "2GR4+yrcx+Ev+pN0Q6V6wxCdvisPX7wzNKBgc5SsIYGxYI5GTISXT6GvTPfp1u2Rj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//OA密钥 .header("apiCode", "8000650006")//NCC付款结算单新增
.body(req)//表单内容 .header("publicKey", "ZJYAbkr9+XjnDrlfQCRKXtpVvg/BjxqtxzcLgg5TIGagEKJCe7eDIk+3zDUT+v578prj")//OA公钥
.timeout(30000)//超时毫秒 .header("secretKey", "2GR4+yrcx+Ev+pN0Q6V6wxCdvisPX7wzNKBgc5SsIYGxYI5GTISXT6GvTPfp1u2Rj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//OA密钥
.execute().body(); .header("access_token", access_token)//token
logger.info("======OA付款单传NCC付款结算单响应参数:{}======",result); .body(bzjReq)//表单内容
.timeout(30000)//超时毫秒
.execute().body();
logger.info("======OA付款单传开票的方式保证金传NCC付款结算单返回参数:{}",bazjResult);
}
} }
} }
@ -157,7 +161,7 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
if (!"20".equals(balaTypeCode)) { if (!"20".equals(balaTypeCode)) {
head.put("primal_money", formmainData.getString("field0019"));//付款原币金额 head.put("primal_money", formmainData.getString("field0019"));//付款原币金额
} else { } else {
head.put("primal_money", "");//付款原币金额 这里要取保证金 head.put("primal_money", "field0096");//付款原币金额 这里要取保证金
} }
head.put("pk_currtype", formmainData.getString("field0087"));//币种名称 head.put("pk_currtype", formmainData.getString("field0087"));//币种名称
@ -173,7 +177,7 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
if (!"20".equals(balaTypeCode)) { if (!"20".equals(balaTypeCode)) {
b.put("pay_primal", item.getString("field0030"));//付款原币金额 b.put("pay_primal", item.getString("field0030"));//付款原币金额
} else { } else {
b.put("pay_primal", "");//这里要取保证金 b.put("pay_primal", "field0096");//这里要取保证金
} }
b.put("creationtime", DateUtil.now());//创建时间 b.put("creationtime", DateUtil.now());//创建时间
b.put("direction", "-1");//方向 :1=;-1=; b.put("direction", "-1");//方向 :1=;-1=;
@ -246,7 +250,7 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
head.put("effectdate", "");//生效日期 head.put("effectdate", "");//生效日期
head.put("officialprintuser", "");//正式打印人编码 head.put("officialprintuser", "");//正式打印人编码
head.put("officialprintdate", "");//正式打印日期 head.put("officialprintdate", "");//正式打印日期
head.put("src_syscode", "");//单据来源系统编码 head.put("src_syscode", "1");//单据来源系统编码
head.put("pk_ratetype", "");//组织汇率类型 head.put("pk_ratetype", "");//组织汇率类型
head.put("ratedate", "");//组织汇率来源日期 head.put("ratedate", "");//组织汇率来源日期
head.put("def1", formmainData.getString("field0083"));//账户属性 head.put("def1", formmainData.getString("field0083"));//账户属性
@ -281,14 +285,14 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
payApplyJson.put("pk_psndoc", head.getString("pk_psndoc"));//业务员编码往来对象选择业务员时必输 payApplyJson.put("pk_psndoc", head.getString("pk_psndoc"));//业务员编码往来对象选择业务员时必输
payApplyJson.put("pk_recpaytype", forson.getString("field0031"));//付款业务类型名称 payApplyJson.put("pk_recpaytype", forson.getString("field0031"));//付款业务类型名称
payApplyJson.put("pk_currtype", payApply.getField0051());//币种编码 payApplyJson.put("pk_currtype", payApply.getField0051());//币种编码
payApplyJson.put("money_de", payApply.getField0042());//贷方原币金额 payApplyJson.put("money_de", payApply.getField0064());//贷方原币金额
payApplyJson.put("occupationmny", payApply.getField0042());//预占用核销原币余额 payApplyJson.put("occupationmny", payApply.getField0064());//预占用核销原币余额
payApplyJson.put("rate", "1");//组织本币汇率 payApplyJson.put("rate", "1");//组织本币汇率
payApplyJson.put("local_money_de", payApply.getField0042());//组织本币金额 payApplyJson.put("local_money_de", payApply.getField0064());//组织本币金额
payApplyJson.put("grouprate", "1");//组织本币汇率 payApplyJson.put("grouprate", "1");//组织本币汇率
payApplyJson.put("groupdebit", payApply.getField0042());//集团本币金额 payApplyJson.put("groupdebit", payApply.getField0064());//集团本币金额
payApplyJson.put("globalrate", "1");//全局本币汇率 payApplyJson.put("globalrate", "1");//全局本币汇率
payApplyJson.put("globaldebit", payApply.getField0042());//全局本币金额 payApplyJson.put("globaldebit", payApply.getField0064());//全局本币金额
payApplyJson.put("quantity_de", payApply.getField0044());//贷方数量 payApplyJson.put("quantity_de", payApply.getField0044());//贷方数量
payApplyJson.put("price", payApply.getField0041());//单价 payApplyJson.put("price", payApply.getField0041());//单价
payApplyJson.put("local_price", payApply.getField0041());//本币单价 payApplyJson.put("local_price", payApply.getField0041());//本币单价
@ -328,9 +332,11 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
payApplyJson.put("src_tradetype", payApply.getField0059());//源头交易类型 payApplyJson.put("src_tradetype", payApply.getField0059());//源头交易类型
payApplyJson.put("src_billtype", payApply.getField0052());//源头单据类型 payApplyJson.put("src_billtype", payApply.getField0052());//源头单据类型
payApplyJson.put("src_billid", payApply.getField0061());//源头单据表头id payApplyJson.put("src_billid", payApply.getField0061());//源头单据表头id
payApplyJson.put("src_itemid", payApply.getField0062());//源头单据表体id //payApplyJson.put("src_itemid", payApply.getField0062());//源头单据表体id
payApplyJson.put("src_itemid", payApply.getField0063());//源头单据表体id
payApplyJson.put("top_billid", payApply.getField0061());//上层单据表头id payApplyJson.put("top_billid", payApply.getField0061());//上层单据表头id
payApplyJson.put("top_itemid", payApply.getField0062());//上层单据表体id //payApplyJson.put("top_itemid", payApply.getField0062());//上层单据表体id // 这里可能是取采购付款计划的pk
payApplyJson.put("top_itemid", payApply.getField0063());//上层单据表体id // 这里可能是取采购付款计划的pk
payApplyJson.put("top_billtype", payApply.getField0052());//上层单据类型 payApplyJson.put("top_billtype", payApply.getField0052());//上层单据类型
payApplyJson.put("top_tradetype", payApply.getField0059());//上层交易类型 payApplyJson.put("top_tradetype", payApply.getField0059());//上层交易类型
payApplyJson.put("purchaseorder", payApply.getField0048());//订单号 payApplyJson.put("purchaseorder", payApply.getField0048());//订单号
@ -348,7 +354,7 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
payApplyJson.put("prepay", "0");//付款性质0应付款1预付款 payApplyJson.put("prepay", "0");//付款性质0应付款1预付款
} }
//累加付款总额 //累加付款总额
money = money.add(new BigDecimal(payApply.getField0042())); money = money.add(new BigDecimal(payApply.getField0064()));
itemList.add(payApplyJson); itemList.add(payApplyJson);
} }
} }
@ -360,11 +366,13 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
head.put("items", itemList); head.put("items", itemList);
String req = JSONObject.toJSONString(head); String req = JSONObject.toJSONString(head);
logger.info("======OA付款单传NCC付款单请求参数:{}======", req); logger.info("======OA付款单传NCC付款单请求参数:{}======", req);
String access_token = getAccessToken();
String result = HttpRequest.post(baseUrl) String result = HttpRequest.post(baseUrl)
.header("appId", "800065")//NCC应用 .header("appId", "800065")//NCC应用
.header("apiCode", "8000650012")//NCC付款单新增保存提交 .header("apiCode", "8000650012")//NCC付款单新增保存提交
.header("publicKey", "ZJYAbkr9+XjnDrlfQCRKXtpVvg/BjxqtxzcLgg5TIGagEKJCe7eDIk+3zDUT+v578prj")//OA公钥 .header("publicKey", "ZJYAbkr9+XjnDrlfQCRKXtpVvg/BjxqtxzcLgg5TIGagEKJCe7eDIk+3zDUT+v578prj")//OA公钥
.header("secretKey", "2GR4+yrcx+Ev+pN0Q6V6wxCdvisPX7wzNKBgc5SsIYGxYI5GTISXT6GvTPfp1u2Rj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//OA密钥 .header("secretKey", "2GR4+yrcx+Ev+pN0Q6V6wxCdvisPX7wzNKBgc5SsIYGxYI5GTISXT6GvTPfp1u2Rj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//OA密钥
.header("access_token", access_token)//token
.body(req)//表单内容 .body(req)//表单内容
.timeout(30000)//超时毫秒 .timeout(30000)//超时毫秒
.execute().body(); .execute().body();
@ -379,4 +387,30 @@ public class PaybillPluginServiceImpl implements IPaybillPluginService {
} }
return null; return null;
} }
private String getAccessToken(){
try {
String result = HttpRequest.post(baseUrl)
.header("appId", "800065")//NCC应用
.header("apiCode", "8000650004")//NCC付token
.header("publicKey", "ZJYAbkr9+XjnDrlfQCRKXtpVvg/BjxqtxzcLgg5TIGagEKJCe7eDIk+3zDUT+v578prj")//OA公钥
.header("secretKey", "2GR4+yrcx+Ev+pN0Q6V6wxCdvisPX7wzNKBgc5SsIYGxYI5GTISXT6GvTPfp1u2Rj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=")//OA密钥
.body("")//表单内容
.timeout(30000)//超时毫秒
.execute().body();
if (StrUtil.isNotEmpty(result)){
JSONObject resultJson = JSONObject.parseObject(result);
JSONObject attribute = resultJson.getJSONObject("attribute");
if (null != attribute && attribute.getBoolean("success")){
JSONObject data = attribute.getJSONObject("data");
if (null != data){
return data.getString("access_token");
}
}
}
}catch (Exception e){
logger.error("获取NCCtoken失败:{}",e);
}
return null;
}
} }