diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractPriceChangedWarnPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractPriceChangedWarnPlugin.java new file mode 100644 index 0000000..85215d6 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractPriceChangedWarnPlugin.java @@ -0,0 +1,44 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.datamodel.events.ChangeData; +import kd.bos.entity.datamodel.events.PropertyChangedArgs; +import kd.bos.form.field.events.BeforeF7SelectListener; +import kd.sdk.plugin.Plugin; + +/** + * 收入/支出合同计量提交时,系统校验计量清单变动的单价, + * 当清单项单价变动过大(超过原单价的2倍或低于0.5倍)时, + * 弹出提醒“请注意,清单项:【xx资源名称】、【xx资源名称】的单价变动较大, + * 请检查是否存在错误”,且对应清单项的“说明”必填。 + */ +public class ContractPriceChangedWarnPlugin extends AbstractBillPlugIn implements Plugin { + @Override + public void propertyChanged(PropertyChangedArgs e) { + super.propertyChanged(e); + String price = e.getProperty().getName(); + if(price.equals("currentprice")){ + StringBuilder sb = new StringBuilder(); + ChangeData[] changeSet = e.getChangeSet(); + for(ChangeData changeData : changeSet){ + int rowIndex = changeData.getRowIndex(); + DynamicObject oldValue = (DynamicObject) changeData.getOldValue(); + DynamicObject newValue = (DynamicObject) changeData.getNewValue(); + int oldPrice = oldValue.getInt("currentprice"); + int newPrice = newValue.getInt("currentprice"); + if((newPrice >= oldPrice * 2)||(newPrice <= oldPrice * 0.5)){ + String resname = (String)this.getModel().getValue("resname", rowIndex); + sb.append(resname).append(","); + } + } + if(sb.length()>0){ + sb.deleteCharAt(sb.length()-1); + this.getView().showTipNotification( + "请注意,清单项:"+sb.toString()+"的单价变动较大,\n" + + " 请检查是否存在错误"); + } + + } + } +}