package tqq9.lc123.cloud.app.plugin.form.conm; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import kd.bos.bill.AbstractBillPlugIn; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.utils.StringUtils; import kd.bos.entity.datamodel.IDataModel; import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.form.FormShowParameter; import kd.bos.form.events.AfterDoOperationEventArgs; import kd.bos.form.field.MulBasedataEdit; import kd.bos.form.field.events.BeforeF7SelectEvent; import kd.bos.form.field.events.BeforeF7SelectListener; 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 java.math.BigDecimal; import java.time.LocalDate; import java.util.*; /** * 返利规则表单插件 * 同步采购合同信息 */ public class RebateRulesBillPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener { private final static Log logger = LogFactory.getLog(RebateRulesBillPlugin.class); @Override public void registerListener(EventObject e) { super.registerListener(e); this.addItemClickListeners("tbmain"); MulBasedataEdit tqq9_exclunopur = this.getControl("tqq9_exclunopur");//排除时间段不排除订单 MulBasedataEdit tqq9_exclupur = this.getControl("tqq9_exclupur");//排除采购订单 MulBasedataEdit tqq9_purchaseorder = this.getControl("tqq9_purchaseorder");//指定采购订单 tqq9_exclunopur.addBeforeF7SelectListener(this); tqq9_exclupur.addBeforeF7SelectListener(this); tqq9_purchaseorder.addBeforeF7SelectListener(this); } @Override public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) { String name = beforeF7SelectEvent.getProperty().getName(); IDataModel model = this.getModel(); String tqq9_excludnum = model.getDataEntity().getString("tqq9_excludnum");//排除后基数 DynamicObjectCollection tqq9_supplier = model.getDataEntity(true).getDynamicObjectCollection("tqq9_supplier");//供应商 Set numbers = new HashSet(); for (DynamicObject dynamicObject : tqq9_supplier) { DynamicObject fbasedataid = dynamicObject.getDynamicObject("fbasedataid"); String number = fbasedataid.getString("number"); numbers.add(number); } //排除时间段不排除订单 if (StringUtils.equals(name, "tqq9_exclunopur") && StringUtils.equals("1", tqq9_excludnum)) { Date tqq9_startexcludate = model.getDataEntity().getDate("tqq9_startexcludate");//排除开始时间段 Date tqq9_endexcludate = model.getDataEntity().getDate("tqq9_endexcludate");//排除结束时间段 if (tqq9_startexcludate == null || tqq9_endexcludate == null) { beforeF7SelectEvent.setCancel(true); this.getView().showMessage("请先填写排除时间段"); } else { ListShowParameter param = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); QFilter qF1 = new QFilter("biztime", QCP.large_equals, tqq9_startexcludate); QFilter qF2 = new QFilter("biztime", QCP.less_equals, tqq9_endexcludate); QFilter qF3 = new QFilter("supplier.number", QCP.in, numbers); param.getListFilterParameter().getQFilters().add(qF1.and(qF2).and(qF3)); } } //排除采购订单 if (StringUtils.equals(name, "tqq9_exclupur") && StringUtils.equals("1", tqq9_excludnum)) { Date tqq9_startdate = model.getDataEntity().getDate("tqq9_startdate");//返利开始时间段 Date tqq9_enddate = model.getDataEntity().getDate("tqq9_enddate");//返利结束时间段 if (tqq9_startdate == null || tqq9_enddate == null) { beforeF7SelectEvent.setCancel(true); this.getView().showMessage("请先填写排除时间段"); } else { ListShowParameter param = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); QFilter qF1 = new QFilter("biztime", QCP.large_equals, tqq9_startdate); QFilter qF2 = new QFilter("biztime", QCP.less_equals, tqq9_enddate); QFilter qF3 = new QFilter("supplier.number", QCP.in, numbers); param.getListFilterParameter().getQFilters().add((qF1.or(qF2)).and(qF3)); } } //指定采购订单 if (StringUtils.equals(name, "tqq9_purchaseorder")) { Date tqq9_startdate = model.getDataEntity().getDate("tqq9_startdate");//返利开始时间段 Date tqq9_enddate = model.getDataEntity().getDate("tqq9_enddate");//返利结束时间段 if (tqq9_startdate == null || tqq9_enddate == null) { beforeF7SelectEvent.setCancel(true); this.getView().showMessage("请先填写返利时间段"); } else { ListShowParameter param = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); QFilter qF1 = new QFilter("biztime", QCP.large_equals, tqq9_startdate); QFilter qF2 = new QFilter("biztime", QCP.less_equals, tqq9_enddate); QFilter qF3 = new QFilter("supplier.number", QCP.in, numbers); QFilter qF4 = new QFilter("tqq9_tsgz", QCP.equals, false);//非特殊规则 param.getListFilterParameter().getQFilters().add(qF1.or(qF2).and(qF3).and(qF4)); } } } @Override public void propertyChanged(PropertyChangedArgs e) { super.propertyChanged(e); String name = e.getProperty().getName(); DynamicObject dataEntity = this.getModel().getDataEntity(); String tqq9_rebatesub = dataEntity.getString("tqq9_rebatesub"); ChangeData[] changeSet = e.getChangeSet(); Object newValueObj = changeSet[0].getNewValue(); Object oldValueObj = changeSet[0].getOldValue(); if (StringUtils.equals("0", tqq9_rebatesub)) { if (StringUtils.equals("tqq9_shanghailici", name)) { StringBuilder companyBulider = new StringBuilder(); Boolean tqq9_shanghailici = (Boolean) e.getChangeSet()[0].getNewValue(); Boolean tqq9_beijinglichi = dataEntity.getBoolean("tqq9_beijinglichi"); Boolean tqq9_guangzhoulici = dataEntity.getBoolean("tqq9_guangzhoulici"); if (tqq9_shanghailici) { companyBulider.append("SH").append(","); } if (tqq9_beijinglichi) { companyBulider.append("BJ").append(","); } if (tqq9_guangzhoulici) { companyBulider.append("GZ").append(","); } if (companyBulider != null && companyBulider.length() > 0) { companyBulider.deleteCharAt(companyBulider.length() - 1); } String ruleName = getModel().getValue("name").toString(); String[] split = ruleName.split("-"); StringBuilder newName = new StringBuilder(); for (int i = 0; i < split.length; i++) { if (i == 1) { if (StringUtils.isNotBlank(companyBulider)) { newName.append(companyBulider).append("-"); } if (!split[i].contains("SH") && !split[i].contains("BJ") && !split[i].contains("GZ")) { newName.append(split[i]).append("-"); } } else { newName.append(split[i]).append("-"); } } getModel().setValue("name", newName.toString()); } else if (StringUtils.equals("tqq9_beijinglichi", name)) { StringBuilder companyBulider = new StringBuilder(); Boolean tqq9_shanghailici = dataEntity.getBoolean("tqq9_shanghailici"); Boolean tqq9_beijinglichi = (Boolean) e.getChangeSet()[0].getNewValue(); Boolean tqq9_guangzhoulici = dataEntity.getBoolean("tqq9_guangzhoulici"); if (tqq9_shanghailici) { companyBulider.append("SH").append(","); } if (tqq9_beijinglichi) { companyBulider.append("BJ").append(","); } if (tqq9_guangzhoulici) { companyBulider.append("GZ").append(","); } if (companyBulider != null && companyBulider.length() > 0) { companyBulider.deleteCharAt(companyBulider.length() - 1); } String ruleName = getModel().getValue("name").toString(); String[] split = ruleName.split("-"); StringBuilder newName = new StringBuilder(); for (int i = 0; i < split.length; i++) { if (i == 1) { if (StringUtils.isNotBlank(companyBulider)) { newName.append(companyBulider).append("-"); } if (!split[i].contains("SH") && !split[i].contains("BJ") && !split[i].contains("GZ")) { newName.append(split[i]).append("-"); } } else { newName.append(split[i]).append("-"); } } getModel().setValue("name", newName.toString()); } else if (StringUtils.equals("tqq9_guangzhoulici", name)) { StringBuilder companyBulider = new StringBuilder(); Boolean tqq9_shanghailici = dataEntity.getBoolean("tqq9_shanghailici"); Boolean tqq9_beijinglichi = dataEntity.getBoolean("tqq9_beijinglichi"); Boolean tqq9_guangzhoulici = (Boolean) e.getChangeSet()[0].getNewValue(); if (tqq9_shanghailici) { companyBulider.append("SH").append(","); } if (tqq9_beijinglichi) { companyBulider.append("BJ").append(","); } if (tqq9_guangzhoulici) { companyBulider.append("GZ").append(","); } if (companyBulider != null && companyBulider.length() > 0) { companyBulider.deleteCharAt(companyBulider.length() - 1); } String ruleName = getModel().getValue("name").toString(); String[] split = ruleName.split("-"); StringBuilder newName = new StringBuilder(); for (int i = 0; i < split.length; i++) { if (i == 1) { if (StringUtils.isNotBlank(companyBulider)) { newName.append(companyBulider).append("-"); } if (!split[i].contains("SH") && !split[i].contains("BJ") && !split[i].contains("GZ")) { newName.append(split[i]).append("-"); } } else { newName.append(split[i]).append("-"); } } getModel().setValue("name", newName.toString()); } } else if (StringUtils.equals("1", tqq9_rebatesub)) { if (StringUtils.equals("tqq9_shlcbl", name)) { StringBuilder companyBulider = new StringBuilder(); BigDecimal tqq9_shlcbl = (BigDecimal) e.getChangeSet()[0].getNewValue(); BigDecimal tqq9_bjlcbl = dataEntity.getBigDecimal("tqq9_bjlcbl"); BigDecimal tqq9_gzlcbl = dataEntity.getBigDecimal("tqq9_gzlcbl"); if (tqq9_shlcbl.compareTo(BigDecimal.ZERO) > 0) { companyBulider.append("SH").append(","); } if (tqq9_bjlcbl.compareTo(BigDecimal.ZERO) > 0) { companyBulider.append("BJ").append(","); } if (tqq9_gzlcbl.compareTo(BigDecimal.ZERO) > 0) { companyBulider.append("GZ").append(","); } if (companyBulider != null && companyBulider.length() > 0) { companyBulider.deleteCharAt(companyBulider.length() - 1); } String ruleName = getModel().getValue("name").toString(); String[] split = ruleName.split("-"); StringBuilder newName = new StringBuilder(); for (int i = 0; i < split.length; i++) { if (i == 1) { if (StringUtils.isNotBlank(companyBulider)) { newName.append(companyBulider).append("-"); } if (!split[i].contains("SH") && !split[i].contains("BJ") && !split[i].contains("GZ")) { newName.append(split[i]).append("-"); } } else { newName.append(split[i]).append("-"); } } getModel().setValue("name", newName.toString()); } else if (StringUtils.equals("tqq9_bjlcbl", name)) { StringBuilder companyBulider = new StringBuilder(); BigDecimal tqq9_shlcbl = dataEntity.getBigDecimal("tqq9_shlcbl"); BigDecimal tqq9_bjlcbl = (BigDecimal) e.getChangeSet()[0].getNewValue(); BigDecimal tqq9_gzlcbl = dataEntity.getBigDecimal("tqq9_gzlcbl"); if (tqq9_shlcbl.compareTo(BigDecimal.ZERO) > 0) { companyBulider.append("SH").append(","); } if (tqq9_bjlcbl.compareTo(BigDecimal.ZERO) > 0) { companyBulider.append("BJ").append(","); } if (tqq9_gzlcbl.compareTo(BigDecimal.ZERO) > 0) { companyBulider.append("GZ").append(","); } if (companyBulider != null && companyBulider.length() > 0) { companyBulider.deleteCharAt(companyBulider.length() - 1); } String ruleName = getModel().getValue("name").toString(); String[] split = ruleName.split("-"); StringBuilder newName = new StringBuilder(); for (int i = 0; i < split.length; i++) { if (i == 1) { if (StringUtils.isNotBlank(companyBulider)) { newName.append(companyBulider).append("-"); } if (!split[i].contains("SH") && !split[i].contains("BJ") && !split[i].contains("GZ")) { newName.append(split[i]).append("-"); } } else { newName.append(split[i]).append("-"); } } getModel().setValue("name", newName.toString()); } else if (StringUtils.equals("tqq9_gzlcbl", name)) { StringBuilder companyBulider = new StringBuilder(); BigDecimal tqq9_shlcbl = dataEntity.getBigDecimal("tqq9_shlcbl"); BigDecimal tqq9_bjlcbl = dataEntity.getBigDecimal("tqq9_bjlcbl"); BigDecimal tqq9_gzlcbl = (BigDecimal) e.getChangeSet()[0].getNewValue(); if (tqq9_shlcbl.compareTo(BigDecimal.ZERO) > 0) { companyBulider.append("SH").append(","); } if (tqq9_bjlcbl.compareTo(BigDecimal.ZERO) > 0) { companyBulider.append("BJ").append(","); } if (tqq9_gzlcbl.compareTo(BigDecimal.ZERO) > 0) { companyBulider.append("GZ").append(","); } if (companyBulider != null && companyBulider.length() > 0) { companyBulider.deleteCharAt(companyBulider.length() - 1); } String ruleName = getModel().getValue("name").toString(); String[] split = ruleName.split("-"); StringBuilder newName = new StringBuilder(); for (int i = 0; i < split.length; i++) { if (i == 1) { if (StringUtils.isNotBlank(companyBulider)) { newName.append(companyBulider).append("-"); } if (!split[i].contains("SH") && !split[i].contains("BJ") && !split[i].contains("GZ")) { newName.append(split[i]).append("-"); } } else { newName.append(split[i]).append("-"); } } getModel().setValue("name", newName.toString()); } } if (StringUtils.equals("tqq9_rebatesub", name)) { String ruleName = getModel().getValue("name").toString(); String[] split = ruleName.split("-"); StringBuilder newName = new StringBuilder(); for (int i = 0; i < split.length; i++) { if (i != 1 || i == 1 && !split[i].contains("SH") && !split[i].contains("BJ") && !split[i].contains("GZ")) { newName.append(split[i]).append("-"); } } getModel().setValue("name", newName.toString()); } // 校验:排除时间段的开始时间应大于返利时间范围的结束时间! if (StringUtils.equals("tqq9_startexcludate", name) || StringUtils.equals("tqq9_startdate", name)) { Date tqq9_startdate = dataEntity.getDate("tqq9_startdate"); Date tqq9_startexcludate = dataEntity.getDate("tqq9_startexcludate"); // 修改返利开始时间的时候触发 if (tqq9_startexcludate != null) { if (tqq9_startdate != null) { if (tqq9_startdate.compareTo(tqq9_startexcludate) > 0) { this.getView().showErrorNotification("排除时间段的开始时间应大于等于返利时间范围的结束时间!"); //清空排除时间 if ("tqq9_startdate".equals(name)) { this.getModel().setValue("tqq9_startdate", oldValueObj); } else { this.getModel().setValue("tqq9_startexcludate", oldValueObj); } } } else { this.getView().showErrorNotification("请先填写返利时间范围的开始时间!"); this.getModel().setValue("tqq9_startexcludate", null); } } } //校验:排除时间段的结束时间应小于等于返利时间范围的结束时间! if (StringUtils.equals("tqq9_endexcludate", name) || StringUtils.equals("tqq9_enddate", name)) { Date tqq9_enddate = dataEntity.getDate("tqq9_enddate"); Date tqq9_endexcludate = dataEntity.getDate("tqq9_endexcludate"); // 修改返利开始时间的时候触发 if (tqq9_endexcludate != null) { if (tqq9_enddate != null) { if (tqq9_endexcludate.compareTo(tqq9_enddate) > 0) { this.getView().showErrorNotification("排除时间段的结束时间应小于等于返利时间范围的结束时间!"); //清空排除时间 if ("tqq9_enddate".equals(name)) { this.getModel().setValue("tqq9_enddate", oldValueObj); } else { this.getModel().setValue("tqq9_endexcludate", oldValueObj); } } } else { this.getView().showErrorNotification("请先填写返利时间范围的结束时间!"); this.getModel().setValue("tqq9_endexcludate", null); } } } } @Override public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) { super.afterDoOperation(afterDoOperationEventArgs); String itemKey = afterDoOperationEventArgs.getOperateKey(); if (StringUtils.equals("donothing", itemKey)) { Object name = this.getModel().getValue("name"); String status = this.getModel().getValue("status").toString(); if (StringUtils.equals("A", status)) { this.getView().showErrorNotification("返利规则编辑完成后请先提交返利规则再单击确认"); } Object tqq9_supplier = this.getModel().getValue("tqq9_supplier"); Object tqq9_startdate = this.getModel().getValue("tqq9_startdate"); Object tqq9_enddate = this.getModel().getValue("tqq9_enddate"); Object tqq9_estimatepro = this.getModel().getValue("tqq9_estimatepro"); Object tqq9_rebatebrand = this.getModel().getValue("tqq9_rebatebrand"); Object tqq9_rebategoods = this.getModel().getValue("tqq9_rebategoods"); if (name == null || tqq9_supplier == null || tqq9_startdate == null || tqq9_enddate == null || tqq9_estimatepro == null || tqq9_rebatebrand == null || tqq9_rebategoods == null) { this.getView().showErrorNotification("请确认必录项是否为空"); } else { DynamicObject dataEntity = this.getModel().getDataEntity(true); HashMap map = new HashMap<>(); map.put("tqq9_pur_rebate", dataEntity); this.getView().returnDataToParent(map); this.getView().close(); } } } @Override public void afterCreateNewData(EventObject e) { // 获取当前页面的FormShowParameter对象 FormShowParameter formShowParameter = this.getView().getFormShowParameter(); // 获取自定义参数 String billno = formShowParameter.getCustomParam("purcontract_billno"); JSONObject purcontract_supplier = formShowParameter.getCustomParam("purcontract_supplier"); JSONArray purcontract_tqq9_dxpp = formShowParameter.getCustomParam("purcontract_tqq9_dxpp"); DynamicObject supplier = null; DynamicObject purcontract = BusinessDataServiceHelper.loadSingle("conm_purcontract", new QFilter[]{new QFilter("billno", QCP.equals, billno)}); DynamicObjectCollection tqq9_supplier = this.getModel().getDataEntity().getDynamicObjectCollection("tqq9_supplier"); DynamicObjectCollection tqq9_rebatebrand = this.getModel().getDataEntity().getDynamicObjectCollection("tqq9_rebatebrand"); DynamicObject newsupplier = new DynamicObject(tqq9_supplier.getDynamicObjectType()); if (purcontract_supplier != null) { String number = purcontract_supplier.get("number").toString(); supplier = BusinessDataServiceHelper.loadSingle("bd_supplier", new QFilter[]{new QFilter("number", QCP.equals, number)}); } if (purcontract_tqq9_dxpp != null) { for (int i = 0; i < purcontract_tqq9_dxpp.size(); i++) { JSONObject jsonObject = (JSONObject) purcontract_tqq9_dxpp.get(i); JSONObject fbasedataid = jsonObject.getJSONObject("fbasedataid"); String number = fbasedataid.getString("number"); DynamicObject tqq9_dxpp = BusinessDataServiceHelper.loadSingle("tqq9_brand", new QFilter[]{new QFilter("number", QCP.equals, number)}); if (tqq9_dxpp != null) { DynamicObject newbrand = new DynamicObject(tqq9_rebatebrand.getDynamicObjectType()); newbrand.set("fbasedataId", tqq9_dxpp); tqq9_rebatebrand.add(newbrand); } } } // 把参数值赋值到页面文本字段上 if (supplier != null) { newsupplier.set("fbasedataId", supplier); tqq9_supplier.add(newsupplier); this.getModel().setValue("tqq9_supplier", tqq9_supplier); } this.getModel().setValue("tqq9_conm_purcontract", purcontract); this.getModel().setValue("tqq9_rebatebrand", tqq9_rebatebrand); StringBuilder yearBulider = new StringBuilder(); StringBuilder brandBulider = new StringBuilder(); // 获取当前年份 int currentYear = LocalDate.now().getYear(); // 提取年份的最后两位 String lastTwoDigits = String.format("%02d", currentYear % 100); yearBulider.append(lastTwoDigits).append("-"); int size = tqq9_rebatebrand.size(); for (int i = 0; i < size; i++) { DynamicObject dynamicObject = tqq9_rebatebrand.get(i); DynamicObject fbasedataid = dynamicObject.getDynamicObject("fbasedataid"); String name = fbasedataid.getString("name"); // 判断是否是最后一个元素 if (i == size - 1) { brandBulider.append(name); // 不加逗号 } else { brandBulider.append(name).append(","); // 加逗号 } } brandBulider.append("-"); this.getModel().setValue("name", yearBulider.append(brandBulider).toString()); this.getView().updateView(); } }