lc/lc123/cloud/app/plugin/form/conm/RebateRulesBillPlugin.java

483 lines
25 KiB
Java

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<String> numbers = new HashSet<String>();
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<String, DynamicObject> 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();
}
}