|  | @@ -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;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  }
 |