소스 검색

对公报销、预付单联查SRM处理

wanghaiwu 1 일 전
부모
커밋
f5db90b50f

+ 1 - 1
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/form/PayApplyBillSRMEditPlugin.java

@@ -19,7 +19,7 @@ import java.util.Map;
 
 /**
  * 对公报销单(nckd_er_publicreimbur_ext)、预付单
- * 由srm系统产生的单据,退回srm操作
+ * 由srm系统产生的单据,联查SRM
  * @author wanghaiwu_kd
  * @date 2025/05/15
  */

+ 80 - 0
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/form/PayApplyBillSRMListPlugin.java

@@ -0,0 +1,80 @@
+package nckd.jimin.jyyy.fi.plugin.form;
+
+import com.alibaba.druid.util.StringUtils;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.resource.ResManager;
+import kd.bos.entity.datamodel.ListSelectedRow;
+import kd.bos.form.IClientViewProxy;
+import kd.bos.form.events.BeforeDoOperationEventArgs;
+import kd.bos.form.operate.AbstractOperate;
+import kd.bos.list.ListShowParameter;
+import kd.bos.list.plugin.AbstractListPlugin;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.QueryServiceHelper;
+import nckd.jimin.jyyy.fi.plugin.operate.SRMHelperUtils;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * 对公报销单(nckd_er_publicreimbur_ext)、预付单
+ * 由srm系统产生的单据,退回srm操作
+ * @author wanghaiwu_kd
+ * @date 2025/05/15
+ */
+public class PayApplyBillSRMListPlugin extends AbstractListPlugin {
+
+    @Override
+    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
+        super.beforeDoOperation(args);
+        Object source = args.getSource();
+        String opKey = ((AbstractOperate)source).getOperateKey();
+
+        Set<Long> selectedDatas = (Set)args.getListSelectedData().stream().map((data) -> {
+            return (Long)data.getPrimaryKeyValue();
+        }).collect(Collectors.toSet());
+
+        if(StringUtils.equals("nckd_ssosrm", opKey)){
+            if (selectedDatas.size() > 1 || selectedDatas.size() == 0) {
+                this.getView().showTipNotification(ResManager.loadKDString("仅支持选择单条记录联查", "TripReqBillList_7", "fi-er-formplugin", new Object[0]));
+                args.setCancel(true);
+                return;
+            } else {
+                if (selectedDatas.size() == 1) {
+                    ListSelectedRow row = args.getListSelectedData().get(0);
+                    String entityName = ((ListShowParameter)this.getView().getFormShowParameter()).getBillFormId();
+                    DynamicObject objcetInfo = QueryServiceHelper.queryOne(entityName, "nckd_srmurl", new QFilter[]{new QFilter("id", "=", row.getPrimaryKeyValue())});
+                    if (StringUtils.isEmpty(objcetInfo.getString("nckd_srmurl"))) {
+                        this.getView().showTipNotification(ResManager.loadKDString("不是SRM生成的单据,不能单点到SRM系统", "TripReqBillList_11", "fi-er-formplugin", new Object[0]));
+                        args.setCancel(true);
+                        return;
+                    } else {
+                        openSRMSSOLink(objcetInfo.getString("nckd_srmurl"));
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * 单点登录到srm系统
+     */
+    public void openSRMSSOLink(String ssourl){
+        Map<String, String> returnMap = SRMHelperUtils.buildSSOUrl(ssourl);
+
+        if(returnMap != null){
+            if("0".equals(returnMap.get("code"))) {
+                ssourl = returnMap.get("msg");
+                IClientViewProxy proxy = this.getView().getService(IClientViewProxy.class);
+                Map<String, String> mpUrl = new HashMap();
+                mpUrl.put("url", ssourl);
+                proxy.addAction("openUrl", mpUrl);
+            } else {
+                this.getView().showTipNotification(returnMap.get("msg"));
+            }
+        } else {
+            this.getView().showTipNotification("获取单点url失败");
+        }
+    }
+}