提交内容:推送BIP结算结果日期修改、付款单BIP打回功能
时间:2025-04-24 17:48 提交人:邹江涛
This commit is contained in:
parent
a63ab9e378
commit
19eb507c10
|
@ -3,6 +3,9 @@ package shkd.sys.sys.mservice;
|
|||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
//import com.google.gson.Gson;
|
||||
//import com.kingdee.bos.webapi.entity.RepoRet;
|
||||
//import com.kingdee.bos.webapi.sdk.K3CloudApi;
|
||||
import kd.bos.bill.BillShowParameter;
|
||||
import kd.bos.cache.CacheFactory;
|
||||
import kd.bos.cache.TempFileCache;
|
||||
|
@ -46,6 +49,7 @@ import org.springframework.http.HttpHeaders;
|
|||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import shkd.sys.sys.common.PaymentRequest;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
@ -189,10 +193,10 @@ public class ApiService {
|
|||
/**
|
||||
* 组装推送BIP付款单JSON
|
||||
*
|
||||
* @param dynamic 某个单据的 某条需要推送的数据 注:映射字段必须包含在其中,缺失字段会报错
|
||||
* @param systemName 推送系统标识
|
||||
* @param dynamic 某个单据的 某条需要推送的数据 注:映射字段必须包含在其中,缺失字段会报错
|
||||
* @param systemName 推送系统标识
|
||||
* @param dynamicObjects 反写单据数据
|
||||
* @param requestBody 请求体数据
|
||||
* @param requestBody 请求体数据
|
||||
* @return 推送结果
|
||||
*/
|
||||
public static String paymentSlipsJson(DynamicObject dynamic, String systemName, List<DynamicObject> dynamicObjects, String requestBody) {
|
||||
|
@ -1051,4 +1055,197 @@ public class ApiService {
|
|||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
*//**
|
||||
* 电子回单推送星空
|
||||
*
|
||||
* @param dynamicObject
|
||||
* @param k3CloudApi
|
||||
* @return
|
||||
*//*
|
||||
public static String pushElectronicReceipts(DynamicObject dynamicObject, K3CloudApi k3CloudApi) throws Exception {
|
||||
PaymentRequest paymentRequest = new PaymentRequest();
|
||||
paymentRequest.setIsDeleteEntry("true");// 是否删除已存在的分录
|
||||
paymentRequest.setIsVerifyBaseDataField("false");// 是否验证所有的基础资料有效性
|
||||
paymentRequest.setIsEntryBatchFill("true");// 是否批量填充分录
|
||||
paymentRequest.setValidateFlag("true");// 是否验证数据合法性标志
|
||||
paymentRequest.setNumberSearch("true");// 是否用编码搜索基础资料
|
||||
paymentRequest.setIsAutoAdjustField("false");// 是否自动调整JSON字段顺序
|
||||
paymentRequest.setIsControlPrecision("false");// 是否控制精度,为true时对金额、单价和数量字段进行精度验证
|
||||
paymentRequest.setValidateRepeatJson("false");// 是否控制精度,为true时对金额、单价和数量字段进行精度验证
|
||||
|
||||
*//**
|
||||
* {
|
||||
* "NeedUpDateFields": [],
|
||||
* "NeedReturnFields": [],
|
||||
* "IsDeleteEntry": "true",
|
||||
* "SubSystemId": "",
|
||||
* "IsVerifyBaseDataField": "false",
|
||||
* "IsEntryBatchFill": "true",
|
||||
* "ValidateFlag": "true",
|
||||
* "NumberSearch": "true",
|
||||
* "IsAutoAdjustField": "false",
|
||||
* "InterationFlags": "",
|
||||
* "IgnoreInterationFlag": "",
|
||||
* "IsControlPrecision": "false",
|
||||
* "ValidateRepeatJson": "false",
|
||||
* "Model": {
|
||||
* "FID": 0,
|
||||
* "FDATE": "2025-04-18 00:00:00",
|
||||
* "FCURRENCYID": {
|
||||
* "FNUMBER": "PRE001"
|
||||
* },
|
||||
* "FBANKID": {
|
||||
* "FNUMBER": "001"
|
||||
* },
|
||||
* "FPAYORGID": {
|
||||
* "FNumber": "100"
|
||||
* },
|
||||
* "FACCOUNTID": {
|
||||
* "FNUMBER": "087826120100302087331"
|
||||
* },
|
||||
* "FDEBITAMOUNT": 10.0,
|
||||
* "FCREDITAMOUNT": 0.0,
|
||||
* "FAmount": 10.0,
|
||||
* "FEXPLANATION": "测试摘要",
|
||||
* "FOPPOSITEBANKNAME": "中国工商银行股份有限公司北京中电财支行",
|
||||
* "FOPPOSITEBANKACNTNO": "1602022101276101",
|
||||
* "FOPPOSITECCOUNTNAME": "中国工商银行股份有限公司北京中电财支行",
|
||||
* "FPRINTCOUNT": 0,
|
||||
* "FMATCHED": false,
|
||||
* "FReceiptNo": "123",
|
||||
* "FFlowNo": "456",
|
||||
* "FSRCBILLID": 0,
|
||||
* "FReceiptInfo": "测试附言",
|
||||
* "FRemark": "测试备注",
|
||||
* "FUSECN": "测试用途"
|
||||
* }
|
||||
* }
|
||||
*//*
|
||||
|
||||
PaymentRequest.Model model = new PaymentRequest.Model();
|
||||
|
||||
// 交易日期
|
||||
Date bizdate = dynamicObject.getDate("bizdate");
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
String formattedDate = sdf.format(bizdate);
|
||||
model.setfDate(formattedDate);// 交易日期:FDATE
|
||||
|
||||
model.setfBillNo(dynamicObject.getString("billno"));// 单据编号:FBillNo
|
||||
|
||||
|
||||
DynamicObject currency = dynamicObject.getDynamicObject("currency");
|
||||
String currencyNumber = currency.getString("number");
|
||||
*//**
|
||||
* CNY 人民币
|
||||
* HKD 港币
|
||||
* JPY 日元
|
||||
* USD 美元
|
||||
* EUR 欧元
|
||||
* GBP 英镑
|
||||
* GEL 格鲁吉亚拉里
|
||||
* NPR 尼泊尔卢比
|
||||
*//*
|
||||
PaymentRequest.Model.FNumberWrapper currency_number = new PaymentRequest.Model.FNumberWrapper();
|
||||
switch (currencyNumber) {
|
||||
case "CNY":
|
||||
currency_number.setFNumber("PRE001");
|
||||
break;
|
||||
case "HKD":
|
||||
currency_number.setFNumber("PRE002");
|
||||
break;
|
||||
case "JPY":
|
||||
currency_number.setFNumber("PRE004");
|
||||
break;
|
||||
case "USD":
|
||||
currency_number.setFNumber("PRE007");
|
||||
break;
|
||||
case "EUR":
|
||||
currency_number.setFNumber("PRE003");
|
||||
break;
|
||||
case "GBP":
|
||||
currency_number.setFNumber("PRE006");
|
||||
break;
|
||||
}
|
||||
model.setfCurrencyId(currency_number);// 币别
|
||||
|
||||
DynamicObject bank = dynamicObject.getDynamicObject("bank");
|
||||
String bank_name = bank.getString("name");
|
||||
PaymentRequest.Model.FNameWrapper bank_number = new PaymentRequest.Model.FNameWrapper();
|
||||
bank_number.setFName(bank_name);
|
||||
model.setfBankId(bank_number);// 银行:FBANKID (必填项)
|
||||
|
||||
DynamicObject company = dynamicObject.getDynamicObject("company");
|
||||
String company_number = company.getString("shkd_xkorgnumber");//星空组织编码(shkd_xkorgnumber)
|
||||
PaymentRequest.Model.FNumberWrapper payOrg_number = new PaymentRequest.Model.FNumberWrapper();
|
||||
payOrg_number.setFNumber(company_number);
|
||||
model.setfPayOrgId(payOrg_number);// 收付组织:FPAYORGID (必填项)
|
||||
|
||||
DynamicObject accountbank = dynamicObject.getDynamicObject("accountbank");
|
||||
String accountbank_bankaccountnumber = accountbank.getString("bankaccountnumber");
|
||||
PaymentRequest.Model.FNumberWrapper Account_number = new PaymentRequest.Model.FNumberWrapper();
|
||||
Account_number.setFNumber(accountbank_bankaccountnumber);
|
||||
model.setfAccountId(Account_number);// 银行账号:FACCOUNTID (必填项)
|
||||
|
||||
// model.setfSrcBillTypeId();// 业务单据类型:FSRCBILLTYPEID
|
||||
model.setfSrcBillNo(dynamicObject.getString("billno"));// 业务单据编号:FSRCBILLNO
|
||||
// model.setfBusiRefeNo();// 业务参考号:FBUSIREFENO
|
||||
model.setfDebitAmount(dynamicObject.getBigDecimal("debitamount"));// 借方(付款)金额:FDEBITAMOUNT
|
||||
model.setfCreditAmount(dynamicObject.getBigDecimal("creditamount"));// 贷方(收款)金额:FCREDITAMOUNT
|
||||
model.setfAmount(dynamicObject.getBigDecimal("amount"));// 金额:FAmount
|
||||
model.setfExplanation(dynamicObject.getString("description"));// 摘要:FEXPLANATION
|
||||
model.setfOppositeBankName(dynamicObject.getString("oppbank"));// 对方开户银行:FOPPOSITEBANKNAME
|
||||
model.setfOppositeBankAcntNo(dynamicObject.getString("oppbanknumber"));// 对方银行账号:FOPPOSITEBANKACNTNO
|
||||
model.setfOppositeCcountName(dynamicObject.getString("oppbankname"));// 对方账号名称:FOPPOSITECCOUNTNAME
|
||||
model.setfPrintCount(0);// 打印次数:FPRINTCOUNT
|
||||
// model.setfFirstPrintDate();// 首次打印时间:FFIRSTPRINTDATE
|
||||
model.setfMatched("false");// 匹配交易明细:FMATCHED
|
||||
model.setfReceiptNo(dynamicObject.getString("receiptno"));// 电子回单编号:FReceiptNo
|
||||
model.setfFlowNo(dynamicObject.getString("detailid"));// 交易流水号:FFlowNo
|
||||
// model.setfDetailNo();// 关联标记:FDetailNo
|
||||
// model.setfVerificationCode();// 验证码:FVerificationCode
|
||||
// model.setfSrcFormId();// 业务单据FormId:FSRCFormId
|
||||
// model.setfSrcBillId();// 业务单据ID:FSRCBILLID
|
||||
// model.setfKdRetFlag();// KD标志:FKDRETFLAG
|
||||
// model.setfReceiptInfo(dynamicObject.getString(""));// 附言:FReceiptInfo
|
||||
model.setfRemark(dynamicObject.getString("remarks"));// 备注:FRemark
|
||||
model.setfUseCN(dynamicObject.getString("use"));// 用途:FUSECN
|
||||
paymentRequest.setModel(model);
|
||||
Gson gson = new Gson();
|
||||
String requestJson = gson.toJson(paymentRequest);
|
||||
String result = k3CloudApi.save("WB_ReceiptBill", requestJson);
|
||||
JSONObject resultJson = JSON.parseObject(result);
|
||||
JSONObject responseStatus = resultJson.getJSONObject("Result").getJSONObject("ResponseStatus");
|
||||
JSONArray successEntitys = responseStatus.getJSONArray("SuccessEntitys");
|
||||
|
||||
if (!successEntitys.isEmpty()) {
|
||||
JSONObject firstEntity = successEntitys.getJSONObject(0);
|
||||
String id = firstEntity.getString("Id");
|
||||
|
||||
DynamicObject dynamicObjectObj = BusinessDataServiceHelper.loadSingle(dynamicObject.getPkValue(), dynamicObject.getDynamicObjectType().getName());
|
||||
IFormView viewByDynamicObj = createViewByDynamicObj(dynamicObjectObj);
|
||||
List<String> errMsgList = new ArrayList<>();
|
||||
DynamicObjectCollection receipts = QueryServiceHelper.query("bei_elecreceipt", "id,bank," +
|
||||
"fileflag,filepath,biztype,bankcheckflag,fileserverurl,tcpurl,uploadfilename,username,password," +
|
||||
"bank.bank_cate bankcate", new QFilter[]{new QFilter("id", QCP.equals, dynamicObject.getPkValue())});
|
||||
String pdfUrl = getPdfUrl(viewByDynamicObj.getPageId(), receipts, errMsgList);
|
||||
Path path = Paths.get(dynamicObject.getString("filepath"));
|
||||
String upfileName = path.getFileName().toString();
|
||||
logger.info("电子回单查询 → 电子回单附件推送接口 → 获取pdf地址:{}", pdfUrl);
|
||||
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("FileName", upfileName);// 文件名
|
||||
jsonObject.put("FormId", "WB_ReceiptBill");// 表单id
|
||||
jsonObject.put("IsLast", true);// 是否最后一次上传
|
||||
jsonObject.put("InterId", id);// 单据内码
|
||||
jsonObject.put("BillNO", dynamicObject.getString("billno"));// 单据编码
|
||||
jsonObject.put("AliasFileName", upfileName);// 附件别名
|
||||
jsonObject.put("SendByte", attachmentBase64(pdfUrl));// 文件字节数组转base64后的字符串
|
||||
|
||||
String uploadAttachmentResult = k3CloudApi.attachmentUpload(jsonObject.toString());
|
||||
return "单据上传结果:" + result + "\n附件上传结果:" + uploadAttachmentResult;
|
||||
} else {
|
||||
return "单据推送失败";
|
||||
}
|
||||
}*/
|
||||
}
|
|
@ -175,35 +175,18 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
|
|||
objectNumber = objects[0].getString("number");
|
||||
}
|
||||
} else if ("bos_user".equals(payeetype)) {
|
||||
Map<String, Object> username = new HashMap<>();
|
||||
username.put("username", map.get("payeenumber").toString());
|
||||
map.put("shkd_user", username);
|
||||
|
||||
if (map.get("shkd_businessname").toString().equals("XK")) {
|
||||
Map<String, Object> user_number = new HashMap<>();
|
||||
user_number.put("number", map.get("payeenumber").toString());
|
||||
map.put("shkd_user", user_number);
|
||||
|
||||
DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,name,number,username", new QFilter("number", QCP.equals, map.get("payeenumber").toString()).toArray());
|
||||
if (objects.length > 0) {
|
||||
// 收款人编码
|
||||
map.put("payeenumber", objects[0].getString("number"));
|
||||
// 收款人ID
|
||||
map.put(fieldName1, objects[0].getPkValue());
|
||||
//收款人编码
|
||||
objectNumber = objects[0].getString("number");
|
||||
}
|
||||
} else {
|
||||
Map<String, Object> username = new HashMap<>();
|
||||
username.put("username", map.get("payeenumber").toString());
|
||||
map.put("shkd_user", username);
|
||||
|
||||
DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,name,number,username", new QFilter("username", QCP.equals, map.get("payeenumber").toString()).toArray());
|
||||
if (objects.length > 0) {
|
||||
// 收款人编码
|
||||
map.put("payeenumber", objects[0].getString("number"));
|
||||
// 收款人ID
|
||||
map.put(fieldName1, objects[0].getPkValue());
|
||||
//收款人编码
|
||||
objectNumber = objects[0].getString("number");
|
||||
}
|
||||
DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,name,number,username", new QFilter("username", QCP.equals, map.get("payeenumber").toString()).toArray());
|
||||
if (objects.length > 0) {
|
||||
// 收款人编码
|
||||
map.put("payeenumber", objects[0].getString("number"));
|
||||
// 收款人ID
|
||||
map.put(fieldName1, objects[0].getPkValue());
|
||||
//收款人编码
|
||||
objectNumber = objects[0].getString("number");
|
||||
}
|
||||
} else if ("bos_org".equals(payeetype)) {
|
||||
Map<String, Object> number = new HashMap<>();
|
||||
|
@ -299,32 +282,17 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
|
|||
objectNumber = objects[0].getString("number");
|
||||
}
|
||||
} else if ("bos_user".equals(payertype)) {
|
||||
if (map.get("shkd_businessname").toString().equals("XK")) {
|
||||
Map<String, Object> user_number = new HashMap<>();
|
||||
user_number.put("number", map.get("payernumber").toString());
|
||||
map.put("shkd_user", user_number);
|
||||
DynamicObject[] objects = BusinessDataServiceHelper.load(payertype.toString(), "id,name,number,username", new QFilter("number", QCP.equals, map.get("payernumber").toString()).toArray());
|
||||
if (objects.length > 0) {
|
||||
// 付款人编码
|
||||
map.put("payernumber", objects[0].getString("number"));
|
||||
// 付款人ID
|
||||
map.put(fieldName1, objects[0].getPkValue());
|
||||
// 付款人编码
|
||||
objectNumber = objects[0].getString("number");
|
||||
}
|
||||
} else {
|
||||
Map<String, Object> username = new HashMap<>();
|
||||
username.put("username", map.get("payernumber").toString());
|
||||
map.put("shkd_user", username);
|
||||
DynamicObject[] objects = BusinessDataServiceHelper.load(payertype.toString(), "id,name,number,username", new QFilter("username", QCP.equals, map.get("payernumber").toString()).toArray());
|
||||
if (objects.length > 0) {
|
||||
// 付款人编码
|
||||
map.put("payernumber", objects[0].getString("number"));
|
||||
// 付款人ID
|
||||
map.put(fieldName1, objects[0].getPkValue());
|
||||
// 付款人编码
|
||||
objectNumber = objects[0].getString("number");
|
||||
}
|
||||
Map<String, Object> username = new HashMap<>();
|
||||
username.put("username", map.get("payernumber").toString());
|
||||
map.put("shkd_user", username);
|
||||
DynamicObject[] objects = BusinessDataServiceHelper.load(payertype.toString(), "id,name,number,username", new QFilter("username", QCP.equals, map.get("payernumber").toString()).toArray());
|
||||
if (objects.length > 0) {
|
||||
// 付款人编码
|
||||
map.put("payernumber", objects[0].getString("number"));
|
||||
// 付款人ID
|
||||
map.put(fieldName1, objects[0].getPkValue());
|
||||
// 付款人编码
|
||||
objectNumber = objects[0].getString("number");
|
||||
}
|
||||
} else if ("bos_org".equals(payertype)) {
|
||||
Map<String, Object> number = new HashMap<>();
|
||||
|
|
|
@ -1,20 +1,66 @@
|
|||
package shkd.sys.sys.plugin.form;
|
||||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.bill.BillShowParameter;
|
||||
import kd.bos.cache.CacheFactory;
|
||||
import kd.bos.cache.TempFileCache;
|
||||
import kd.bos.context.RequestContext;
|
||||
import kd.bos.dataentity.OperateOption;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.entity.LocaleString;
|
||||
import kd.bos.dataentity.resource.ResManager;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.entity.MainEntityType;
|
||||
import kd.bos.entity.operate.result.OperationResult;
|
||||
import kd.bos.exception.KDBizException;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.form.control.Toolbar;
|
||||
import kd.bos.form.control.events.ItemClickEvent;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
import kd.bos.metadata.dao.MetadataDao;
|
||||
import kd.bos.mvc.FormConfigFactory;
|
||||
import kd.bos.mvc.SessionManager;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.print.core.service.PrtAttach;
|
||||
import kd.bos.print.matchtpl.MatcherTpl;
|
||||
import kd.bos.print.matchtpl.ViewType;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.MetadataServiceHelper;
|
||||
import kd.bos.servicehelper.PrintServiceHelper;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||||
import kd.bos.servicehelper.print.NotePrintService;
|
||||
import kd.bos.util.ExceptionUtils;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
import kd.tmc.bei.business.ocr.impl.ScanServiceImpl;
|
||||
import kd.tmc.bei.business.ocr.invoke.ScanSystemFactory;
|
||||
import kd.tmc.bei.common.helper.BeiHelper;
|
||||
import kd.tmc.bei.common.helper.ReceiptPrintHelper;
|
||||
import kd.tmc.bei.common.resource.BeiBizResource;
|
||||
import kd.tmc.fbp.common.ofd.OfdConvertUtil;
|
||||
import kd.tmc.fbp.common.util.EmptyUtil;
|
||||
//import shkd.sys.sys.mservice.PlanningService;
|
||||
|
||||
import java.util.EventObject;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static kd.bos.servicehelper.workflow.WorkflowServiceHelper.abandonByBusienssKey;
|
||||
import static kd.bos.servicehelper.workflow.WorkflowServiceHelper.existProcDefByEntityNumber;
|
||||
|
||||
/**
|
||||
* 单据界面插件
|
||||
*/
|
||||
public class ApiTestBillPlugin extends AbstractBillPlugIn implements Plugin {
|
||||
private static final Log logger = LogFactory.getLog(ApiTestBillPlugin.class);
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
// super.registerListener(e);
|
||||
|
@ -28,6 +74,7 @@ public class ApiTestBillPlugin extends AbstractBillPlugIn implements Plugin {
|
|||
// Button save = this.getView().getControl("qwz5_baritemap");
|
||||
// save.addClickListener(this); // 添加出菜单栏点击事件监听
|
||||
}
|
||||
|
||||
@Override
|
||||
public void itemClick(ItemClickEvent evt) {
|
||||
super.itemClick(evt);
|
||||
|
@ -40,12 +87,51 @@ public class ApiTestBillPlugin extends AbstractBillPlugIn implements Plugin {
|
|||
// this.getView().showTipNotification(token == null ? "获取token为空" :token);
|
||||
}
|
||||
|
||||
if ("shkd_process".equals(key)) {
|
||||
logger.info("进入shkd_process触发按钮");
|
||||
Boolean number = existProcDefByEntityNumber(this.getModel().getDataEntity(true).getString("billno"));
|
||||
if (number) {
|
||||
this.getView().showTipNotification("流程存在");
|
||||
} else {
|
||||
this.getView().showTipNotification("流程不存在");
|
||||
}
|
||||
}
|
||||
|
||||
if ("shkd_interrupt".equals(key)) {
|
||||
logger.info("shkd_interrupt");
|
||||
abandonByBusienssKey(this.getModel().getDataEntity(true).getPkValue().toString());
|
||||
OperationResult operation;
|
||||
this.getView().showTipNotification("流程中断");
|
||||
if ("B".equals(this.getModel().getDataEntity(true).getString("billstatus"))) {
|
||||
this.getView().invokeOperation("unsubmit");
|
||||
}
|
||||
|
||||
if ("B".equals(this.getModel().getDataEntity(true).getString("billstatus"))) {
|
||||
this.getView().invokeOperation("unaudit");
|
||||
}
|
||||
}
|
||||
|
||||
if ("shkd_annex".equals(key)) {
|
||||
DynamicObject dynamic = this.getModel().getDataEntity(true);
|
||||
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(dynamic.getPkValue(), dynamic.getDynamicObjectType().getName());
|
||||
IFormView viewByDynamicObj = createViewByDynamicObj(dynamicObject);
|
||||
List<String> errMsgList = new ArrayList<>();
|
||||
DynamicObjectCollection receipts = QueryServiceHelper.query("bei_elecreceipt", "id,bank," +
|
||||
"fileflag,filepath,biztype,bankcheckflag,fileserverurl,tcpurl,uploadfilename,username,password," +
|
||||
"bank.bank_cate bankcate", new QFilter[]{new QFilter("id", QCP.equals, dynamic.getPkValue())});
|
||||
String pdfUrl = getPdfUrl(viewByDynamicObj.getPageId(), receipts, errMsgList);
|
||||
Path path = Paths.get(dynamic.getString("filepath"));
|
||||
String upfileName = path.getFileName().toString();
|
||||
String dataUrl = convertUrlToBase64DataUrl(pdfUrl);
|
||||
this.getView().showTipNotification("dataUrl:" + dataUrl + "\n文件名:" + upfileName);
|
||||
}
|
||||
|
||||
if ("shkd_api".equals(key)) {
|
||||
// JSONObject jsonObject = BIPService.paymentSlipsJson();
|
||||
// this.getView().showTipNotification(jsonObject.toJSONString());
|
||||
}
|
||||
|
||||
if ("shkd_funds".equals(key)) {
|
||||
if ("shkd_dian".equals(key)) {
|
||||
// JSONObject jsonObject = BIPService.paymentSlipsJson();
|
||||
// this.getView().showTipNotification(jsonObject.toJSONString());
|
||||
// String result = PlanningService.writeData();
|
||||
|
@ -53,4 +139,226 @@ public class ApiTestBillPlugin extends AbstractBillPlugIn implements Plugin {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 按照动态对象来创建页面视图,可在后端模拟操作并且修改值触发对应插件
|
||||
*
|
||||
* @return IFormView
|
||||
*/
|
||||
public static IFormView createViewByDynamicObj(DynamicObject dynamicObj) {
|
||||
MainEntityType type = MetadataServiceHelper.getDataEntityType(dynamicObj.getDataEntityType().getName());
|
||||
String appId = type.getAppId();
|
||||
IFormView view = createView(dynamicObj.getDataEntityType().getName(), appId, dynamicObj.getPkValue());
|
||||
if (view != null) {
|
||||
view.getModel().createNewData(dynamicObj);
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建视图
|
||||
*
|
||||
* @param formId:表单标识
|
||||
* @param appId:应用id
|
||||
* @return IFormView
|
||||
*/
|
||||
public static IFormView createView(String formId, String appId, Object pkId) {
|
||||
BillShowParameter para = new BillShowParameter();
|
||||
para.setFormId(formId);
|
||||
para.setAppId(appId);
|
||||
para.setPkId(pkId);
|
||||
// 创建单据配置
|
||||
FormConfigFactory.createConfigInCurrentAppService(para);
|
||||
// 获取单据页面视图
|
||||
SessionManager sm = SessionManager.getCurrent();
|
||||
return sm.getView(para.getPageId());
|
||||
}
|
||||
|
||||
private static String getPdfUrl(String pageId, DynamicObjectCollection receipts, List<String> errMsgList) {
|
||||
List<String> listPdf = new ArrayList<>(10);
|
||||
List<byte[]> resList = new ArrayList<>(10);
|
||||
String getEreceipturlError = (new BeiBizResource()).getGetEreceipturlError();
|
||||
String templateError = (new BeiBizResource()).getTemplateError();
|
||||
String getTemplateError = (new BeiBizResource()).getGetTemplateError();
|
||||
logger.info("ViewReceiptService.getPdfUrl receipts.size=" + receipts.size());
|
||||
if (receipts.size() > 1000) {
|
||||
errMsgList.add(ResManager.loadKDString("请求打印电子回单数量超过1000条,请分批处理。", "ViewReceiptService_6", "tmc-bei-business"));
|
||||
return null;
|
||||
} else {
|
||||
Set<Long> pkIds = receipts.stream().map((receiptx) -> receiptx.getLong("id")).collect(Collectors.toSet());
|
||||
Map<Object, Set<MatcherTpl>> receiptTemplate = ReceiptPrintHelper.getMatchReceiptTemplate("bei", "bei_elecreceipt", pkIds, ViewType.LIST, pageId);
|
||||
receiptTemplate.remove("");
|
||||
long timeMillis = System.currentTimeMillis();
|
||||
|
||||
for (DynamicObject receipt : receipts) {
|
||||
Long receiptID = receipt.getLong("id");
|
||||
|
||||
try {
|
||||
logger.info("ViewReceiptService templateForm.size=" + receiptTemplate.size());
|
||||
if (receiptTemplate.isEmpty()) {
|
||||
errMsgList.add(templateError);
|
||||
} else {
|
||||
|
||||
for (MatcherTpl o : receiptTemplate.get(receiptID)) {
|
||||
String templateId = o.getTplId();
|
||||
logger.info("ViewReceiptService templateForm.keySet=" + templateId);
|
||||
String templateFormId = "";
|
||||
if (EmptyUtil.isNoEmpty(templateId)) {
|
||||
templateFormId = MetadataDao.getNumberById(templateId);
|
||||
logger.info("ViewReceiptService templateFormId=" + templateFormId);
|
||||
}
|
||||
|
||||
String url = PrintServiceHelper.createPdfUrl(pageId, "bei_elecreceipt", templateFormId, new Long[]{receiptID});
|
||||
logger.info("ViewReceiptService url4old=" + url);
|
||||
if (StringUtils.isNotEmpty(url)) {
|
||||
if (receipt.getBoolean("fileflag")) {
|
||||
logger.info("设置username-------" + receipt.getString("username"));
|
||||
System.setProperty("ereceipt.authuser", receipt.getString("username"));
|
||||
String uploadFileName = ReceiptPrintHelper.getRealUploadUrl(receipt);
|
||||
if (StringUtils.isBlank(uploadFileName)) {
|
||||
errMsgList.add(getEreceipturlError);
|
||||
}
|
||||
|
||||
String fileServerUrl = receipt.getString("fileserverurl");
|
||||
|
||||
try {
|
||||
if (!EmptyUtil.isEmpty(fileServerUrl)) {
|
||||
ScanSystemFactory.getScanService();
|
||||
Long userId = RequestContext.get().getCurrUserId();
|
||||
DynamicObjectCollection userObj = QueryServiceHelper.query("bos_user", "id,phone", (new QFilter("id", "=", userId)).toArray());
|
||||
DynamicObjectCollection configObj = QueryServiceHelper.query("bas_imageconfig", "imageurl,clientid,clientsecret", (new QFilter("enable", "=", "A")).toArray());
|
||||
InputStream image = ScanServiceImpl.getImage(configObj.get(0).getString("clientid"), configObj.get(0).getString("clientsecret"), configObj.get(0).getString("imageurl"), userObj.get(0).getString("phone"), fileServerUrl);
|
||||
ReceiptPrintHelper.imageConvertPdf("", resList, image);
|
||||
} else if (!uploadFileName.endsWith("pdf") && !uploadFileName.endsWith("PDF")) {
|
||||
if (!uploadFileName.endsWith("ofd") && !uploadFileName.endsWith("OFD")) {
|
||||
logger.info("fileReceipt url:" + uploadFileName);
|
||||
ReceiptPrintHelper.imageConvertPdf(uploadFileName, resList, null);
|
||||
} else {
|
||||
logger.info("ofdReceipt url:" + uploadFileName);
|
||||
byte[] bytes = OfdConvertUtil.convertToPdfNew(BeiHelper.getPdfPutStream(uploadFileName, "old"));
|
||||
resList.add(bytes);
|
||||
}
|
||||
} else {
|
||||
logger.info("pdfReceipt url:" + uploadFileName);
|
||||
BeiHelper.getPdfPutStream(uploadFileName, resList);
|
||||
}
|
||||
} catch (Exception var28) {
|
||||
logger.info(ExceptionUtils.getExceptionStackTraceMessage(var28));
|
||||
errMsgList.add(getEreceipturlError);
|
||||
}
|
||||
} else {
|
||||
listPdf.add(url);
|
||||
}
|
||||
} else {
|
||||
PrtAttach attach = ReceiptPrintHelper.doNewPrint(pageId, "bei_elecreceipt", templateId, receipt.get("id"));
|
||||
logger.info("ViewReceiptService attach=" + attach);
|
||||
if (Objects.nonNull(attach)) {
|
||||
List<PrtAttach.AttachDetail> attachDetail = attach.getAttachDetail();
|
||||
|
||||
for (PrtAttach.AttachDetail detail : attachDetail) {
|
||||
byte[] pdfPutStream = BeiHelper.getPdfPutStream(detail.getFilePath(), "new");
|
||||
resList.add(pdfPutStream);
|
||||
}
|
||||
logger.info("ViewReceiptService resList.size=" + resList.size());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
logger.info("ViewReceiptService listPdf=" + listPdf);
|
||||
logger.info("ViewReceiptService resList.size=" + resList.size());
|
||||
}
|
||||
} catch (KDBizException var29) {
|
||||
errMsgList.add(var29.getMessage());
|
||||
} catch (Exception var30) {
|
||||
logger.info(ExceptionUtils.getExceptionStackTraceMessage(var30));
|
||||
errMsgList.add(getTemplateError);
|
||||
}
|
||||
}
|
||||
|
||||
readTemplate(listPdf, resList);
|
||||
String pdfUrl = null;
|
||||
|
||||
try {
|
||||
logger.info("resList:{}", resList);
|
||||
pdfUrl = finlyOpenForm(resList);
|
||||
} catch (Exception var27) {
|
||||
logger.error("mergeMultiPdf Fail:", ExceptionUtils.getExceptionStackTraceMessage(var27));
|
||||
errMsgList.add((new BeiBizResource()).dealPdfError());
|
||||
}
|
||||
|
||||
logger.info("printTimeCost: " + (System.currentTimeMillis() - timeMillis) + " generatePdfUrl: " + pdfUrl);
|
||||
return pdfUrl;
|
||||
}
|
||||
}
|
||||
|
||||
private static void readTemplate(List<String> listPdf, List<byte[]> resList) {
|
||||
if (listPdf != null && !listPdf.isEmpty()) {
|
||||
TempFileCache tempFileCache = CacheFactory.getCommonCacheFactory().getTempFileCache();
|
||||
|
||||
for (String string : listPdf) {
|
||||
InputStream ins = tempFileCache.getInputStream(string);
|
||||
|
||||
try {
|
||||
byte[] bytes = new byte[ins.available()];
|
||||
int bytesRead = 0;
|
||||
int bytesToRead = ins.available();
|
||||
|
||||
while (bytesRead < bytesToRead) {
|
||||
int result = ins.read(bytes, bytesRead, bytesToRead - bytesRead);
|
||||
bytesRead += result;
|
||||
if (result == -1) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
resList.add(bytes);
|
||||
ins.close();
|
||||
} catch (IOException var11) {
|
||||
logger.info("IO流失败" + ExceptionUtils.getExceptionStackTraceMessage(var11));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private static String finlyOpenForm(List<byte[]> resList) {
|
||||
if (!resList.isEmpty()) {
|
||||
byte[] mergeMultiPdf;
|
||||
if (resList.size() > 1) {
|
||||
try {
|
||||
mergeMultiPdf = ReceiptPrintHelper.mergeMultiPdf(resList);
|
||||
} catch (Exception var5) {
|
||||
throw new KDBizException(ExceptionUtils.getExceptionStackTraceMessage(var5));
|
||||
}
|
||||
} else {
|
||||
mergeMultiPdf = resList.get(0);
|
||||
}
|
||||
|
||||
NotePrintService notePrintService = new NotePrintService();
|
||||
LocaleString localeString = new LocaleString("receipt");
|
||||
return notePrintService.createPdfUrl(localeString, mergeMultiPdf);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private String convertUrlToBase64DataUrl(String url) {
|
||||
try (InputStream inputStream = CacheFactory.getCommonCacheFactory().getTempFileCache().getInputStream(url);
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
|
||||
|
||||
// 读取文件内容并编码为Base64
|
||||
byte[] buffer = new byte[4096];
|
||||
int bytesRead;
|
||||
while ((bytesRead = inputStream.read(buffer)) != -1) {
|
||||
outputStream.write(buffer, 0, bytesRead);
|
||||
}
|
||||
byte[] fileBytes = outputStream.toByteArray();
|
||||
String base64 = Base64.getEncoder().encodeToString(fileBytes);
|
||||
|
||||
// 构造Data URL,指定PDF的MIME类型
|
||||
return "data:application/pdf;base64," + base64;
|
||||
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("Error converting URL to Base64 Data URL", e);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -11,10 +11,12 @@ import kd.bos.dataentity.entity.LocaleString;
|
|||
import kd.bos.dataentity.resource.ResManager;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.entity.MainEntityType;
|
||||
import kd.bos.entity.operate.result.OperationResult;
|
||||
import kd.bos.exception.KDBizException;
|
||||
import kd.bos.form.IFormView;
|
||||
import kd.bos.form.control.Toolbar;
|
||||
import kd.bos.form.control.events.ItemClickEvent;
|
||||
import kd.bos.form.events.AfterDoOperationEventArgs;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
import kd.bos.metadata.dao.MetadataDao;
|
||||
|
@ -25,6 +27,7 @@ import kd.bos.orm.query.QFilter;
|
|||
import kd.bos.print.core.service.PrtAttach;
|
||||
import kd.bos.print.matchtpl.MatcherTpl;
|
||||
import kd.bos.print.matchtpl.ViewType;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.MetadataServiceHelper;
|
||||
import kd.bos.servicehelper.PrintServiceHelper;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
|
@ -48,6 +51,8 @@ import java.util.*;
|
|||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static kd.bos.servicehelper.workflow.WorkflowServiceHelper.abandonByBusienssKey;
|
||||
|
||||
/**
|
||||
* 单据界面插件
|
||||
*/
|
||||
|
@ -66,24 +71,67 @@ public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements P
|
|||
if ("shkd_hitback".equals(itemKey)) {
|
||||
DynamicObject dataEntity = this.getModel().getDataEntity(true);
|
||||
String bankpaystatus = dataEntity.getString("bankpaystatus");
|
||||
String billstatus = dataEntity.getString("billstatus");
|
||||
|
||||
if (!"共享系统".equals(dataEntity.getString("shkd_businessname"))) {
|
||||
this.getView().showTipNotification("只允许打回BIP推送单据");
|
||||
this.getView().showTipNotification("打回失败,只允许打回BIP推送的单据");
|
||||
return;
|
||||
}
|
||||
|
||||
if ("TF、NC、OF".contains(bankpaystatus)) {
|
||||
List<DynamicObject> dynamicObjects = new ArrayList<>();
|
||||
String result = ApiService.paymentSlipsJson(dataEntity, "BIPNO", dynamicObjects, null);
|
||||
logger.info("result信息:{}", result);
|
||||
if (result.contains("成功")) {
|
||||
SaveServiceHelper.save(dynamicObjects.toArray(new DynamicObject[0]));
|
||||
this.getView().showSuccessNotification("打回成功");
|
||||
} else {
|
||||
this.getView().showTipNotification("打回失败");
|
||||
if (!"B".equals(billstatus) && !"C".equals(billstatus)) {
|
||||
this.getView().showTipNotification("打回失败,只允许打回单据状态为已提交或者已审核的单据");
|
||||
return;
|
||||
}
|
||||
|
||||
abandonByBusienssKey(dataEntity.getPkValue().toString());
|
||||
List<DynamicObject> dynamicObjects = new ArrayList<>();
|
||||
if ("B".equals(dataEntity.getString("billstatus"))) {
|
||||
OperationResult result = this.getView().invokeOperation("unsubmit");
|
||||
if (result.isSuccess()) {
|
||||
DynamicObject[] objects = BusinessDataServiceHelper.load("cas_paybill",
|
||||
"id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,settletype,acttradedate," +
|
||||
"payeebanknum,payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype," +
|
||||
"org,bizdate,description,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname," +
|
||||
"billstatus,bankpaystatus", new QFilter("billno", QCP.equals, dataEntity.getString("billno")).toArray());
|
||||
String pushResult = ApiService.paymentSlipsJson(objects[0], "BIPRE", dynamicObjects, null);
|
||||
logger.info("result信息:{}", pushResult);
|
||||
if (pushResult.contains("成功")) {
|
||||
SaveServiceHelper.save(dynamicObjects.toArray(new DynamicObject[0]));
|
||||
this.getView().showSuccessNotification("打回成功");
|
||||
} else {
|
||||
this.getView().showTipNotification("打回失败,调用BIP接口失败");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.getView().showTipNotification("打回失败,请确认银行支付状态");
|
||||
}
|
||||
|
||||
if ("C".equals(dataEntity.getString("billstatus"))) {
|
||||
OperationResult result = this.getView().invokeOperation("unaudit");
|
||||
if (result.isSuccess()) {
|
||||
DynamicObject[] objects = BusinessDataServiceHelper.load("cas_paybill",
|
||||
"id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,settletype,acttradedate," +
|
||||
"payeebanknum,payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype," +
|
||||
"org,bizdate,description,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname," +
|
||||
"billstatus,bankpaystatus", new QFilter("billno", QCP.equals, dataEntity.getString("billno")).toArray());
|
||||
String pushResult = ApiService.paymentSlipsJson(objects[0], "BIPRE", dynamicObjects, null);
|
||||
logger.info("result信息:{}", pushResult);
|
||||
if (pushResult.contains("成功")) {
|
||||
SaveServiceHelper.save(dynamicObjects.toArray(new DynamicObject[0]));
|
||||
this.getView().showSuccessNotification("打回成功");
|
||||
} else {
|
||||
this.getView().showTipNotification("打回失败,调用BIP接口失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
|
||||
if (("unsubmit".equals(afterDoOperationEventArgs.getOperateKey()) || "unaudit".equals(afterDoOperationEventArgs.getOperateKey())) && afterDoOperationEventArgs.getOperationResult().isSuccess()) {
|
||||
DynamicObject dataEntity = this.getModel().getDataEntity(true);
|
||||
Object businessname = dataEntity.get("shkd_businessname");
|
||||
if (businessname != null && "共享系统".equals(businessname.toString())) {
|
||||
afterDoOperationEventArgs.getOperationResult().setShowMessage(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,9 +2,9 @@ package shkd.sys.sys.plugin.operation;
|
|||
|
||||
import kd.bos.dataentity.OperateOption;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.entity.operate.result.IOperateInfo;
|
||||
import kd.bos.entity.operate.result.OperationResult;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
||||
import kd.bos.entity.plugin.args.BeforeOperationArgs;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
|
@ -16,13 +16,14 @@ import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|||
import kd.sdk.plugin.Plugin;
|
||||
import scala.collection.mutable.StringBuilder;
|
||||
import shkd.sys.sys.mservice.ApiService;
|
||||
import kd.bos.entity.operate.result.IOperateInfo;
|
||||
import shkd.sys.sys.plugin.form.ApiMappingBillPlugin;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static kd.bos.servicehelper.workflow.WorkflowServiceHelper.abandonByBusienssKey;
|
||||
import static kd.bos.servicehelper.workflow.WorkflowServiceHelper.existProcDefByEntityNumber;
|
||||
|
||||
/**
|
||||
* 单据操作插件
|
||||
*/
|
||||
|
@ -49,49 +50,50 @@ public class HitBackOperationServicePlugin extends AbstractOperationServicePlugI
|
|||
"org,bizdate,description,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname," +
|
||||
"billstatus,bankpaystatus"
|
||||
, new QFilter("id", QCP.in, pkValue)
|
||||
.and("billstatus", QCP.in, "A、C")
|
||||
.and("billstatus", QCP.in, "B、C")
|
||||
.and("shkd_businessname", QCP.equals, "共享系统").toArray());
|
||||
if (objects == null || objects.length == 0) {
|
||||
args.setCancel(true);
|
||||
args.setCancelMessage("打回失败\n" +
|
||||
"1、选择打回单据必须为BIP推送单据\n" +
|
||||
"2、只能打回提交、已审核的单据\n" +
|
||||
"(若有其他问题,可找业务老师咨询)"
|
||||
);
|
||||
args.setCancel(true);
|
||||
} else {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
List<DynamicObject> dynamicObjects = new ArrayList<>();
|
||||
for (DynamicObject dynamicObject : objects) {
|
||||
if (!"未结算".equals(dynamicObject.getString("shkd_pushstatus"))) {
|
||||
args.setCancel(true);
|
||||
args.setCancelMessage("打回失败,该单据结算结果已被推送");
|
||||
return;
|
||||
stringBuilder.append("单据编号:" + dynamicObject.get("billno") + " 打回失败,该单据结算结果已被推送\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
OperationResult sumbit = OperationServiceHelper.executeOperate("unsubmit", "cas_paybill", dynamicObjects.toArray(new DynamicObject[0]), OperateOption.create());
|
||||
List<IOperateInfo> allErrorOrValidateInfo = sumbit.getAllErrorOrValidateInfo();
|
||||
OperationResult operation;
|
||||
if ("B".equals(dynamicObject.getString("billstatus"))) {
|
||||
operation = OperationServiceHelper.executeOperate("unsubmit", "cas_paybill", new DynamicObject[]{dynamicObject}, OperateOption.create());
|
||||
}else{
|
||||
operation = OperationServiceHelper.executeOperate("unaudit", "cas_paybill", new DynamicObject[]{dynamicObject}, OperateOption.create());
|
||||
}
|
||||
List<IOperateInfo> allErrorOrValidateInfo = operation.getAllErrorOrValidateInfo();
|
||||
if (allErrorOrValidateInfo.isEmpty()) {
|
||||
List<DynamicObject> dynamicObjects = new ArrayList<>();
|
||||
String result = ApiService.paymentSlipsJson(dynamicObject, "BIPRE", dynamicObjects, null);
|
||||
logger.info("result信息:{}", result);
|
||||
if (result.contains("成功")) {
|
||||
SaveServiceHelper.save(dynamicObjects.toArray(new DynamicObject[0]));
|
||||
|
||||
} else {
|
||||
args.setCancel(true);
|
||||
args.setCancelMessage(result);
|
||||
return;
|
||||
stringBuilder.append("单据编号:" + dynamicObject.get("billno") + " 打回失败,调用BIP接口失败\n");
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
allErrorOrValidateInfo.forEach(operateInfo -> {
|
||||
DynamicObject object = BusinessDataServiceHelper.loadSingle(operateInfo.getPkValue(), "cas_paybill");
|
||||
stringBuilder.append("单据编号:" + object.get("billno") + "," + operateInfo.getMessage() + "\n");
|
||||
});
|
||||
args.setCancel(true);
|
||||
args.setCancelMessage(stringBuilder.toString());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!stringBuilder.isEmpty()) {
|
||||
args.setCancelMessage(stringBuilder.toString());
|
||||
args.setCancel(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -75,8 +75,12 @@ public class PushTaskPlugin extends AbstractTask implements Plugin {
|
|||
//TF 交易失败
|
||||
//NC 交易未确认
|
||||
//OF 银企异常
|
||||
DynamicObject[] objects4 = BusinessDataServiceHelper.load("cas_paybill", "id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,settletype,payeebanknum,payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype,org,bizdate,description,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname,billstatus,bankpaystatus"
|
||||
, new QFilter("bizdate", QCP.large_equals, calculateTheDate(10))
|
||||
DynamicObject[] objects4 = BusinessDataServiceHelper.load("cas_paybill",
|
||||
"id,billno,actpayamt,entry,entry.e_expenseitem,entry.e_remark,settletype,acttradedate," +
|
||||
"payeebanknum,payeetype,payeenumber,payeracctbank,payeebank,payeebankname,paymenttype," +
|
||||
"org,bizdate,description,shkd_pushstatus,shkd_businessnumber,shkd_businessid,shkd_businessname," +
|
||||
"billstatus,bankpaystatus"
|
||||
, new QFilter("acttradedate", QCP.large_equals, calculateTheDate(10))
|
||||
.and("bankpaystatus", QCP.equals, "TS")
|
||||
.and("shkd_pushstatus", QCP.equals, "未结算")
|
||||
.and(new QFilter("shkd_businessname", QCP.equals, "共享系统")).toArray());
|
||||
|
|
Loading…
Reference in New Issue