123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388 |
- package fi.em.formPlugin;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import kd.bos.dataentity.entity.DynamicObject;
- import kd.bos.dataentity.serialization.SerializationUtils;
- import kd.bos.exception.KDBizException;
- import kd.bos.form.control.Control;
- import kd.bos.form.control.EntryGrid;
- import kd.bos.form.events.AfterDoOperationEventArgs;
- import kd.bos.form.plugin.AbstractFormPlugin;
- 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.*;
- public class BusinessProcessingPlugin extends AbstractFormPlugin implements Plugin {
- private final static String KEY_OK = "btnok";//页面取消按钮标识
- private final static String KEY_CANCEL = "btncancel";//页面取消按钮标识
- private final static String KEY_SEARCH = "search";//动态表单查询按钮操作11
- private final static String FORMID_ENTRY = "nckd_entryentity";//动态表单单据体标识
- private static String nckd_agentparameter = "nckd_agentparameter";//动因参数基础资料
- /**
- * 页面点击事件
- *
- * @param evt
- */
- @Override
- public void click(EventObject evt) {
- super.click(evt);
- //获取被点击的控件对象
- Control source = (Control) evt.getSource();
- String pageId = this.getView().getPageId();
- if (StringUtils.equals(source.getKey(), KEY_OK)) {
- String listStr = this.getPageCache().get(pageId);
- if (StringUtils.isNotBlank(listStr)){
- JSONArray reJa = new JSONArray();
- EntryGrid entryGrid = this.getView().getControl(FORMID_ENTRY);
- int[] selectRows = entryGrid.getSelectRows();
- if (selectRows.length<=0){
- this.getView().showMessage("请先选择一条数据!");
- return;
- }
- JSONArray infoJa = SerializationUtils.fromJsonString(listStr, JSONArray.class);
- for(int i=0;i<selectRows.length;i++){
- JSONObject reJo = infoJa.getJSONObject(selectRows[i]);
- reJa.add(reJo);
- }
- HashMap<String, String> map = new HashMap<>();
- map.put("reJaStr", reJa.toJSONString());
- this.getView().returnDataToParent(map);
- }
- this.getView().close();
- } else if (StringUtils.equals(source.getKey(), KEY_CANCEL)) {
- //被点击控件为取消则设置返回值为空并关闭页面(在页面关闭回调方法中必须验证返回值不为空,否则会报空指针)
- this.getView().returnDataToParent(null);
- this.getView().close();
- } else {
- this.getView().returnDataToParent(null);
- this.getView().close();
- }
- }
- @Override
- public void registerListener(EventObject e) {
- super.registerListener(e);
- //页面确认按钮和取消按钮添加监听
- this.addClickListeners(KEY_OK, KEY_CANCEL);
- }
- @Override
- public void afterCreateNewData(EventObject e) {
- super.afterBindData(e);
- // DynamicObject period = (DynamicObject) this.getModel().getValue("nckd_typeagent");
- //获取父页面传入数据
- Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
- String payeenamev = (String) customParams.get("payeenamev");
- String controls = (String) customParams.get("controls");
- String billtype = (String) customParams.get("billtype");
- String orgnumber = (String) customParams.get("orgnumber");
- if (payeenamev == null || payeenamev.isEmpty()) {
- throw new KDBizException("收款处理付款人为空!");
- }
- if ("cysgzmx".equals(controls)) {
- List<JSONObject> resdate = new ArrayList<>();
- //历史数据清除1111
- this.getModel().deleteEntryData("nckd_entryentity");
- //构建查询应收挂账单参数
- QFilter nckd_orgamountFilter = new QFilter("unsettleamount", QCP.large_than, new BigDecimal(0));
- nckd_orgamountFilter.and("billstatus", QCP.equals, "C");
- nckd_orgamountFilter.and("payeename", QCP.like, payeenamev);
- nckd_orgamountFilter.and("unsettleamount", QCP.is_notnull, "");
- nckd_orgamountFilter.and("org.number", QCP.equals, orgnumber);
- DynamicObject[] nckd_cas_arbill = BusinessDataServiceHelper.load("nckd_cas_arbill", "id", new QFilter[]{nckd_orgamountFilter});
- for (int c = 0; c < nckd_cas_arbill.length; c++) {
- //当前单头
- DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(nckd_cas_arbill[c].getPkValue(), nckd_cas_arbill[c].getDynamicObjectType().getName());
- //单据编号
- String billno = dynamicObject.getString("billno");
- //应收挂账日期
- Date bizdate = dynamicObject.getDate("bizdate");
- Date expectdate = dynamicObject.getDate("expectdate");
- //应收挂账金额/冲销金额
- BigDecimal settleamount = dynamicObject.getBigDecimal("unsettleamount");
- for (DynamicObject entryentity : dynamicObject.getDynamicObjectCollection("entry")) {
- DynamicObject eMaterial = entryentity.getDynamicObject("e_material");//物料
- DynamicObject eExpenseitem = entryentity.getDynamicObject("e_expenseitem");//费用项目
- DynamicObject settleorg = entryentity.getDynamicObject("settleorg");//结算组织
- BigDecimal eActamt = entryentity.getBigDecimal("e_actamt");//实付金额
- DynamicObject costcenter = entryentity.getDynamicObject("costcenter");//成本中心
- DynamicObject productline = entryentity.getDynamicObject("productline");//产品线
- BigDecimal eDiscountamt = entryentity.getBigDecimal("e_discountamt");//现金折扣
- DynamicObject project = entryentity.getDynamicObject("project");//项目
- DynamicObject eFundflowitem = entryentity.getDynamicObject("e_fundflowitem");//资金用途
- String contractnumber = entryentity.getString("contractnumber");//合同
- int rowIndex = this.getModel().createNewEntryRow("nckd_entryentity");
- //赋值给新增分录
- this.getModel().setValue("nckd_cysnumber", billno, rowIndex);
- this.getModel().setValue("nckd_cysdata", bizdate, rowIndex);
- this.getModel().setValue("nckd_cysgzbalance", settleamount, rowIndex);
- this.getModel().setValue("nckd_cyscxbalance", settleamount, rowIndex);
- this.getModel().setValue("nckd_datefield", expectdate, rowIndex);
- QFilter nckd_cysfyxmFilter = new QFilter("name", QCP.equals,payeenamev);
- DynamicObject nckd_cyffyxm = BusinessDataServiceHelper.loadSingle("bd_supplier","id",new QFilter[] {nckd_cysfyxmFilter});
- this.getModel().setValue("nckd_e_fundflowitem", nckd_cyffyxm, rowIndex);
- //分录数据
- if (eMaterial != null) {
- this.getModel().setValue("nckd_materielfield", eMaterial, rowIndex);
- }
- if (eExpenseitem != null) {
- this.getModel().setValue("nckd_cysfyxm", eExpenseitem, rowIndex);
- }
- if (settleorg != null) {
- this.getModel().setValue("nckd_cyssection", settleorg, rowIndex);
- }
- if (eActamt != null) {
- this.getModel().setValue("nckd_cyssfje", eActamt, rowIndex);
- }
- if (costcenter != null) {
- this.getModel().setValue("nckd_costcenter", costcenter, rowIndex);
- }
- if (productline != null) {
- this.getModel().setValue("nckd_productline", productline, rowIndex);
- }
- if (eDiscountamt != null) {
- this.getModel().setValue("nckd_e_discountamt", eDiscountamt, rowIndex);
- }
- if (project != null) {
- this.getModel().setValue("nckd_project", project, rowIndex);
- }
- if (eFundflowitem != null) {
- this.getModel().setValue("nckd_e_fundflowitem", eFundflowitem, rowIndex);
- }
- if (contractnumber != null) {
- this.getModel().setValue("nckd_contractnumber", contractnumber, rowIndex);
- }
- //将选中的数据放到缓存中
- JSONObject obj = new JSONObject();
- obj.put("nckd_cysnumber", billno);
- obj.put("nckd_cysdata", bizdate);
- obj.put("expectdate", expectdate);
- if (settleorg != null) {
- obj.put("settleorg", settleorg.getString("number"));
- }
- if (eExpenseitem != null) {
- obj.put("nckd_cysfyxm", eExpenseitem.getString("number"));
- } else {
- obj.put("nckd_cysfyxm", "");
- }
- obj.put("nckd_cysgzbalance", settleamount);
- obj.put("controls", controls);
- obj.put("billtype", billtype);
- resdate.add(obj);
- }
- }
- String pageId = this.getView().getPageId();
- String listStr = SerializationUtils.toJsonString(resdate);
- this.getPageCache().put(pageId, listStr);
- } else if ("cyfgzmx".equals(controls)) {
- List<JSONObject> resdate = new ArrayList<>();
- //历史数据清除
- this.getModel().deleteEntryData("nckd_entryentity");
- //构建查询应收挂账单参数
- QFilter nckd_orgamountFilter = new QFilter("asstact.number", QCP.equals, payeenamev);
- nckd_orgamountFilter.and("billstatus", QCP.equals, "C");
- nckd_orgamountFilter.and("unsettleamount", QCP.large_than, new BigDecimal(0));
- nckd_orgamountFilter.and("unsettleamount", QCP.is_notnull, "");
- nckd_orgamountFilter.and("org.number", QCP.equals, orgnumber);
- DynamicObject[] nckd_cas_arbill = BusinessDataServiceHelper.load("ap_finapbill", "id", new QFilter[]{nckd_orgamountFilter});
- for (int c = 0; c < nckd_cas_arbill.length; c++) {
- //当前单头
- DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(nckd_cas_arbill[c].getPkValue(), nckd_cas_arbill[c].getDynamicObjectType().getName());
- //单据编号
- String billno = dynamicObject.getString("billno");
- //应收挂账日期
- Date bizdate = dynamicObject.getDate("bizdate");
- Date duedate = dynamicObject.getDate("duedate");
- DynamicObject org = dynamicObject.getDynamicObject("org");
- long id = dynamicObject.getLong("id");
- //应收挂账金额/冲销金额
- BigDecimal settleamount = dynamicObject.getBigDecimal("unsettleamount");
- for (DynamicObject entryentity : dynamicObject.getDynamicObjectCollection("detailentry")) {
- DynamicObject material = entryentity.getDynamicObject("material");
- String spectype = entryentity.getString("spectype");
- DynamicObject expenseitem = entryentity.getDynamicObject("expenseitem");
- DynamicObject measureunit = entryentity.getDynamicObject("measureunit");
- BigDecimal quantity = entryentity.getBigDecimal("quantity");
- BigDecimal price = entryentity.getBigDecimal("price");
- DynamicObject taxrateid = entryentity.getDynamicObject("taxrateid");
- String discountmode = entryentity.getString("discountmode");
- int rowIndex = this.getModel().createNewEntryRow("nckd_entryentity");
- //赋值给新增分录
- this.getModel().setValue("nckd_cyfnumber", billno, rowIndex);
- this.getModel().setValue("nckd_cyfdata", bizdate, rowIndex);
- this.getModel().setValue("nckd_datefield", duedate, rowIndex);
- this.getModel().setValue("nckd_cyforg", org, rowIndex);
- this.getModel().setValue("nckd_cyfgzbalance", settleamount, rowIndex);
- this.getModel().setValue("nckd_cyfcxbalance", settleamount, rowIndex);
- this.getModel().setValue("nckd_billid", id, rowIndex);
- QFilter nckd_cysfyxmFilter = new QFilter("number", QCP.equals,payeenamev);
- DynamicObject nckd_cyffyxm = BusinessDataServiceHelper.loadSingle("bd_supplier","id",new QFilter[] {nckd_cysfyxmFilter});
- this.getModel().setValue("nckd_basedatafield", nckd_cyffyxm, rowIndex);
- //分录字段
- if (material != null) {
- this.getModel().setValue("nckd_materielfield", material, rowIndex);
- }
- this.getModel().setValue("nckd_spectype", spectype, rowIndex);
- if (expenseitem != null) {
- this.getModel().setValue("nckd_expenseitem", expenseitem, rowIndex);
- }
- if (measureunit != null) {
- this.getModel().setValue("nckd_measureunit", measureunit, rowIndex);
- }
- this.getModel().setValue("nckd_quantity", quantity, rowIndex);
- this.getModel().setValue("nckd_price", price, rowIndex);
- if (taxrateid != null) {
- this.getModel().setValue("nckd_taxrateid", taxrateid, rowIndex);
- }
- this.getModel().setValue("nckd_discountmode", discountmode, rowIndex);
- //将选中的数据放到缓存中
- JSONObject obj = new JSONObject();
- obj.put("nckd_cyfnumber", billno);
- obj.put("nckd_cyfwldw", "");
- obj.put("nckd_cyfdata", bizdate);
- obj.put("duedate", duedate);
- obj.put("id", id);
- obj.put("nckd_cyfgzbalance", settleamount);
- obj.put("settleorg", org.getString("number"));
- if (expenseitem != null) {
- obj.put("nckd_cyffyxm", expenseitem.getString("number"));
- } else {
- obj.put("nckd_cyffyxm", "");
- }
- obj.put("controls", controls);
- obj.put("billtype", billtype);
- resdate.add(obj);
- }
- }
- String pageId = this.getView().getPageId();
- String listStr = SerializationUtils.toJsonString(resdate);
- this.getPageCache().put(pageId, listStr);
- } else if ("pzht".equals(controls)) {
- List<JSONObject> resdate = new ArrayList<>();
- //历史数据清除
- this.getModel().deleteEntryData("nckd_entryentity");
- //构建查询应收挂账单参数
- QFilter nckd_orgamountFilter = new QFilter("org.number", QCP.equals,orgnumber);
- nckd_orgamountFilter.and("status", QCP.equals, "C");
- nckd_orgamountFilter.and("nckd_amountfield1", QCP.large_than,0);
- nckd_orgamountFilter.and("leaser.number", QCP.equals, payeenamev);
- DynamicObject[] fa_lease_contract = BusinessDataServiceHelper.load("fa_lease_contract", "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());
- //核算组织
- DynamicObject org = dynamicObject.getDynamicObject("org");
- //合同号
- String number = dynamicObject.getString("number");
- //合同名称
- String name = dynamicObject.getString("name");
- //承租方
- DynamicObject leaser = dynamicObject.getDynamicObject("leaser");
- //资产名称
- String assetname = dynamicObject.getString("assetname");
- //合同签订日期
- Date contrsigndate = dynamicObject.getDate("contrsigndate");
- //收款余额/冲销金额
- BigDecimal nckdAmountfield1 = dynamicObject.getBigDecimal("nckd_amountfield1");
- int rowIndex = this.getModel().createNewEntryRow("nckd_entryentity");
- //赋值给新增分录
- this.getModel().setValue("nckd_pzhtorg", org, rowIndex);
- this.getModel().setValue("nckd_pzhthth", number, rowIndex);
- this.getModel().setValue("nckd_pzhtname", name, rowIndex);
- this.getModel().setValue("nckd_pzhtczf", leaser, rowIndex);
- this.getModel().setValue("nckd_pzhtzcname", assetname, rowIndex);
- this.getModel().setValue("nckd_ppzhtdata", contrsigndate, rowIndex);
- this.getModel().setValue("nckd_pzhtskbalance", nckdAmountfield1, rowIndex);
- this.getModel().setValue("nckd_pzhtcxbalance", nckdAmountfield1, rowIndex);
- //将选中的数据放到缓存中
- JSONObject obj = new JSONObject();
- obj.put("nckd_pzhtorg", org.getString("number"));
- obj.put("nckd_pzhthth", number);
- obj.put("nckd_pzhtname", name);
- obj.put("nckd_pzhtczf", leaser.getString("number"));
- obj.put("nckd_pzhtzcname", assetname);
- obj.put("nckd_ppzhtdata", contrsigndate);
- obj.put("nckd_pzhtskbalance", nckdAmountfield1);
- obj.put("nckd_pzhtcxbalance", nckdAmountfield1);
- obj.put("controls", controls);
- obj.put("billtype", billtype);
- resdate.add(obj);
- }
- String pageId = this.getView().getPageId();
- String listStr = SerializationUtils.toJsonString(resdate);
- this.getPageCache().put(pageId, listStr);
- } else if ("skskzh".equals(controls)) {
- List<JSONObject> resdate = new ArrayList<>();
- //历史数据清除
- this.getModel().deleteEntryData("nckd_entryentity");
- //构建查询供应商参数
- QFilter nckd_orgamountFilter = new QFilter("number", QCP.equals, payeenamev);
- 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");
- String accountname = entryentity.getString("accountname");
- int rowIndex = this.getModel().createNewEntryRow("nckd_entryentity");
- //赋值给新增分录
- this.getModel().setValue("nckd_bankaccount", bankaccount, rowIndex);
- this.getModel().setValue("nckd_accountname", accountname, rowIndex);
- //将选中的数据放到缓存中
- JSONObject obj = new JSONObject();
- obj.put("nckd_bankaccount", bankaccount);
- obj.put("nckd_accountname", accountname);
- obj.put("controls", controls);
- obj.put("billtype", billtype);
- resdate.add(obj);
- }
- String pageId = this.getView().getPageId();
- String listStr = SerializationUtils.toJsonString(resdate);
- this.getPageCache().put(pageId, listStr);
- }
- }else if ("fkfkzh".equals(controls)) {
- List<JSONObject> resdate = new ArrayList<>();
- //历史数据清除
- this.getModel().deleteEntryData("nckd_entryentity");
- //构建查询供应商参数
- QFilter nckd_orgamountFilter = new QFilter("number", QCP.equals, payeenamev);
- 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");
- String accountname = entryentity.getString("accountname");
- int rowIndex = this.getModel().createNewEntryRow("nckd_entryentity");
- //赋值给新增分录
- this.getModel().setValue("nckd_bankaccount", bankaccount, rowIndex);
- this.getModel().setValue("nckd_accountname", accountname, rowIndex);
- //将选中的数据放到缓存中
- JSONObject obj = new JSONObject();
- obj.put("nckd_bankaccount", bankaccount);
- obj.put("nckd_accountname", accountname);
- obj.put("controls", controls);
- obj.put("billtype", billtype);
- resdate.add(obj);
- }
- String pageId = this.getView().getPageId();
- String listStr = SerializationUtils.toJsonString(resdate);
- this.getPageCache().put(pageId, listStr);
- }
- }
- }
- }
|