package fi.em.formPlugin; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; 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.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.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.sdk.plugin.Plugin; import org.apache.commons.lang3.StringUtils; import java.math.BigDecimal; import java.util.Date; import java.util.HashMap; public class BusinessProcessingEditPlugin extends AbstractListPlugin implements Plugin { public static String btn_cysgzmx = "cysgzmx"; //冲应收挂账 public static String btn_cyfgzmx = "cyfgzmx"; //冲应付挂账 public static String btn_pzht = "pzht"; //凭租合同 public static String btn_skskzh = "skskzh"; //收款供应商11 public static String btn_fkfkzh = "fkfkzh"; //付款供应商 public static String nckd_agentparameterf7 = "nckd_ywclskf";//动态列表 private static String bos_org = "bos_org"; //组织金额标识 @Override public void afterDoOperation(AfterDoOperationEventArgs e) { String operateKey = e.getOperateKey(); if (btn_cysgzmx.equals(e.getOperateKey())) { Object value = this.getModel().getValue("nckd_payeenamev");//获取当前单据付款人 Object nckd_orgv = this.getModel().getValue("nckd_orgv");//获取当前单据付款人 DynamicObject dynamicObject = (DynamicObject) value; DynamicObject orgv = (DynamicObject) nckd_orgv; if (dynamicObject == null) { throw new KDBizException("收款信息付款人为空!"); } if (orgv == null) { throw new KDBizException("收款信息收款人为空!"); } String payeenamev = dynamicObject.getString("name");//当前单据付款供应商 String orgnumber = orgv.getString("number"); nckd_agentparameterf7 = "nckd_cysgzmxf7"; showParameter(nckd_agentparameterf7, btn_cysgzmx, payeenamev, btn_cysgzmx, orgnumber);//调用弹出页面 } else if (btn_cyfgzmx.equals(e.getOperateKey())) { Object value = this.getModel().getValue("nckd_payeenamevs");//获取当前单据付款人 Object nckd_orgvs = this.getModel().getValue("nckd_orgvs");//获取当前单据收款人 DynamicObject dynamicObject = (DynamicObject) value; DynamicObject orgvs = (DynamicObject) nckd_orgvs; if (dynamicObject == null) { throw new KDBizException("付款信息收款人为空!"); } if (orgvs == null) { throw new KDBizException("付款信息付款人为空!"); } String payeenamev = dynamicObject.getString("number");//当前单据付款供应商编码 String orgnumber = orgvs.getString("number"); nckd_agentparameterf7 = "nckd_cyfgzmxf7"; showParameter(nckd_agentparameterf7, btn_cyfgzmx, payeenamev, btn_cyfgzmx, orgnumber);//调用弹出页面 } else if (btn_pzht.equals(e.getOperateKey())) { Object value = this.getModel().getValue("nckd_orgv");//获取当前单据核算组织 Object nckd_payeenamevs = this.getModel().getValue("nckd_payeenamev");//获取当前单据付款人 DynamicObject dynamicObject = (DynamicObject) value; DynamicObject payeenamevs = (DynamicObject) nckd_payeenamevs; if (dynamicObject == null) { throw new KDBizException("收款信息收款人为空!"); } if (payeenamevs == null) { throw new KDBizException("收款信息付款人为空!"); } String payeenamev = dynamicObject.getString("number");//当前单据付款供应商编码 String nckdpayeenamevs = payeenamevs.getString("number");//当前单据付款供应商编码 nckd_agentparameterf7 = "nckd_pzhtf7"; showParameter(nckd_agentparameterf7, btn_pzht, nckdpayeenamevs, btn_pzht, payeenamev);//调用弹出页面 } else if (btn_skskzh.equals(e.getOperateKey())) { Object value = this.getModel().getValue("nckd_payeenamev");//获取当前收款信息付款人 DynamicObject dynamicObject = (DynamicObject) value; if (dynamicObject == null) { throw new KDBizException("收款信息付款人为空!"); } String payeenamev = dynamicObject.getString("number");//当前单据付款供应商编码 nckd_agentparameterf7 = "nckd_supplierbank"; showParameter(nckd_agentparameterf7, btn_skskzh, payeenamev, btn_skskzh, "");//调用弹出页面 } else if (btn_fkfkzh.equals(e.getOperateKey())) { Object value = this.getModel().getValue("nckd_payeenamevs");//获取当前付款信息付款人 DynamicObject dynamicObject = (DynamicObject) value; if (dynamicObject == null) { throw new KDBizException("付款信息收款人为空!"); } String payeenamev = dynamicObject.getString("number");//当前单据付款供应商编码 nckd_agentparameterf7 = "nckd_supplierbank"; showParameter(nckd_agentparameterf7, btn_fkfkzh, payeenamev, btn_fkfkzh, "");//调用弹出页面 } } public void showParameter(String formId, String actionId, String payeenamev, String controls, String orgnumber) { //创建弹出页面对象,FormShowParameter表示弹出页面为动态表单 FormShowParameter ShowParameter = new FormShowParameter(); //ListShowParameter ShowParameter = new ListShowParameter(); ShowParameter.setCustomParam("payeenamev", payeenamev); ShowParameter.setCustomParam("controls", controls); ShowParameter.setCustomParam("billtype", formId); ShowParameter.setCustomParam("orgnumber", orgnumber); //设置弹出页面的编码 ShowParameter.setFormId(formId); // ShowParameter.setCaption(); //设置弹出页面标题 if ("cysgzmx".equals(actionId)) { ShowParameter.setCaption("冲应收挂账"); } else if ("cyfgzmx".equals(actionId)) { ShowParameter.setCaption("冲应付挂账"); } //设置页面关闭回调方法 //CloseCallBack参数:回调插件,回调标识 btnok ShowParameter.setCloseCallBack(new CloseCallBack(this, actionId)); //设置弹出页面打开方式,支持模态,新标签等 ShowParameter.getOpenStyle().setShowType(ShowType.Modal); //弹出页面对象赋值给父页面 this.getView().showForm(ShowParameter); } @Override public void closedCallBack(ClosedCallBackEvent e) { super.closedCallBack(e); if (null != e.getReturnData()) { String billtype = ""; String controls = ""; //父页面返回参数 HashMap returnData = (HashMap) e.getReturnData(); String reJaStr = returnData.get("reJaStr"); //判断空 if (StringUtils.isNotBlank(reJaStr)) { JSONArray reJa = JSONArray.parseArray(reJaStr);//返回信息数组 JSONObject reJos = reJa.getJSONObject(0); billtype = reJos.getString("billtype"); controls = reJos.getString("controls"); //删除分录信息 if (btn_cysgzmx.equals(controls)) { this.getModel().deleteEntryData("nckd_entryentity1"); } else if (btn_cyfgzmx.equals(controls)) { this.getModel().deleteEntryData("nckd_entryentity2"); } else if (btn_pzht.equals(controls)) { this.getModel().deleteEntryData("nckd_entryentity3"); } //循环返回数组插入分录 for (int i = 0; i < reJa.size(); i++) { //当前循环行 JSONObject reJo = reJa.getJSONObject(i); billtype = reJo.getString("billtype"); controls = reJo.getString("controls"); if (btn_cysgzmx.equals(controls)) { String billno = reJo.getString("nckd_cysnumber"); String cysfyxm = reJo.getString("nckd_cysfyxm"); String settleorg = reJo.getString("settleorg"); String expectdate = reJo.getString("expectdate"); QFilter nckd_cysfyxmFilter = new QFilter("number", QCP.equals, cysfyxm); DynamicObject nckd_cysfyxm = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "id", new QFilter[]{nckd_cysfyxmFilter}); Date bizdate = reJo.getDate("nckd_cysdata"); BigDecimal settleamount = reJo.getBigDecimal("nckd_cysgzbalance"); //新增分录行 int rowIndex = this.getModel().createNewEntryRow("nckd_entryentity1"); //set分录字段 this.getModel().setValue("nckd_cysnumber", billno, rowIndex); QFilter nckd_orgamountFilter = new QFilter("number", QCP.equals, settleorg); nckd_orgamountFilter.and("enable", QCP.equals, "1"); DynamicObject nckd_org = BusinessDataServiceHelper.loadSingle(bos_org, "id", new QFilter[]{nckd_orgamountFilter}); this.getModel().setValue("nckd_cysorg", nckd_org, rowIndex); Object nckd_costdept = this.getModel().getValue("nckd_costdept");//获取当前单据付款人 DynamicObject costdept = (DynamicObject) nckd_costdept; this.getModel().setValue("nckd_cyssection", costdept, rowIndex); Object value = this.getModel().getValue("nckd_payeenamev");//获取当前单据付款人 DynamicObject dynamicObject = (DynamicObject) value; this.getModel().setValue("nckd_cyswldw", dynamicObject, rowIndex); this.getModel().setValue("nckd_datefield", expectdate, rowIndex); this.getModel().setValue("nckd_cysdata", bizdate, rowIndex); this.getModel().setValue("nckd_cysgzbalance", settleamount, rowIndex); this.getModel().setValue("nckd_cyscxbalance", settleamount, rowIndex); if (cysfyxm != null && !cysfyxm.isEmpty()) { this.getModel().setValue("nckd_cysfyxm", nckd_cysfyxm, rowIndex); } String cysgzbalance = this.getModel().getValue("nckd_ysgzjehj").toString(); BigDecimal bigDecimal = new BigDecimal(cysgzbalance); this.getModel().setValue("nckd_ysgzjehj", bigDecimal.add(settleamount), 0); } else if (btn_pzht.equals(controls)) { //核算组织 String pzhtorg = reJo.getString("nckd_pzhtorg"); QFilter nckd_orgamountFilter = new QFilter("number", QCP.equals, pzhtorg); nckd_orgamountFilter.and("enable", QCP.equals, "1"); DynamicObject nckd_pzhtorg = BusinessDataServiceHelper.loadSingle(bos_org, "id", new QFilter[]{nckd_orgamountFilter}); //合同号 String pzhthth = reJo.getString("nckd_pzhthth"); //合同名称 String pzhtname = reJo.getString("nckd_pzhtname"); //承租方 String pzhtczf = reJo.getString("nckd_pzhtczf"); QFilter nckd_pzhtczfFilter = new QFilter("number", QCP.equals, pzhtczf); DynamicObject nckd_pzhtczf = BusinessDataServiceHelper.loadSingle("bd_supplier", "id", new QFilter[]{nckd_pzhtczfFilter}); //资产名称 String pzhtzcname = reJo.getString("nckd_pzhtzcname"); //合同签订日期 Date bizdate = reJo.getDate("nckd_ppzhtdata"); //收款余额 BigDecimal pzhtskbalance = reJo.getBigDecimal("nckd_pzhtskbalance"); //冲销余额 BigDecimal pzhtcxbalance = reJo.getBigDecimal("nckd_pzhtcxbalance"); //新增分录行 int rowIndex = this.getModel().createNewEntryRow("nckd_entryentity3"); //set分录字段 this.getModel().setValue("nckd_pzhtorg", nckd_pzhtorg, rowIndex); this.getModel().setValue("nckd_pzhthth", pzhthth, rowIndex); this.getModel().setValue("nckd_pzhtname", pzhtname, rowIndex); this.getModel().setValue("nckd_pzhtczf", nckd_pzhtczf, rowIndex); this.getModel().setValue("nckd_pzhtzcname", pzhtzcname, rowIndex); this.getModel().setValue("nckd_ppzhtdata", bizdate, rowIndex); this.getModel().setValue("nckd_pzhtskbalance", pzhtskbalance, rowIndex); this.getModel().setValue("nckd_pzhtcxbalance", pzhtcxbalance, rowIndex); } else if (btn_cyfgzmx.equals(controls)) { String billno = reJo.getString("nckd_cyfnumber"); Date bizdate = reJo.getDate("nckd_cyfdata"); String nckdCyffyxm = reJo.getString("nckd_cyffyxm"); String settleorg = reJo.getString("settleorg"); String duedate = reJo.getString("duedate"); Long id = reJo.getLong("id"); QFilter nckd_cysfyxmFilter = new QFilter("number", QCP.equals, nckdCyffyxm); DynamicObject nckd_cyffyxm = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "id", new QFilter[]{nckd_cysfyxmFilter}); BigDecimal settleamount = reJo.getBigDecimal("nckd_cyfgzbalance"); //新增分录行 int rowIndex = this.getModel().createNewEntryRow("nckd_entryentity2"); //set分录字段 this.getModel().setValue("nckd_cyfnumber", billno, rowIndex); QFilter nckd_orgamountFilter = new QFilter("number", QCP.equals, settleorg); nckd_orgamountFilter.and("enable", QCP.equals, "1"); DynamicObject nckd_org = BusinessDataServiceHelper.loadSingle(bos_org, "id", new QFilter[]{nckd_orgamountFilter}); this.getModel().setValue("nckd_cyforg", nckd_org, rowIndex); Object value = this.getModel().getValue("nckd_payeenamevs");//获取当前单据付款人 DynamicObject dynamicObjects = (DynamicObject) value; this.getModel().setValue("nckd_cyfwldw", dynamicObjects, rowIndex); this.getModel().setValue("nckd_cyfdata", bizdate, rowIndex); this.getModel().setValue("nckd_bigintfield", id, rowIndex); this.getModel().setValue("nckd_datefield1", duedate, rowIndex); this.getModel().setValue("nckd_cyfgzbalance", settleamount, rowIndex); this.getModel().setValue("nckd_cyfcxbalance", settleamount, rowIndex); if (nckdCyffyxm != null && !nckdCyffyxm.isEmpty()) { this.getModel().setValue("nckd_cyffyxm", nckd_cyffyxm, rowIndex); } String cysgzbalance = this.getModel().getValue("nckd_yfgzjehj").toString(); BigDecimal bigDecimal = new BigDecimal(cysgzbalance); this.getModel().setValue("nckd_yfgzjehj", bigDecimal.add(settleamount), 0); } else if (btn_skskzh.equals(controls)) { String nckd_bankaccount = reJo.getString("nckd_bankaccount"); String nckd_accountname = reJo.getString("nckd_accountname"); this.getModel().setValue("nckd_payeebanknumlb", nckd_bankaccount); this.getModel().setValue("nckd_payeebanknamelb", nckd_accountname); } else if (btn_fkfkzh.equals(controls)) { String nckd_bankaccount = reJo.getString("nckd_bankaccount"); String nckd_accountname = reJo.getString("nckd_accountname"); this.getModel().setValue("nckd_payeebanknumlbs", nckd_bankaccount); this.getModel().setValue("nckd_payeebanknamelbs", nckd_accountname); this.getView().updateView("nckd_payeebanknumlbs"); this.getView().updateView("nckd_payeebanknamelbs"); } } //刷新分录 this.getView().updateView("nckd_entryentity1"); //刷新分录 this.getView().updateView("nckd_entryentity2"); //刷新分录 this.getView().updateView("nckd_entryentity3"); } } } @Override public void propertyChanged(PropertyChangedArgs e) { super.beforePropertyChanged(e); String name = e.getProperty().getName();//获取字段标识 if ("nckd_payeraccbanknum".equals(name)) { ChangeData[] changeSet = e.getChangeSet();//获取值 for (ChangeData changeData : changeSet) { int rowIndex = changeData.getRowIndex(); Object newValue = changeData.getNewValue(); Object oldValue = changeData.getOldValue(); DynamicObject payeenamevs = (DynamicObject) newValue; DynamicObject bank = payeenamevs.getDynamicObject("bank"); this.getModel().setValue("nckd_payerbank", bank, rowIndex); } } else if ("nckd_payeeaccbanknum".equals(name)) { ChangeData[] changeSet = e.getChangeSet();//获取值 for (ChangeData changeData : changeSet) { int rowIndex = changeData.getRowIndex(); Object newValue = changeData.getNewValue(); Object oldValue = changeData.getOldValue(); DynamicObject payeenamevs = (DynamicObject) newValue; DynamicObject bank = payeenamevs.getDynamicObject("bank"); this.getModel().setValue("nckd_payeebank", bank, rowIndex); } }else if ("nckd_payeenamev".equals(name)) { ChangeData[] changeSet = e.getChangeSet();//获取值 for (ChangeData changeData : changeSet) { int rowIndex = changeData.getRowIndex(); Object newValue = changeData.getNewValue(); Object oldValue = changeData.getOldValue(); DynamicObject payeenamevs = (DynamicObject) newValue; //构建查询供应商参数 QFilter nckd_orgamountFilter = new QFilter("number", QCP.equals, payeenamevs.getString("number")); DynamicObject[] fa_lease_contract = BusinessDataServiceHelper.load("bd_supplier", "id", new QFilter[]{nckd_orgamountFilter}); for (int c = 0; c < fa_lease_contract.length; c++) { //当前单头 DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(fa_lease_contract[c].getPkValue(), fa_lease_contract[c].getDynamicObjectType().getName()); for (DynamicObject entryentity : dynamicObject.getDynamicObjectCollection("entry_bank")) { String bankaccount = entryentity.getString("bankaccount"); DynamicObject bank = entryentity.getDynamicObject("bank"); boolean nckdIsdefaultBank = entryentity.getBoolean("isdefault_bank"); if(nckdIsdefaultBank){ QFilter banks = new QFilter("nckd_bankaccount", QCP.equals, bankaccount); DynamicObject nckd_bank = BusinessDataServiceHelper.loadSingle("nckd_supplierbankinfor", "id", new QFilter[]{banks}); this.getModel().setValue("nckd_payeebanknumlb", nckd_bank); this.getView().updateView("nckd_payeebanknumlb"); } } } } }else if ("nckd_payeenamevs".equals(name)) { ChangeData[] changeSet = e.getChangeSet();//获取值 for (ChangeData changeData : changeSet) { int rowIndex = changeData.getRowIndex(); Object newValue = changeData.getNewValue(); Object oldValue = changeData.getOldValue(); DynamicObject payeenamevs = (DynamicObject) newValue; //构建查询供应商参数 QFilter nckd_orgamountFilter = new QFilter("number", QCP.equals, payeenamevs.getString("number")); DynamicObject[] fa_lease_contract = BusinessDataServiceHelper.load("bd_supplier", "id", new QFilter[]{nckd_orgamountFilter}); for (int c = 0; c < fa_lease_contract.length; c++) { //当前单头 DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(fa_lease_contract[c].getPkValue(), fa_lease_contract[c].getDynamicObjectType().getName()); for (DynamicObject entryentity : dynamicObject.getDynamicObjectCollection("entry_bank")) { String bankaccount = entryentity.getString("bankaccount"); DynamicObject bank = entryentity.getDynamicObject("bank"); boolean nckdIsdefaultBank = entryentity.getBoolean("isdefault_bank"); if(nckdIsdefaultBank){ QFilter banks = new QFilter("nckd_bankaccount", QCP.equals, bankaccount); banks.and("nckd_isdefault_bank", QCP.equals, "1"); DynamicObject nckd_bank = BusinessDataServiceHelper.loadSingle("nckd_supplierbankinfor", "id", new QFilter[]{banks}); this.getModel().setValue("nckd_payeebanknumlbs", nckd_bank); this.getView().updateView("nckd_payeebanknumlbs"); } } } } } } }