Browse Source

付款处理联查收款单0

wuxiaobing 2 days ago
parent
commit
5d0af2ccfc

+ 57 - 1
code/wnq/nckd-wnq01-wnq-scm/src/main/java/nckd/poc602/plugin/form/RecBillFormPlugin.java

@@ -1,12 +1,19 @@
 package nckd.poc602.plugin.form;
 
 import java.math.BigDecimal;
+import java.util.EventObject;
+import java.util.HashSet;
+import java.util.Set;
 
 import kd.bos.bill.AbstractBillPlugIn;
+import kd.bos.bill.BillShowParameter;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.entity.datamodel.events.ChangeData;
 import kd.bos.entity.datamodel.events.PropertyChangedArgs;
+import kd.bos.form.IFormView;
+import kd.bos.form.ShowType;
+import kd.bos.form.events.AfterDoOperationEventArgs;
 import kd.bos.form.field.events.BeforeF7SelectEvent;
 import kd.bos.form.field.events.BeforeF7SelectListener;
 import kd.bos.orm.query.QCP;
@@ -18,7 +25,12 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
  * @date 2025-4-25
  */
 public class RecBillFormPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener {
-
+	@Override
+	public void registerListener(EventObject e) {
+		// TODO Auto-generated method stub
+		super.registerListener(e);
+	}
+	
     @Override
     public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) {
 
@@ -61,4 +73,48 @@ public class RecBillFormPlugin extends AbstractBillPlugIn implements BeforeF7Sel
             }
         }
     }
+    
+    @Override
+    public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
+    	// TODO Auto-generated method stub
+    	super.afterDoOperation(afterDoOperationEventArgs);
+    	String opkey = afterDoOperationEventArgs.getOperateKey();
+    	if("querysk".equals(opkey)) {
+    		DynamicObject fkd = this.getModel().getDataEntity(true);
+    		Set<Object> xshtids = new HashSet<>();
+    		DynamicObjectCollection entrys = fkd.getDynamicObjectCollection("entry");
+    		for(DynamicObject entryitem : entrys) {
+    			DynamicObject xsht = entryitem.getDynamicObject("nckd_refbillfield");
+    			if(xsht != null) {
+    				xshtids.add(xsht.getPkValue());
+    			}
+    		}
+
+    		if(!xshtids.isEmpty()) {
+    			String skdentity = "cas_recbill";
+    			Set<Object> skdids = new HashSet<>();
+    			QFilter qf = new QFilter("entry.nckd_refbillfield1",QCP.in,xshtids);
+    			DynamicObject[] skds = BusinessDataServiceHelper.load("cas_recbill", "id", qf.toArray());
+    			for(DynamicObject skd : skds) {
+    				skdids.add(skd.getPkValue());
+    			}
+    			if(skdids.size() == 1) {
+        			BillShowParameter bsp = new BillShowParameter();
+        			bsp.setFormId(skdentity);
+        			bsp.setPkId(skdids.toArray()[0]);
+        			bsp.getOpenStyle().setShowType(ShowType.MainNewTabPage);
+        			bsp.getOpenStyle().setTargetKey("tabap");
+        			String pageId = this.generatePage4ListOp(this.getView(),skdentity, skdids.toArray()[0]);
+        			bsp.setPageId(pageId);
+        			this.getView().showForm(bsp);
+    			}
+    		}else {
+    			this.getView().showErrorNotification("未找到关联的收款单");
+    		}
+    	}
+    }
+    
+	private String generatePage4ListOp(IFormView currentView, String viewBillFormId, Object pkValue) {
+		 return currentView.getPageId() + "_" + viewBillFormId + "_" + pkValue;
+	}
 }