parent
							
								
									6c2141c0b1
								
							
						
					
					
						commit
						5bc7c8c91c
					
				| 
						 | 
				
			
			@ -1,21 +1,44 @@
 | 
			
		|||
package shkd.sys.sys.plugin.form;
 | 
			
		||||
 | 
			
		||||
import dm.jdbc.util.StringUtil;
 | 
			
		||||
import kd.bos.bill.AbstractBillPlugIn;
 | 
			
		||||
import kd.bos.data.BusinessDataReader;
 | 
			
		||||
import kd.bos.dataentity.entity.DynamicObject;
 | 
			
		||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
 | 
			
		||||
import kd.bos.dataentity.metadata.IDataEntityType;
 | 
			
		||||
import kd.bos.entity.botp.ConvertBill;
 | 
			
		||||
import kd.bos.entity.botp.ConvertOpType;
 | 
			
		||||
import kd.bos.entity.botp.ConvertRuleCache;
 | 
			
		||||
import kd.bos.entity.botp.ConvertRuleElement;
 | 
			
		||||
import kd.bos.entity.botp.runtime.ConvertOpParameter;
 | 
			
		||||
import kd.bos.entity.botp.runtime.ConvertOpRule;
 | 
			
		||||
import kd.bos.entity.botp.runtime.ConvertOperationResult;
 | 
			
		||||
import kd.bos.entity.botp.runtime.DrawArgs;
 | 
			
		||||
import kd.bos.entity.datamodel.IBillModel;
 | 
			
		||||
import kd.bos.entity.datamodel.IRefrencedataProvider;
 | 
			
		||||
import kd.bos.entity.datamodel.ListSelectedRow;
 | 
			
		||||
import kd.bos.entity.datamodel.ListSelectedRowCollection;
 | 
			
		||||
import kd.bos.entity.datamodel.events.ChangeData;
 | 
			
		||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
 | 
			
		||||
import kd.bos.entity.operate.result.OperationResult;
 | 
			
		||||
import kd.bos.ext.fi.bei.util.EmptyUtil;
 | 
			
		||||
import kd.bos.form.IPageCache;
 | 
			
		||||
import kd.bos.form.control.Toolbar;
 | 
			
		||||
import kd.bos.form.control.events.ItemClickEvent;
 | 
			
		||||
import kd.bos.i18n.mservice.I18nServiceHelper;
 | 
			
		||||
import kd.bos.i18n.mservice.utils.AmountConvertResult;
 | 
			
		||||
import kd.bos.form.events.BeforeDoOperationEventArgs;
 | 
			
		||||
import kd.bos.form.field.RefBillEdit;
 | 
			
		||||
import kd.bos.form.field.events.BeforeF7SelectEvent;
 | 
			
		||||
import kd.bos.form.field.events.BeforeF7SelectListener;
 | 
			
		||||
import kd.bos.form.operate.AbstractOperate;
 | 
			
		||||
import kd.bos.form.operate.botp.Push;
 | 
			
		||||
import kd.bos.list.ListShowParameter;
 | 
			
		||||
import kd.bos.logging.Log;
 | 
			
		||||
import kd.bos.logging.LogFactory;
 | 
			
		||||
import kd.bos.orm.query.QCP;
 | 
			
		||||
import kd.bos.orm.query.QFilter;
 | 
			
		||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
 | 
			
		||||
import kd.bos.servicehelper.botp.ConvertServiceHelper;
 | 
			
		||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
 | 
			
		||||
import kd.fi.cas.util.EmptyUtil;
 | 
			
		||||
import kd.sdk.plugin.Plugin;
 | 
			
		||||
import shkd.sys.sys.mservice.ApiService;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -26,13 +49,17 @@ import static kd.bos.servicehelper.workflow.WorkflowServiceHelper.abandonByBusie
 | 
			
		|||
/**
 | 
			
		||||
 * 单据界面插件
 | 
			
		||||
 */
 | 
			
		||||
public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements Plugin {
 | 
			
		||||
public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
 | 
			
		||||
    private static final Log logger = LogFactory.getLog(PaymentProcessingBillPlugin.class);
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void registerListener(EventObject e) {
 | 
			
		||||
        Toolbar tbmain = this.getView().getControl("tbmain");
 | 
			
		||||
        tbmain.addItemClickListener(this);
 | 
			
		||||
 | 
			
		||||
        RefBillEdit shkd_ywcl = this.getView().getControl("shkd_ywcl");//业务处理
 | 
			
		||||
        shkd_ywcl.addBeforeF7SelectListener(this);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
| 
						 | 
				
			
			@ -90,7 +117,6 @@ public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements P
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public void propertyChanged(PropertyChangedArgs e) {
 | 
			
		||||
        String key = e.getProperty().getName();
 | 
			
		||||
        ChangeData[] changeData = e.getChangeSet();
 | 
			
		||||
| 
						 | 
				
			
			@ -98,13 +124,13 @@ public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements P
 | 
			
		|||
        Object oldValue = changeData[0].getOldValue();
 | 
			
		||||
        DynamicObject settleType;
 | 
			
		||||
        Object value = this.getModel().getValue("settletype");
 | 
			
		||||
        settleType = value != null ? (DynamicObject) value : null;
 | 
			
		||||
        settleType=value != null ? (DynamicObject)value : null;
 | 
			
		||||
        if (newValue != oldValue) {
 | 
			
		||||
            DynamicObject applyDo;
 | 
			
		||||
            switch (key) {
 | 
			
		||||
                case "settletype":
 | 
			
		||||
                    if (EmptyUtil.isNoEmpty(settleType)) {
 | 
			
		||||
                        if ("电汇".equals(settleType.getString("name"))) {
 | 
			
		||||
                        if ("电汇".equals(settleType.getString("name"))){
 | 
			
		||||
                            this.getView().setVisible(true, new String[]{"settletnumber"});
 | 
			
		||||
                            this.getView().setVisible(true, new String[]{"draftbill"});
 | 
			
		||||
                        }
 | 
			
		||||
| 
						 | 
				
			
			@ -112,38 +138,190 @@ public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements P
 | 
			
		|||
                    break;
 | 
			
		||||
                case "paymentchannel":
 | 
			
		||||
                    if (EmptyUtil.isNoEmpty(settleType)) {
 | 
			
		||||
                        if ("电汇".equals(settleType.getString("name"))) {
 | 
			
		||||
                        if ("电汇".equals(settleType.getString("name"))){
 | 
			
		||||
                            this.getView().setVisible(true, new String[]{"settletnumber"});
 | 
			
		||||
                            this.getView().setVisible(true, new String[]{"draftbill"});
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    break;
 | 
			
		||||
                case "actpayamt":
 | 
			
		||||
                    // 将 newValue 转换为字符串
 | 
			
		||||
                    String valueStr = newValue.toString();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
                    String formattedValue = String.format("%.2f", Double.parseDouble(valueStr));
 | 
			
		||||
        if ("shkd_ywcl".equals(key)){
 | 
			
		||||
            if (newValue != oldValue&&newValue!=null) {
 | 
			
		||||
                DynamicObject dynamicObject=(DynamicObject)newValue;
 | 
			
		||||
                IPageCache iPageCache =this.getPageCache();
 | 
			
		||||
                iPageCache.put("shkd_ywclid",dynamicObject.getString("id"));
 | 
			
		||||
                this.getView().invokeOperation("drawauto");
 | 
			
		||||
 | 
			
		||||
                    AmountConvertResult amountConvertResult = I18nServiceHelper.amountConvertUppercase(
 | 
			
		||||
                            "ZH", "CNY", formattedValue, "false");
 | 
			
		||||
 | 
			
		||||
                    if (amountConvertResult.isSuccess()) {
 | 
			
		||||
                        this.getModel().setValue("shkd_zwamount", amountConvertResult.getResult());
 | 
			
		||||
                        break;
 | 
			
		||||
                    }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void afterBindData(EventObject e) {
 | 
			
		||||
        DynamicObject settleType;
 | 
			
		||||
        Object value = this.getModel().getValue("settletype");
 | 
			
		||||
        settleType = value != null ? (DynamicObject) value : null;
 | 
			
		||||
        settleType=value != null ? (DynamicObject)value : null;
 | 
			
		||||
        if (EmptyUtil.isNoEmpty(settleType)) {
 | 
			
		||||
            if ("电汇".equals(settleType.getString("name"))) {
 | 
			
		||||
            if ("电汇".equals(settleType.getString("name"))){
 | 
			
		||||
                this.getView().setVisible(true, new String[]{"settletnumber"});
 | 
			
		||||
                this.getView().setVisible(true, new String[]{"draftbill"});
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) {
 | 
			
		||||
        String name = beforeF7SelectEvent.getProperty().getName();
 | 
			
		||||
        if (name.equals("shkd_ywcl")) {
 | 
			
		||||
            ListShowParameter showParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
 | 
			
		||||
            DynamicObject dataEntity = this.getModel().getDataEntity();
 | 
			
		||||
            DynamicObject org = dataEntity.getDynamicObject("org");//付款人(公司)
 | 
			
		||||
            QFilter qFilter = new QFilter("company.id", QFilter.equals, org.getLong("id"));
 | 
			
		||||
            qFilter.and(new QFilter("tradetype", QFilter.equals, "redeem"));
 | 
			
		||||
            showParameter.getListFilterParameter().setFilter(qFilter);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
 | 
			
		||||
        AbstractOperate draw = (AbstractOperate)args.getSource();
 | 
			
		||||
        if("drawauto".equals(draw.getOperateKey())){
 | 
			
		||||
            ConvertOpParameter convertOpParameter = buildParameter(draw);
 | 
			
		||||
            ListSelectedRowCollection srcRows = new ListSelectedRowCollection();
 | 
			
		||||
            DynamicObject shkd_ywcl = (DynamicObject) this.getModel().getValue("shkd_ywcl");
 | 
			
		||||
            if(shkd_ywcl==null){
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            ListSelectedRow row = new ListSelectedRow(shkd_ywcl.get("id"), true);
 | 
			
		||||
            DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(shkd_ywcl.get("id"), "cdm_drafttradebill");
 | 
			
		||||
            String billno = dynamicObject.getString("billno");
 | 
			
		||||
            String status = dynamicObject.getString("status");
 | 
			
		||||
            Long org = dynamicObject.getLong("org");
 | 
			
		||||
            row.setBillNo(billno);//单据编号
 | 
			
		||||
            row.setBillStatus(status);//单据状态
 | 
			
		||||
            row.setMainOrgId(org);//组织ID
 | 
			
		||||
            row.setBillTypeID(0L);
 | 
			
		||||
            row.setRowKey(0);
 | 
			
		||||
            row.setPageIndex(0);
 | 
			
		||||
            srcRows.add(row);
 | 
			
		||||
            doDraw(convertOpParameter,srcRows);
 | 
			
		||||
            args.setCancel(true);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void doDraw(ConvertOpParameter opParameter, ListSelectedRowCollection srcRows) {
 | 
			
		||||
        if (srcRows != null && srcRows.size() != 0) {
 | 
			
		||||
            String sourceEntityNumber = opParameter.getDefSourceBill();
 | 
			
		||||
            String ruleId = opParameter.getDefRuleId();
 | 
			
		||||
            DrawArgs args = new DrawArgs();
 | 
			
		||||
            args.setSourceEntityNumber(sourceEntityNumber);
 | 
			
		||||
            args.setTargetEntityNumber(opParameter.getEntityNumber());
 | 
			
		||||
            args.addCustomParam("botp_requiredatamutex", String.valueOf(true));
 | 
			
		||||
            args.getSelectedRows().addAll(srcRows);
 | 
			
		||||
            args.setTargetPageId(opParameter.getTargetBillPageId());
 | 
			
		||||
            args.setRuleId(ruleId);
 | 
			
		||||
            args.setBuildConvReport(true);
 | 
			
		||||
            args.getClearEntrys().addAll(opParameter.getClearEntrys());
 | 
			
		||||
            args.getCustomParams().putAll(opParameter.getCustomParams());
 | 
			
		||||
            ConvertOperationResult result = ConvertServiceHelper.draw(args);
 | 
			
		||||
            if (result.isSuccess() && result.getCachePageIds().size() != 0) {
 | 
			
		||||
                IPageCache iPageCache =this.getPageCache();
 | 
			
		||||
                IRefrencedataProvider refProvider = new IRefrencedataProvider() {
 | 
			
		||||
                    @Override
 | 
			
		||||
                    public void fillReferenceData(Object[] dataEntitys, IDataEntityType type) {
 | 
			
		||||
                        BusinessDataReader.loadRefence(dataEntitys, type);
 | 
			
		||||
                    }
 | 
			
		||||
                };
 | 
			
		||||
                List<DynamicObject> dataEntitys = result.loadTargetDataObjects(refProvider,this.getView().getModel().getDataEntityType());
 | 
			
		||||
                DynamicObject dynamicObject = dataEntitys.get(0);
 | 
			
		||||
                if (!StringUtil.isEmpty(iPageCache.get("shkd_ywclid"))){
 | 
			
		||||
                    DynamicObject cdm_drafttradebill = BusinessDataServiceHelper.loadSingle(Long.parseLong(iPageCache.get("shkd_ywclid")), "cdm_drafttradebill");
 | 
			
		||||
                    dynamicObject.set("shkd_ywcl",cdm_drafttradebill);
 | 
			
		||||
                }
 | 
			
		||||
                ((IBillModel)this.getView().getModel()).push(dynamicObject);
 | 
			
		||||
                DynamicObjectCollection entry = (DynamicObjectCollection) this.getView().getModel().getValue("entry");
 | 
			
		||||
                if (entry.size()>1){
 | 
			
		||||
                    this.getView().getModel().deleteEntryRow("entry", 1);
 | 
			
		||||
                }
 | 
			
		||||
                DynamicObjectCollection cas_draftinfo = (DynamicObjectCollection) this.getView().getModel().getValue("cas_draftinfo");
 | 
			
		||||
                if (cas_draftinfo.size()>1){
 | 
			
		||||
                    this.getView().getModel().deleteEntryRow("cas_draftinfo", 0);
 | 
			
		||||
                }
 | 
			
		||||
                this.getView().updateView();
 | 
			
		||||
 | 
			
		||||
                result.release(refProvider, this.getView().getModel().getDataEntityType());
 | 
			
		||||
                SaveServiceHelper.save(new DynamicObject[]{this.getView().getModel().getDataEntity()});
 | 
			
		||||
            } else {
 | 
			
		||||
                Push.showReport(this.getView(), args, result);
 | 
			
		||||
                this.getView().getModel().setValue("shkd_ywcl",null);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 构建下推操作参数
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    protected ConvertOpParameter buildParameter(AbstractOperate draw){
 | 
			
		||||
 | 
			
		||||
        ConvertOpParameter opParameter = new ConvertOpParameter();
 | 
			
		||||
        opParameter.setOpType(ConvertOpType.Draw);
 | 
			
		||||
 | 
			
		||||
        String entityNumber = this.getView().getEntityId();
 | 
			
		||||
        opParameter.setEntityNumber(entityNumber);
 | 
			
		||||
        opParameter.setTargetBillPageId(this.getView().getPageId());
 | 
			
		||||
 | 
			
		||||
        opParameter.setDefSourceBill("cdm_drafttradebill");
 | 
			
		||||
        opParameter.setDefRuleId("2236252254296354816");
 | 
			
		||||
        opParameter.getClearEntrys().addAll(new ArrayList());
 | 
			
		||||
 | 
			
		||||
        // 直接选单,跳过选单界面:判断指定的源单、规则是否存在、启用
 | 
			
		||||
        List<ConvertRuleElement> rules = this.loadRules("cdm_drafttradebill", entityNumber);
 | 
			
		||||
        ConvertRuleElement defRule = null;
 | 
			
		||||
        for(ConvertRuleElement rule : rules) {
 | 
			
		||||
            if (!rule.isEnabled()) {
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
            if ("2236252254296354816".equals(rule.getId())) {
 | 
			
		||||
                defRule = rule;
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (defRule != null) {
 | 
			
		||||
            ConvertBill bill = new ConvertBill();
 | 
			
		||||
            bill.setEntityNumber("cdm_drafttradebill");
 | 
			
		||||
            bill.setEntityName("cdm_drafttradebill");
 | 
			
		||||
 | 
			
		||||
            ConvertOpRule opRule = new ConvertOpRule();
 | 
			
		||||
            opRule.setRuleId(defRule.getId());
 | 
			
		||||
            bill.getRules().add(opRule);
 | 
			
		||||
 | 
			
		||||
            opParameter.getBills().add(bill);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // 自定义参数
 | 
			
		||||
        if (draw.getOption() != null) {
 | 
			
		||||
            opParameter.getCustomParams().putAll(draw.getOption().getVariables());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return opParameter;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private List<ConvertRuleElement> loadRules(String sourceEntityNumber, String targetEntityNumber) {
 | 
			
		||||
        List<ConvertRuleElement> rules = ConvertRuleCache.loadRules(sourceEntityNumber, targetEntityNumber);
 | 
			
		||||
        List<ConvertRuleElement> enableRules = new ArrayList();
 | 
			
		||||
        Iterator var5 = rules.iterator();
 | 
			
		||||
 | 
			
		||||
        while(var5.hasNext()) {
 | 
			
		||||
            ConvertRuleElement rule = (ConvertRuleElement)var5.next();
 | 
			
		||||
            if (rule.isEnabled()) {
 | 
			
		||||
                enableRules.add(rule);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return enableRules;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue