|  | @@ -0,0 +1,151 @@
 | 
	
		
			
				|  |  | +package fi.em.editPlugin;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import kd.bos.bill.AbstractMobBillPlugIn;
 | 
	
		
			
				|  |  | +import kd.bos.bill.MobileBillShowParameter;
 | 
	
		
			
				|  |  | +import kd.bos.exception.KDBizException;
 | 
	
		
			
				|  |  | +import kd.bos.form.CloseCallBack;
 | 
	
		
			
				|  |  | +import kd.bos.form.FormShowParameter;
 | 
	
		
			
				|  |  | +import kd.bos.form.ShowType;
 | 
	
		
			
				|  |  | +import kd.bos.form.events.AfterDoOperationEventArgs;
 | 
	
		
			
				|  |  | +import kd.bos.form.events.ClosedCallBackEvent;
 | 
	
		
			
				|  |  | +import kd.bos.list.plugin.AbstractListPlugin;
 | 
	
		
			
				|  |  | +import kd.bos.orm.query.QFilter;
 | 
	
		
			
				|  |  | +import kd.sdk.plugin.Plugin;
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSONArray;
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | +import kd.bos.dataentity.entity.DynamicObject;
 | 
	
		
			
				|  |  | +import kd.bos.servicehelper.BusinessDataServiceHelper;
 | 
	
		
			
				|  |  | +import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | +import java.math.BigDecimal;
 | 
	
		
			
				|  |  | +import java.util.HashMap;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +public class TripreimBurseMobEditPlugin extends AbstractMobBillPlugIn implements Plugin {
 | 
	
		
			
				|  |  | +    public static String btn_NOTICE = "donothing"; //操作
 | 
	
		
			
				|  |  | +    public static String btn_NOTICES = "bxdtc"; //操作标识
 | 
	
		
			
				|  |  | +    public static String nckd_agentparameterf1 = "nckd_agentparameterf1";//动因参数动态列表
 | 
	
		
			
				|  |  | +    private static String bos_org = "bos_org"; //组织
 | 
	
		
			
				|  |  | +    private static String er_expenseitemedit="er_expenseitemedit";//差旅报销单标识
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void afterDoOperation(AfterDoOperationEventArgs e) {
 | 
	
		
			
				|  |  | +        String operateKey = e.getOperateKey();
 | 
	
		
			
				|  |  | +        if (btn_NOTICES.equals(e.getOperateKey())) {
 | 
	
		
			
				|  |  | +            Object value = this.getModel().getValue("costcompany");//获取当前单据费用公司
 | 
	
		
			
				|  |  | +            DynamicObject entrycostcompanyWait = (DynamicObject)value;
 | 
	
		
			
				|  |  | +            String orgnumber = entrycostcompanyWait.getString("number");//公司编码
 | 
	
		
			
				|  |  | +            String orgid = entrycostcompanyWait.getString("id");//公司id
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            Object creator=this.getModel().getValue("creator");//获取当前创建人
 | 
	
		
			
				|  |  | +            Object costdept=this.getModel().getValue("costdept");//获取当前费用承担部门
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            DynamicObject creatorWait=(DynamicObject) creator;
 | 
	
		
			
				|  |  | +            DynamicObject costdeptWait=(DynamicObject) costdept;
 | 
	
		
			
				|  |  | +            String creatorNumber=creatorWait.getString("number");//创建人编码
 | 
	
		
			
				|  |  | +            String costdeptNumber=costdeptWait.getString("number");//费用承担部门编码
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (orgnumber == null){
 | 
	
		
			
				|  |  | +                throw new KDBizException("付费承担公司为空!");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +//            showParameter(nckd_agentparameterf1, btn_NOTICE,orgnumber,orgid,creatorNumber,costdeptNumber);//调用弹出页面
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            billShow(nckd_agentparameterf1,btn_NOTICE);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void closedCallBack(ClosedCallBackEvent e) {
 | 
	
		
			
				|  |  | +        super.closedCallBack(e);
 | 
	
		
			
				|  |  | +        if (StringUtils.equals(btn_NOTICE, e.getActionId()) && null != e.getReturnData()) {
 | 
	
		
			
				|  |  | +            //父页面返回参数
 | 
	
		
			
				|  |  | +            HashMap<String, String> returnData = (HashMap<String, String>) e.getReturnData();
 | 
	
		
			
				|  |  | +            String reJaStr = returnData.get("reJaStr");
 | 
	
		
			
				|  |  | +            //判断空
 | 
	
		
			
				|  |  | +            if (StringUtils.isNotBlank(reJaStr)) {
 | 
	
		
			
				|  |  | +                //删除分录信息
 | 
	
		
			
				|  |  | +                this.getModel().deleteEntryData("clearloanentry");
 | 
	
		
			
				|  |  | +                JSONArray reJa = JSONArray.parseArray(reJaStr);//返回信息数组
 | 
	
		
			
				|  |  | +                //循环返回数组插入分录
 | 
	
		
			
				|  |  | +                for(int i =0;i<reJa.size();i++){
 | 
	
		
			
				|  |  | +                    //当前循环行
 | 
	
		
			
				|  |  | +                    JSONObject reJo = reJa.getJSONObject(i);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    //获取费用承担部门
 | 
	
		
			
				|  |  | +                    String entrycostdept = reJo.getString("nckd_entrycostdept");
 | 
	
		
			
				|  |  | +                    QFilter entrycostdept_filter=new QFilter("number", QFilter.equals,entrycostdept);
 | 
	
		
			
				|  |  | +                    DynamicObject nckd_entrycostdept=BusinessDataServiceHelper.loadSingle(bos_org,"id,entrycostdept",new QFilter[]{entrycostdept_filter});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    //获取费用项目
 | 
	
		
			
				|  |  | +                    String expenseitem=reJo.getString("nckd_expenseitem");
 | 
	
		
			
				|  |  | +                    QFilter expenseitem_filter=new QFilter("number", QFilter.equals,expenseitem);
 | 
	
		
			
				|  |  | +                    DynamicObject nckd_expenseitem=BusinessDataServiceHelper.loadSingle(er_expenseitemedit,"id,expenseitem",new QFilter[]{expenseitem_filter});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    //申请金额
 | 
	
		
			
				|  |  | +                    BigDecimal expenseamount=reJo.getBigDecimal("nckd_expenseamount");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    //结算金额
 | 
	
		
			
				|  |  | +                    BigDecimal exporiusedamount=reJo.getBigDecimal("nckd_exporiusedamount");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    //未结算金额
 | 
	
		
			
				|  |  | +                    BigDecimal orgiexpebalanceamount=reJo.getBigDecimal("nckd_unexporiusedamount");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    //备注
 | 
	
		
			
				|  |  | +                    String remark=reJo.getString("nckd_remark");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    //借款单编号
 | 
	
		
			
				|  |  | +                    String loanbillno=reJo.getString("nckd_billno");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    //新增分录行
 | 
	
		
			
				|  |  | +                    int rowIndex = this.getModel().createNewEntryRow("nckd_clearloanentry");
 | 
	
		
			
				|  |  | +                    this.getModel().setValue("nckd_entrycostdept",nckd_entrycostdept,rowIndex);//费用承担部门
 | 
	
		
			
				|  |  | +                    this.getModel().setValue("nckd_expenseitem",nckd_expenseitem,rowIndex);//费用项目
 | 
	
		
			
				|  |  | +                    this.getModel().setValue("nckd_expenseamount",expenseamount,rowIndex);//申请金额
 | 
	
		
			
				|  |  | +                    this.getModel().setValue("nckd_exporiusedamount",exporiusedamount,rowIndex);//结算金额
 | 
	
		
			
				|  |  | +                    this.getModel().setValue("nckd_unexporiusedamount",orgiexpebalanceamount,rowIndex);//未结算金额
 | 
	
		
			
				|  |  | +                    this.getModel().setValue("nckd_remark",remark,rowIndex);//备注
 | 
	
		
			
				|  |  | +                    this.getModel().setValue("nckd_billno",loanbillno,rowIndex);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                //刷新分录
 | 
	
		
			
				|  |  | +                this.getView().updateView("nckd_clearloanentry");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    //弹窗
 | 
	
		
			
				|  |  | +    public void showParameter(String formId, String actionId,String orgnumber,String orgid,
 | 
	
		
			
				|  |  | +                              String creatorNumber,String costdeptNumber) {
 | 
	
		
			
				|  |  | +        //创建弹出页面对象,FormShowParameter表示弹出页面为动态表单
 | 
	
		
			
				|  |  | +        FormShowParameter ShowParameter = new FormShowParameter();
 | 
	
		
			
				|  |  | +        //ListShowParameter ShowParameter = new ListShowParameter();
 | 
	
		
			
				|  |  | +        ShowParameter.setCustomParam("orgnumber", orgnumber);
 | 
	
		
			
				|  |  | +        ShowParameter.setCustomParam("orgid", orgid);
 | 
	
		
			
				|  |  | +        ShowParameter.setCustomParam("creatorNumber",creatorNumber);
 | 
	
		
			
				|  |  | +        ShowParameter.setCustomParam("costdeptNumber",costdeptNumber);
 | 
	
		
			
				|  |  | +        //设置弹出页面的编码
 | 
	
		
			
				|  |  | +        ShowParameter.setFormId(formId);
 | 
	
		
			
				|  |  | +//        ShowParameter.setCaption();
 | 
	
		
			
				|  |  | +        //设置弹出页面标题
 | 
	
		
			
				|  |  | +        ShowParameter.setCaption("预付单选择");
 | 
	
		
			
				|  |  | +        //设置页面关闭回调方法
 | 
	
		
			
				|  |  | +        //CloseCallBack参数:回调插件,回调标识  btnok
 | 
	
		
			
				|  |  | +        ShowParameter.setCloseCallBack(new CloseCallBack(this, actionId));
 | 
	
		
			
				|  |  | +        //设置弹出页面打开方式,支持模态,新标签等
 | 
	
		
			
				|  |  | +        ShowParameter.getOpenStyle().setShowType(ShowType.Modal);
 | 
	
		
			
				|  |  | +        //弹出页面对象赋值给父页面
 | 
	
		
			
				|  |  | +        this.getView().showForm(ShowParameter);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public void billShow(String formId,Object pk)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        MobileBillShowParameter billShowParameter=new MobileBillShowParameter();
 | 
	
		
			
				|  |  | +        billShowParameter.getOpenStyle().setShowType(ShowType.Floating);
 | 
	
		
			
				|  |  | +        billShowParameter.setFormId(formId);
 | 
	
		
			
				|  |  | +        billShowParameter.setCloseCallBack(new CloseCallBack(this,formId));
 | 
	
		
			
				|  |  | +        billShowParameter.setPkId(pk);
 | 
	
		
			
				|  |  | +        getView().showForm(billShowParameter);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |