| 
					
				 | 
			
			
				@@ -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失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |