收付款推SAP、费控报错反写前端
This commit is contained in:
parent
37788ee807
commit
d11418d867
|
|
@ -8,17 +8,25 @@ import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
import kd.bos.entity.operate.result.OperateErrorInfo;
|
import kd.bos.entity.operate.result.OperateErrorInfo;
|
||||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||||
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
||||||
|
import kd.bos.fileservice.FileServiceFactory;
|
||||||
|
import kd.bos.logging.Log;
|
||||||
|
import kd.bos.logging.LogFactory;
|
||||||
import kd.bos.orm.query.QCP;
|
import kd.bos.orm.query.QCP;
|
||||||
import kd.bos.orm.query.QFilter;
|
import kd.bos.orm.query.QFilter;
|
||||||
|
import kd.bos.servicehelper.AttachmentDto;
|
||||||
import kd.bos.servicehelper.AttachmentServiceHelper;
|
import kd.bos.servicehelper.AttachmentServiceHelper;
|
||||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||||
import kd.bos.util.StringUtils;
|
import kd.bos.util.StringUtils;
|
||||||
import kd.sdk.plugin.Plugin;
|
import kd.sdk.plugin.Plugin;
|
||||||
|
import shjh.jhzj7.fi.fi.plugin.task.RecPushSapTask;
|
||||||
|
import shjh.jhzj7.fi.fi.utils.SapUtils;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.Base64;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -32,6 +40,9 @@ import static shjh.jhzj7.fi.fi.utils.SapUtils.withholding_billing;
|
||||||
|
|
||||||
public class PaybillOperation extends AbstractOperationServicePlugIn implements Plugin {
|
public class PaybillOperation extends AbstractOperationServicePlugIn implements Plugin {
|
||||||
|
|
||||||
|
|
||||||
|
private final static Log logger = LogFactory.getLog(PaybillOperation.class);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
||||||
super.afterExecuteOperationTransaction(e);
|
super.afterExecuteOperationTransaction(e);
|
||||||
|
|
@ -86,7 +97,10 @@ public class PaybillOperation extends AbstractOperationServicePlugIn implements
|
||||||
String code = (String) jsonObject.get("code");
|
String code = (String) jsonObject.get("code");
|
||||||
if (!"0".equals(code)) {
|
if (!"0".equals(code)) {
|
||||||
addErrorInfo(bill, ""+jsonObject.get("msg"));
|
addErrorInfo(bill, ""+jsonObject.get("msg"));
|
||||||
|
//更新推送报错
|
||||||
|
SapUtils.updateBillErrorMsg(bill,jsonObject,"shjh_errormsg");
|
||||||
} else {
|
} else {
|
||||||
|
bill.set("shjh_errormsg","");
|
||||||
bill.set("shjh_ispushfk", true);
|
bill.set("shjh_ispushfk", true);
|
||||||
SaveServiceHelper.save(new DynamicObject[]{bill});
|
SaveServiceHelper.save(new DynamicObject[]{bill});
|
||||||
this.operationResult.addSuccessPkId(bill.getPkValue());
|
this.operationResult.addSuccessPkId(bill.getPkValue());
|
||||||
|
|
@ -171,22 +185,40 @@ public class PaybillOperation extends AbstractOperationServicePlugIn implements
|
||||||
header.put("FM_ExpenseTypeCode", FM_ExpenseTypeCode);// 业务大类编码(EQ49,EQ44,EQ1101)
|
header.put("FM_ExpenseTypeCode", FM_ExpenseTypeCode);// 业务大类编码(EQ49,EQ44,EQ1101)
|
||||||
header.put("FM_CurrencyCode", "RMB");// 币种编码,默认:RMB
|
header.put("FM_CurrencyCode", "RMB");// 币种编码,默认:RMB
|
||||||
header.put("FM_RequestName", bill.getString("description"));// 单据主题_拼接
|
header.put("FM_RequestName", bill.getString("description"));// 单据主题_拼接
|
||||||
// List<Map<String, Object>> attachments = AttachmentServiceHelper.getAttachments(bill.getDataEntityType().getName(), bill.getLong("id"), "attachmentpanel");
|
List<Map<String, Object>> attachments = AttachmentServiceHelper.getAttachments(bill.getDataEntityType().getName(), bill.getLong("id"), "attachmentpanel");
|
||||||
// if (attachments.size()!=0){
|
if (attachments.size()!=0){
|
||||||
// JSONArray attachUrls = new JSONArray();
|
JSONArray attachUrls = new JSONArray();
|
||||||
// for (Map<String, Object> attachment : attachments) {
|
for (Map<String, Object> attachment : attachments) {
|
||||||
// String url = (String)attachment.get("url");
|
JSONObject jsonObject = new JSONObject();
|
||||||
// attachUrls.add(url);
|
String fileBase64 = getFileBase64StrByUrl(attachment);//转换为Base64数据
|
||||||
// }
|
jsonObject.put("attachData",fileBase64);
|
||||||
// header.put("FM_AttachUrl", attachUrls);//附件URL地址:array
|
byte[] decodedBytes = Base64.getDecoder().decode(fileBase64);
|
||||||
// }
|
int byteLength = decodedBytes.length;
|
||||||
header.put("FM_AttachUrl", null);//附件URL地址:array
|
jsonObject.put("attachDataLength",byteLength);
|
||||||
|
jsonObject.put("attachName",attachment.get("name"));
|
||||||
|
jsonObject.put("attachType",attachment.get("type"));
|
||||||
|
attachUrls.add(jsonObject);
|
||||||
|
}
|
||||||
|
header.put("FM_AttachUrl", attachUrls);//附件URL地址:array
|
||||||
|
}
|
||||||
|
//header.put("FM_AttachUrl", null);//附件URL地址:array
|
||||||
header.put("FM_BudType", 0);//预算类别0-组织预算,1-全年预算,当前只处理0 int
|
header.put("FM_BudType", 0);//预算类别0-组织预算,1-全年预算,当前只处理0 int
|
||||||
header.put("Remark", bill.getString("description"));// 事项描述_摘要
|
header.put("Remark", bill.getString("description"));// 事项描述_摘要
|
||||||
|
|
||||||
return header;
|
return header;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getFileBase64StrByUrl(Map<String, Object> attachment){
|
||||||
|
Object attPKId = attachment.get("attPkId");
|
||||||
|
AttachmentDto attachmentDto = AttachmentServiceHelper.getAttachmentInfoByAttPk(attPKId);
|
||||||
|
String resourcePath = attachmentDto.getResourcePath();
|
||||||
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
|
FileServiceFactory.getAttachmentFileService().download(resourcePath,out,null);
|
||||||
|
byte[] bytes = out.toByteArray();
|
||||||
|
String baseStr = new String(Base64.getEncoder().encode(bytes));
|
||||||
|
return baseStr;
|
||||||
|
}
|
||||||
|
|
||||||
// 构建body方法
|
// 构建body方法
|
||||||
public static JSONArray buildBody(DynamicObject bill) {
|
public static JSONArray buildBody(DynamicObject bill) {
|
||||||
bill = BusinessDataServiceHelper.loadSingle(bill.getPkValue(), "cas_paybill");
|
bill = BusinessDataServiceHelper.loadSingle(bill.getPkValue(), "cas_paybill");
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,7 @@ import kd.bos.servicehelper.QueryServiceHelper;
|
||||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||||
import kd.bos.util.StringUtils;
|
import kd.bos.util.StringUtils;
|
||||||
import kd.sdk.plugin.Plugin;
|
import kd.sdk.plugin.Plugin;
|
||||||
import shjh.jhzj7.fi.fi.utils.ApiUtils;
|
import shjh.jhzj7.fi.fi.utils.*;
|
||||||
import shjh.jhzj7.fi.fi.utils.EsbUtils;
|
|
||||||
import shjh.jhzj7.fi.fi.utils.JhzjUtils;
|
|
||||||
import shjh.jhzj7.fi.fi.utils.SysUtils;
|
|
||||||
import shjh.jhzj7.fi.fi.utils.domin.ResponseData;
|
import shjh.jhzj7.fi.fi.utils.domin.ResponseData;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
@ -819,6 +816,7 @@ public class PaybillPushSapOperation extends AbstractOperationServicePlugIn impl
|
||||||
bill.set("shjh_credentialnum",responseData.getNumber());
|
bill.set("shjh_credentialnum",responseData.getNumber());
|
||||||
bill.set("shjh_sapfiscalyear",responseData.getYear());
|
bill.set("shjh_sapfiscalyear",responseData.getYear());
|
||||||
bill.set("shjh_ispushsap", true);
|
bill.set("shjh_ispushsap", true);
|
||||||
|
bill.set("shjh_errormsg","");
|
||||||
SaveServiceHelper.save(new DynamicObject[]{bill});
|
SaveServiceHelper.save(new DynamicObject[]{bill});
|
||||||
//处理sap主动付款时,更新日记账的sap凭证号
|
//处理sap主动付款时,更新日记账的sap凭证号
|
||||||
//处理被动付款时,更新流水和日记账的sap凭证号
|
//处理被动付款时,更新流水和日记账的sap凭证号
|
||||||
|
|
@ -856,6 +854,8 @@ public class PaybillPushSapOperation extends AbstractOperationServicePlugIn impl
|
||||||
this.operationResult.addErrorInfo(operateErrorInfo);
|
this.operationResult.addErrorInfo(operateErrorInfo);
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
|
//更新推送报错
|
||||||
|
SapUtils.updateBillErrorMsg(bill,jsonObject,"shjh_errormsg");
|
||||||
OperateErrorInfo operateErrorInfo = new OperateErrorInfo();
|
OperateErrorInfo operateErrorInfo = new OperateErrorInfo();
|
||||||
operateErrorInfo.setMessage("推送SAP凭证接口失败,原因:"+jsonObject.get("msg"));
|
operateErrorInfo.setMessage("推送SAP凭证接口失败,原因:"+jsonObject.get("msg"));
|
||||||
operateErrorInfo.setErrorLevel(ErrorLevel.Error.name());
|
operateErrorInfo.setErrorLevel(ErrorLevel.Error.name());
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ import kd.sdk.plugin.Plugin;
|
||||||
import shjh.jhzj7.fi.fi.plugin.form.info.RecFieldsInfo;
|
import shjh.jhzj7.fi.fi.plugin.form.info.RecFieldsInfo;
|
||||||
import shjh.jhzj7.fi.fi.utils.ApiUtils;
|
import shjh.jhzj7.fi.fi.utils.ApiUtils;
|
||||||
import shjh.jhzj7.fi.fi.utils.JhzjUtils;
|
import shjh.jhzj7.fi.fi.utils.JhzjUtils;
|
||||||
|
import shjh.jhzj7.fi.fi.utils.SapUtils;
|
||||||
import shjh.jhzj7.fi.fi.utils.SysUtils;
|
import shjh.jhzj7.fi.fi.utils.SysUtils;
|
||||||
import shjh.jhzj7.fi.fi.utils.domin.ResponseData;
|
import shjh.jhzj7.fi.fi.utils.domin.ResponseData;
|
||||||
|
|
||||||
|
|
@ -234,6 +235,8 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
||||||
recBill.set("shjh_vouchernum",responseData.getNumber());
|
recBill.set("shjh_vouchernum",responseData.getNumber());
|
||||||
recBill.set("shjh_sapfiscalyear",responseData.getYear());
|
recBill.set("shjh_sapfiscalyear",responseData.getYear());
|
||||||
recBill.set("shjh_ispushsap", true);
|
recBill.set("shjh_ispushsap", true);
|
||||||
|
recBill.set("shjh_errormsg","");
|
||||||
|
|
||||||
SaveServiceHelper.update(recBill);
|
SaveServiceHelper.update(recBill);
|
||||||
DynamicObject bankjournal = BusinessDataServiceHelper.loadSingle("cas_bankjournal", new QFilter("billno",
|
DynamicObject bankjournal = BusinessDataServiceHelper.loadSingle("cas_bankjournal", new QFilter("billno",
|
||||||
QCP.equals, recBill.getString("billno")).toArray());
|
QCP.equals, recBill.getString("billno")).toArray());
|
||||||
|
|
@ -265,6 +268,8 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
||||||
|
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
|
//更新推送报错
|
||||||
|
SapUtils.updateBillErrorMsg(recBill,response,"shjh_errormsg");
|
||||||
OperateErrorInfo operateErrorInfo = new OperateErrorInfo();
|
OperateErrorInfo operateErrorInfo = new OperateErrorInfo();
|
||||||
operateErrorInfo.setMessage((String) response.get("msg"));
|
operateErrorInfo.setMessage((String) response.get("msg"));
|
||||||
operateErrorInfo.setErrorLevel(ErrorLevel.Error.name());
|
operateErrorInfo.setErrorLevel(ErrorLevel.Error.name());
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import kd.bos.orm.query.QCP;
|
||||||
import kd.bos.orm.query.QFilter;
|
import kd.bos.orm.query.QFilter;
|
||||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
import kd.bos.servicehelper.QueryServiceHelper;
|
import kd.bos.servicehelper.QueryServiceHelper;
|
||||||
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||||
import org.apache.http.HttpEntity;
|
import org.apache.http.HttpEntity;
|
||||||
import org.apache.http.HttpResponse;
|
import org.apache.http.HttpResponse;
|
||||||
import org.apache.http.client.HttpClient;
|
import org.apache.http.client.HttpClient;
|
||||||
|
|
@ -758,4 +759,28 @@ public class SapUtils {
|
||||||
|
|
||||||
return sapMap;
|
return sapMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新单据错误信息
|
||||||
|
* @param bill 表单实体
|
||||||
|
* @param response 返回参数
|
||||||
|
* @param filedName 字段标识
|
||||||
|
*/
|
||||||
|
public static void updateBillErrorMsg(DynamicObject bill,JSONObject response,String filedName){
|
||||||
|
try {
|
||||||
|
String errorMsg = response.getString("msg");
|
||||||
|
|
||||||
|
if (errorMsg != null && errorMsg.length() > 2000) {
|
||||||
|
// 记录完整错误信息到日志
|
||||||
|
logger.warn("错误信息过长,已截断。完整信息: {}", errorMsg);
|
||||||
|
// 截取前2000个字符
|
||||||
|
errorMsg = errorMsg.substring(0, 2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
bill.set(filedName, errorMsg);
|
||||||
|
SaveServiceHelper.update(bill);
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("更新单据错误信息报错: {}", e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue