Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

wangjun vor 1 Monat
Ursprung
Commit
b301847fb9

+ 26 - 10
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/form/PublicReimburseBillSRMEditPlugin.java → code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/form/PayApplyBillSRMEditPlugin.java

@@ -4,11 +4,19 @@ import com.alibaba.druid.util.StringUtils;
 import kd.bos.bill.AbstractBillPlugIn;
 import kd.bos.entity.operate.result.IOperateInfo;
 import kd.bos.entity.operate.result.OperationResult;
+import kd.bos.form.IClientViewProxy;
 import kd.bos.form.events.AfterDoOperationEventArgs;
-
+import java.util.HashMap;
 import java.util.List;
-
-public class PublicReimburseBillSRMEditPlugin extends AbstractBillPlugIn {
+import java.util.Map;
+
+/**
+ * 对公报销单(nckd_er_publicreimbur_ext)、预付单
+ * 由srm系统产生的单据,退回srm操作
+ * @author wanghaiwu_kd
+ * @date 2025/05/15
+ */
+public class PayApplyBillSRMEditPlugin extends AbstractBillPlugIn {
     @Override
     public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
         super.afterDoOperation(afterDoOperationEventArgs);
@@ -17,8 +25,15 @@ public class PublicReimburseBillSRMEditPlugin extends AbstractBillPlugIn {
         if(StringUtils.equals("nckd_returnsrm", opKey)){
             OperationResult operationResult = afterDoOperationEventArgs.getOperationResult();
             operationResult.setShowMessage(false);
+
+            String ssoUrl = "";
             String message = operationResult.getMessage();
 
+            if(!StringUtils.isEmpty(message) && message.contains("获取单点地址:")){
+                ssoUrl = message.replace("获取单点地址:", "");
+
+                message = "";
+            }
             List<IOperateInfo> errorInfos = operationResult.getAllErrorOrValidateInfo();
             boolean isSuccess = operationResult.isSuccess();
             if(errorInfos.size()>0){
@@ -30,13 +45,14 @@ public class PublicReimburseBillSRMEditPlugin extends AbstractBillPlugIn {
                 message = message + "\r\n" + msg.toString();
             }
 
-            this.getView().showTipNotification(message);
-        }
-        if(StringUtils.equals("pay",afterDoOperationEventArgs.getOperateKey())){
-
-        }
-        if(StringUtils.equals("cancelpay",afterDoOperationEventArgs.getOperateKey())){
-
+            if(!StringUtils.isEmpty(message)) {
+                this.getView().showTipNotification(message);
+            } else {
+                IClientViewProxy proxy = this.getView().getService(IClientViewProxy.class);
+                Map<String, String> mpUrl = new HashMap();
+                mpUrl.put("url", ssoUrl);
+                proxy.addAction("openUrl", mpUrl);
+            }
         }
     }
 }

+ 17 - 4
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/operate/PublicReimBillReturnOpPlugin.java

@@ -58,20 +58,33 @@ public class PublicReimBillReturnOpPlugin extends AbstractOperationServicePlugIn
                     if(errMessage.length() > 0){
                         errMessage.append(",");
                     }
-                    errMessage.append(billno);
+                    errMessage.append("单据(" + billno + ")不是暂存状态或不是由srm生成");
+
+                    continue;
                 }
 
                 Map<String, String> returnMap = SRMHelperUtils.writeBackSRMWfStatus(billInfo.getDataEntityType().getName(), billInfo.getLong("id"), operationKey);
+
+                if(returnMap != null){
+                    if("1".equals(returnMap.get("code"))){
+                        if(errMessage.length() > 0){
+                            errMessage.append(",");
+                        }
+                        errMessage.append("单据(" + billno + ")," + returnMap.get("msg"));
+                    } else {
+                        errMessage.append("获取单点地址:" + returnMap.get("msg"));
+                    }
+                }
             }
 
-//            if(errMessage.length() > 0) {
+            if(errMessage.length() > 0) {
                 ////将错误信息返回到前端
-                String msg = "以下单据状态不是暂存状态或不是SRM生成的单据,不允许退回!" + errMessage.toString();
+                String msg = errMessage.toString();
                 e.setCancelMessage(msg);
                 e.setCancel(true);
 
                 logger.info("PublicReimBillReturnOpPlugin 退回失败:" + msg);
-//            }
+            }
         }
     }
 

+ 25 - 7
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/operate/SRMHelperUtils.java

@@ -91,7 +91,11 @@ public class SRMHelperUtils {
 
             //退回成功后单点到srm
             if (!"0".equals(doReturnMap.get("code"))) {//调接口异常
-                return doReturnMap;
+//                return doReturnMap;
+
+                Map<String,String> ssomap = buildSSOUrl(srmurl);
+
+                return ssomap;
             } else {//调接口成功后,获取单点登录链接
                 Map<String,String> ssomap = buildSSOUrl(srmurl);
 
@@ -165,18 +169,33 @@ public class SRMHelperUtils {
         bodyObj.put("settleStatus", "REJECTED");//APPROVED 已审批 / REJECTED 已拒绝
         bodyObj.put("documentType", "PAYMENT");//PAYMENT 付款   PREPAYMENT 预付款
         bodyObj.put("approvedRemark", "退回");//审批意见
-        bodyObj.put("settleReversalLines","[{\"lineNum\":1}]");//结算单行
+
+        JSONArray lineNumArr = new JSONArray();
+        JSONObject lineNumObj = new JSONObject();
+        lineNumObj.put("lineNum", 1);
+        lineNumArr.add(lineNumObj);
+
+        bodyObj.put("settleReversalLines", lineNumArr);//结算单行
+
+
         bodyArr.add(bodyObj);
 
         JSONObject body=new JSONObject();
         body.put("header", headerObj);
         body.put("body", bodyArr);
 
+        Map<String, String> headerMap = new HashMap<>();
+        headerMap.put("Content-Type", "application/json");
+        headerMap.put("User-Agent", "apifox/1.0.0 (https://www.apifox.cn)");
+        headerMap.put("Authorization", "Bearer " + token);
+
         try {
-            String response = doHttpClientPost(url,  body.toJSONString(), token);
+//            String response = doHttpClientPost(url,  body.toJSONString(), token);
+            String response = KHttpClientUtils.postjson(url, headerMap, body.toJSONString());
+
             if(StringUtils.isEmpty(response)){
                 returnMap.put("code", "1");
-                returnMap.put("msg", "审批回传失败, 返回为空");
+                returnMap.put("msg", "退回失败, 返回为空");
 
                 return returnMap;
             }
@@ -185,13 +204,12 @@ public class SRMHelperUtils {
 
             if (resultJSON !=null && "SUCCESS".equals(resultJSON.get("responseStatus").toString())
                     &&"SUCCESS".equals(resultJSON.get("executeResult").toString())) {
-                returnMap.put("code","0");
+                returnMap.put("code","退回成功");
             } else{
                 returnMap.put("code","1");
+                returnMap.put("msg", "退回失败" + response);
             }
 
-            returnMap.put("msg", response);
-
             return returnMap;
         } catch(IOException e){
             returnMap.put("code", "1");