收付款推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