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..f173654 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractPriceChangedWarnPlugin.java @@ -0,0 +1,34 @@ +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")){ + ChangeData[] changeSet = e.getChangeSet(); + DynamicObject oldValue =(DynamicObject) changeSet[0].getOldValue(); + DynamicObject newValue =(DynamicObject) changeSet[0].getNewValue(); + int oldPrice = oldValue.getInt("DynamicObject"); + int newPrice = newValue.getInt("DynamicObject"); + if((newPrice >= oldPrice * 2)||(newPrice <= oldPrice * 0.5)){ + this.getView().showTipNotification( + "请注意,清单项:【xx资源名称】、【xx资源名称】的单价变动较大,\n" + + " 请检查是否存在错误"); + } + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/demo/AlertwindowBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/demo/AlertwindowBillPlugin.java new file mode 100644 index 0000000..917e9f4 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/demo/AlertwindowBillPlugin.java @@ -0,0 +1,86 @@ +package zcgj.zcdev.zcdev.pr.plugin.form.demo; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.form.*; +import kd.bos.form.control.Control; +import kd.bos.form.control.EntryGrid; +import kd.bos.form.control.events.CellClickEvent; +import kd.bos.form.control.events.CellClickListener; +import kd.bos.form.events.ClosedCallBackEvent; +import kd.bos.list.ListShowParameter; +import kd.sdk.plugin.Plugin; + +import java.util.EventObject; + +public class AlertwindowBillPlugin extends AbstractBillPlugIn implements Plugin, CellClickListener { + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + EntryGrid entryGrid = this.getView().getControl("entryentity"); + entryGrid.addCellClickListener(this); + } + + @Override + public void cellClick(CellClickEvent arg0) { + //申请数量点击后跳出弹窗 + if(arg0.getFieldKey().equals("zcgj_applyqty")){ + DynamicObjectCollection entitys = this.getView().getModel().getEntryEntity("entryentity"); + DynamicObject object = entitys.get(arg0.getRow());//获取点击所在行分录 +// object = object.getDynamicObject("zcgj_applyqty"); + String id = object.getString("id"); + System.out.println(id); +// //打开子页面弹窗 +// FormShowParameter formShow = new FormShowParameter(); +// OpenStyle openStyle = formShow.getOpenStyle();//设置打开风格 +// openStyle.setShowType(ShowType.Modal);//设置打开方式 +// //设置弹窗页面大小 +// StyleCss css = new StyleCss(); +// css.setHeight("600"); +// css.setWidth("300"); +// formShow.getOpenStyle().setInlineStyleCss(css); +// formShow.setFormId("zcgj_add_new");//设置子页面编码 +// formShow.setCustomParam("id",id);//设置自定义参数 String key,Object value; +// //CloseCallBack(plugin ,actionId)参数:插件,回调标识(用于区分不同的回调) +// //使用场景 通常用于父页面打开子页面之后,单子页面关闭之后,父页面需要接受子页面返回的数据或执行某些操作的场景 +// //this 告诉程序是哪个父页面 actionId是用于标识回调事件,用来识别哪个子页面关闭了 +//// formShow.setCloseCallBack(new CloseCallBack(this,"回调标识")); +// this.getView().showForm(formShow); + + //创建弹出列表界面对象 + ListShowParameter lsp = new ListShowParameter(); + //设置FormId,列表的FormId固定为“bos_list” + lsp.setFormId("bos_list"); + //设置Billform,为列表所对应单据的标识 + lsp.setBillFormId("zcgj_purapply"); + //设置弹窗页面标题 + lsp.setCaption("物料库存列表界面"); + //设置弹出页面的打开方式 + lsp.getOpenStyle().setShowType(ShowType.Modal); + //设置为不能多选 + lsp.setMultiSelect(false); + lsp.setCloseCallBack(new CloseCallBack(this,"xxx"));//设置子页面关闭回调参数,回调标识为xxx + //弹出列表界面 + this.getView().showForm(lsp); + + } + + } + + @Override + public void cellDoubleClick(CellClickEvent cellClickEvent) { + + } + //重写closedCalled 获取子页面传出的参数 + + @Override + public void closedCallBack(ClosedCallBackEvent e) { + super.closedCallBack(e); + String actionId = e.getActionId();// + if (actionId.equals("xxx")) { + int count = (int)e.getReturnData(); + this.getModel().setValue("xxx", count,0); + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/demo/OfficeApplyformPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/demo/OfficeApplyformPlugin.java new file mode 100644 index 0000000..777b524 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/demo/OfficeApplyformPlugin.java @@ -0,0 +1,40 @@ +package zcgj.zcdev.zcdev.pr.plugin.form.demo; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.extplugin.sample.AbstractFormPlugin; +import kd.bos.form.events.BeforeClosedEvent; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.sdk.plugin.Plugin; + +import java.util.EventObject; + +public class OfficeApplyformPlugin extends AbstractBillPlugIn implements Plugin { + @Override + public void afterCreateNewData(EventObject e) { + //获取父页面的传参 + String id = getView().getFormShowParameter().getCustomParam("id"); + QFilter qFilter = new QFilter("id", QCP.equals, id); + //查询物品名和库存 + DynamicObject dyn = BusinessDataServiceHelper.loadSingle("xxx", "name,count", new QFilter[]{qFilter}); + String name = dyn.getString("name"); + int count = dyn.getInt("count"); + //将查出来的值放入表中 + getModel().setValue("name", name); + getModel().setValue("count", count); + super.afterCreateNewData(e); + + } + //重写页面关闭事件 + + @Override + public void beforeClosed(BeforeClosedEvent e) { + super.beforeClosed(e); + //获取页面库存数量 ,由于afterCreateNewData 设置了页面参数值,所以,可以获取弹窗页面值 + int count = (int)this.getModel().getValue("xxx"); + //通过returnDataToParent将页面关闭前,传回父页面 + this.getView().returnDataToParent(count); + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/demo/ReqOppSubmitServicePlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/demo/ReqOppSubmitServicePlugin.java new file mode 100644 index 0000000..dc21f80 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/demo/ReqOppSubmitServicePlugin.java @@ -0,0 +1,31 @@ +package zcgj.zcdev.zcdev.pr.plugin.form.demo; + + +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.AddValidatorsEventArgs; +import kd.bos.entity.plugin.PreparePropertysEventArgs; + +public class ReqOppSubmitServicePlugin extends AbstractOperationServicePlugIn { + /** + * 插件需要再次事件,添加需要用到的字段 + * 否则,操作引擎加载出的单据数据包,可能没有插件要用到的字段值,从而引发中断 + * @param e + */ + @Override + public void onPreparePropertys(PreparePropertysEventArgs e) { + //加载采购字段 + e.getFieldKeys().add("zcgj_combofield"); + //加载采购价格 + e.getFieldKeys().add("zcgj_price"); +// e.getFieldKeys().add("entryentity"); + } + /** + * 执行校验前,触发此事件 + * 插件可以在此事件,调整预置的操作校验码;或者增加自定义操作校验码 + */ + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + //添加自定义的校验器 + e.addValidator(new ReqSubmitValidator()); + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/demo/ReqSubmitValidator.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/demo/ReqSubmitValidator.java new file mode 100644 index 0000000..2944c46 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/demo/ReqSubmitValidator.java @@ -0,0 +1,31 @@ +package zcgj.zcdev.zcdev.pr.plugin.form.demo; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.ExtendedDataEntity; +import kd.bos.entity.validate.AbstractValidator; + +import java.math.BigDecimal; + +public class ReqSubmitValidator extends AbstractValidator { + @Override + public void validate() { + for(ExtendedDataEntity extendedDataEntity:this.getDataEntities()){ + DynamicObject dataEntity = extendedDataEntity.getDataEntity();//获取平铺的单据实体 + DynamicObjectCollection entityCollection = dataEntity.getDynamicObjectCollection("entryentity");//获取单据体 + StringBuilder sb = new StringBuilder(); + for(int i = 0 ; i < entityCollection.size(); i++){ + DynamicObject dynamicObject = entityCollection.get(i); + int zcgjCombofield = dynamicObject.getInt("zcgj_combofield"); + BigDecimal price = dynamicObject.getBigDecimal("zcgj_price"); + if(zcgjCombofield == 1&&price.compareTo(BigDecimal.ZERO)<1){ + sb.append(i+1).append(","); + } + } + if(sb.length()>0){ + sb.deleteCharAt(sb.length()-1); + this.addErrorMessage(extendedDataEntity,"第"+sb.toString()+"行自费方式的单价不能小于等于0"); + } + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/list/DemoListPlugin03.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/list/DemoListPlugin03.java new file mode 100644 index 0000000..de81007 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/list/DemoListPlugin03.java @@ -0,0 +1,41 @@ +package zcgj.zcdev.zcdev.pr.plugin.list; + +import kd.bos.bill.BillShowParameter; +import kd.bos.bill.OperationStatus; +import kd.bos.entity.datamodel.ListSelectedRow; +import kd.bos.form.ShowType; +import kd.bos.form.events.BillListHyperLinkClickEvent; +import kd.bos.form.events.HyperLinkClickArgs; +import kd.bos.list.plugin.AbstractListPlugin; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.QueryServiceHelper; + +public class DemoListPlugin03 extends AbstractListPlugin { + /** + * 触发时机:单据列表上显示为超链接的单元格,用户点击,系统默认会打开单据维护界面 + * 应用场景:以采购申请单为例,单据列表物料字段开启超链接属性,点击物料列,打开物料详情 + * @param args + */ + @Override + public void billListHyperLinkClick(HyperLinkClickArgs args) { + super.billListHyperLinkClick(args); + String key = args.getFieldName();//获取点击字段标识 + if(key.equals("xxx")){ + args.setCancel(true);//取消单据详情界面的打开 + int rowIndex = args.getRowIndex(); + BillListHyperLinkClickEvent event = (BillListHyperLinkClickEvent)args.getHyperLinkClickEvent(); + ListSelectedRow currentRow = event.getCurrentRow();//获取当前点击行 + Object entryPrimaryKeyValue = currentRow.getEntryPrimaryKeyValue();//获取单据id + QueryServiceHelper.query("xxx","xx",new QFilter[]{new QFilter("xx", QCP.equals,"XXX")}); + //因为列表界面只能获取id,使用状态,单据状态字段,其他需要通过orm框架查出 + BillShowParameter billShowParameter = new BillShowParameter(); + billShowParameter.setFormId("xxx"); + billShowParameter.setPkId("xx"); + billShowParameter.setFormId("xx"); + billShowParameter.getOpenStyle().setShowType(ShowType.Modal); + billShowParameter.setStatus(OperationStatus.VIEW); + this.getView().showForm(billShowParameter); + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/list/DemoListPlugin04.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/list/DemoListPlugin04.java new file mode 100644 index 0000000..0146260 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/list/DemoListPlugin04.java @@ -0,0 +1,41 @@ +package zcgj.zcdev.zcdev.pr.plugin.list; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.datamodel.events.PackageDataEvent; +import kd.bos.form.operatecol.OperationColItem; +import kd.bos.list.column.ListOperationColumnDesc; +import kd.bos.list.plugin.AbstractListPlugin; + +import java.util.List; + +public class DemoListPlugin04 extends AbstractListPlugin { + /** + * 触发时机:列表初始化,或者列表重新加载时 + * 应用场景:以采购申请单为例,格式化列表金额字段并对已审核状态的数据锁定操作项,不允许操作 + * @param e + */ + @Override + public void packageData(PackageDataEvent e) { + super.packageData(e); + String colKey = e.getColKey();//获取列表点击值 + if("zcgj_amount".equals(colKey)){ + DynamicObject rowData = e.getRowData();//获取列表值 + e.setFormatValue(rowData.getLong("zcgj_amount")*0.5);//格式化处理 + if ("yyy".equals(colKey)&& e.getSource() instanceof ListOperationColumnDesc){ + List items = (List)e.getFormatValue(); + //如果单据状态为已审核 + if("C".equals(rowData.get("billstatus"))){ + for(OperationColItem item:items){ + if("modify".equalsIgnoreCase(item.getOperationKey()) + ||"delete".equalsIgnoreCase(item.getOperationKey()) + ||"submit".equalsIgnoreCase(item.getOperationKey())){ + //设置锁定 + item.setLocked(true); + } + } + } + } + } + + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/list/DemoListPlugin05.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/list/DemoListPlugin05.java new file mode 100644 index 0000000..e3ae540 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/list/DemoListPlugin05.java @@ -0,0 +1,50 @@ +package zcgj.zcdev.zcdev.pr.plugin.list; + +import com.alibaba.druid.util.StringUtils; +import kd.bos.dataentity.entity.LocaleString; +import kd.bos.form.IPageCache; +import kd.bos.form.events.BeforeCreateListColumnsArgs; +import kd.bos.form.events.FilterContainerSearchClickArgs; +import kd.bos.list.IListColumn; +import kd.bos.list.ListColumn; +import kd.bos.list.plugin.AbstractListPlugin; + +import java.util.Iterator; + +public class DemoListPlugin05 extends AbstractListPlugin { + /** + * 场景:以采购申请单为案例,当单据状态已为审核时,单据列表添加字段--审核人 + */ + //获取页面缓存,并添加标志变量--是否审核 + @Override + public void filterContainerSearchClick(FilterContainerSearchClickArgs args) { + IPageCache pageCache = this.getView().getPageCache(); + Object billstatus = args.getFilterValue("billstatus"); + if (billstatus != null&&billstatus instanceof String && StringUtils.equals("C",(String)billstatus)){ + pageCache.put("isAudit","true"); + }else{ + pageCache.put("isAudit","false"); + } + } + + //根据缓存变量,动态添加审核人列 + @Override + public void beforeCreateListColumns(BeforeCreateListColumnsArgs args) { + IPageCache pageCache = this.getView().getPageCache(); + String isAudit = pageCache.get("isAudit"); + if(isAudit.equals("true")){ + ListColumn colUser = new ListColumn(); + colUser.setCaption(new LocaleString("审核人")); + colUser.setKey("audit.name"); + colUser.setListFieldKey("audit.name"); + }else{ + Iterator iterator = args.getListColumns().iterator(); + while(iterator.hasNext()){ + IListColumn next = iterator.next(); + if("audit.name".equals(next.getCaption())){ + next.setHeaderField(true); + } + } + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/report/EmployeeReportPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/report/EmployeeReportPlugin.java new file mode 100644 index 0000000..598e8cd --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/report/EmployeeReportPlugin.java @@ -0,0 +1,29 @@ +package zcgj.zcdev.zcdev.pr.plugin.report; + +import kd.bos.algo.DataSet; +import kd.bos.algo.JoinDataSet; +import kd.bos.algo.JoinType; +import kd.bos.entity.report.AbstractReportListDataPlugin; +import kd.bos.entity.report.ReportQueryParam; +import kd.bos.servicehelper.QueryServiceHelper; + +public class EmployeeReportPlugin extends AbstractReportListDataPlugin { + @Override + public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable { + String selectFiles = "entryentity.zcgj_name , entryentity.zcgj_salary ,entryentity.zcgj_apartmentid ";//字段名应与数据源字段一致 + + DataSet ds = QueryServiceHelper.queryDataSet( + this.getClass().getName(), "zcgj_employee_infomation", selectFiles, null, null); + String selectFiles1 = "zcgj_apartment_info.entryentity.zcgj_apartmentid," + + "zcgj_apartment_info.entryentity.zcgj_apartmentname"; + DataSet ds1 = QueryServiceHelper.queryDataSet( + this.getClass().getName(), "zcgj_apartment_info", selectFiles1, null, null); + JoinDataSet join = ds.join(ds1, JoinType.LEFT); +// JoinDataSet join1 = join.on("entryentity.zcgj_apartmentid", "zcgj_apartment_info.entryentity.zcgj_apartmentid"); + JoinDataSet join2 = join.select(new String[]{"entryentity.zcgj_name", "entryentity.zcgj_salary", "entryentity.zcgj_apartmentid"}, + new String[]{"zcgj_apartment_info.entryentity.zcgj_apartmentname"}); + DataSet join3 = join2.finish(); + + return ds1; + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/report/PurchaseApplyReportPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/report/PurchaseApplyReportPlugin.java new file mode 100644 index 0000000..2979e65 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/report/PurchaseApplyReportPlugin.java @@ -0,0 +1,32 @@ +package zcgj.zcdev.zcdev.pr.plugin.report; + +import com.grapecity.documents.excel.S; +import kd.bos.algo.DataSet; +import kd.bos.algo.JoinDataSet; +import kd.bos.algo.JoinType; +import kd.bos.entity.report.AbstractReportListDataPlugin; +import kd.bos.entity.report.ReportQueryParam; +import kd.bos.servicehelper.QueryServiceHelper; + +public class PurchaseApplyReportPlugin extends AbstractReportListDataPlugin { + private final static String APPLY_REPORT = "zcgj_purapply";//这里为源单标识 + @Override + public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable { + String selectFiles = "billno,zcgj_applicant,entryentity.zcgj_applyqty," + + "entryentity.zcgj_amount,billstatus,entryentity.zcgj_materiel";//字段名应与数据源字段一致 + + DataSet ds = QueryServiceHelper.queryDataSet( + this.getClass().getName(), APPLY_REPORT, selectFiles, null, null); + +// String selectFiles1 = "billno,entryentity.zcgj_orderedqty,entryentity.zcgj_price" ; +// DataSet ds1 = QueryServiceHelper.queryDataSet( +// this.getClass().getName(), APPLY_REPORT, selectFiles1, null, null); +// JoinDataSet js = ds.join(ds1, JoinType.LEFT); +// DataSet js1 = js.on("billno", "billno").select(new String[]{"billno,zcgj_applicant,entryentity.zcgj_applyqty," + +// "entryentity.zcgj_amount,billstatus,entryentity.zcgj_materiel"}, +// new String[]{"entryentity.zcgj_orderedqty,entryentity.zcgj_price"}).finish(); + + + return ds.orderBy(new String[]{"entryentity.zcgj_applyqty asc"}); + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/DemoForWorkPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/DemoForWorkPlugin.java new file mode 100644 index 0000000..bc3900b --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/DemoForWorkPlugin.java @@ -0,0 +1,69 @@ +package zcgj.zcdev.zcdev.pr.plugin.workflow; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.workflow.api.AgentExecution; +import kd.bos.workflow.engine.extitf.WorkflowPlugin; + +import java.util.ArrayList; +import java.util.List; + +/** + * + */ +public class DemoForWorkPlugin extends WorkflowPlugin { + /** + * 根据业务逻辑返回参与人id列表 + * 参数:AgentExecution对象,对象中可获取单据od,实体编码,当前节点信息 + * @param execution + * @return + */ + @Override + public List calcUserIds(AgentExecution execution) { + String businessKey = execution.getBusinessKey(); + + List ret = new ArrayList(); + DynamicObject dy = BusinessDataServiceHelper.loadSingle(businessKey, "zcgj_purapply", "zcgj_applicant,entryentity,entryentity.zcgj_materiel,entryentity.zcgj_applyqty"); + DynamicObjectCollection objs = (DynamicObjectCollection) dy.get("entryentity"); + for (DynamicObject obj : objs) { + int anInt = obj.getInt("zcgj_applyqty"); + + if(anInt >0 ){ + ret.add(Long.valueOf("xxxx")); + } + } + + + return ret; + } + + @Override + public boolean hasTrueCondition(AgentExecution execution) { + String key = execution.getBusinessKey();//获取当前主键 + DynamicObject dy = BusinessDataServiceHelper.loadSingle(key, "zcgj_purapply"); + DynamicObjectCollection objs = (DynamicObjectCollection) dy.get("entryentity"); + for (DynamicObject obj : objs) { + int anInt = obj.getInt("zcgj_applyqty"); + if(anInt < 0 ){ + return false; + } + } + + return true; + } + + /** + * 正向执行时 调用notify方法,撤回时调用notifyByWithdraw方法 + * @param execution + */ + @Override + public void notify(AgentExecution execution) { + super.notify(execution); + } + + @Override + public void notifyByWithdraw(AgentExecution execution) { + super.notifyByWithdraw(execution); + } +}