package shkd.repc.recon.formplugin; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.utils.OrmUtils; import kd.bos.dataentity.utils.StringUtils; import kd.bos.entity.datamodel.RowDataEntity; import kd.bos.entity.datamodel.events.AfterAddRowEventArgs; import kd.bos.form.events.AfterDoOperationEventArgs; import kd.bos.form.events.BeforeDoOperationEventArgs; import kd.bos.form.operate.FormOperate; import kd.bos.form.plugin.AbstractFormPlugin; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import kd.sdk.plugin.Plugin; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; /** * 动态表单插件 */ public class ProjectProgressBillPlugin extends AbstractFormPlugin implements Plugin { /** *将分录拆分成表单 */ @Override public void beforeDoOperation(BeforeDoOperationEventArgs args) { super.beforeDoOperation(args); FormOperate source = (FormOperate) args.getSource(); String operateKey = source.getOperateKey(); if ("save".equals(operateKey)){ DynamicObjectCollection entryEntity = this.getView().getModel().getEntryEntity("qeug_entryentity"); if (null!=entryEntity&&entryEntity.size()>1){ // 从倒数第二条开始循环,到第一条 for (int i = entryEntity.size() - 1; i >= 0; i--) { if (i == 0) { break; // 退出循环 } //拆分 DynamicObject projectProgress = BusinessDataServiceHelper.newDynamicObject("qeug_projectprogress"); DynamicObjectCollection entry = projectProgress.getDynamicObjectCollection("qeug_entryentity"); DynamicObject cloneTargetTrip = (DynamicObject) OrmUtils.clone(entryEntity.get(i), false, true); entry.add(cloneTargetTrip); SaveServiceHelper.save(new DynamicObject[]{projectProgress}); this.getModel().deleteEntryRow("qeug_entryentity", i); } this.getView().showMessage("数据已拆分显示,请退出查看!"); } } } @Override public void afterAddRow(AfterAddRowEventArgs e) { super.afterAddRow(e); if (StringUtils.equals("qeug_entryentity",e.getEntryProp().getName())){ RowDataEntity[] rowDataEntities = e.getRowDataEntities(); for (int i = 0; i < rowDataEntities.length; i++) { RowDataEntity rowDataEntity = rowDataEntities[i]; int rowIndex = rowDataEntity.getRowIndex(); int number=rowIndex+1; this.getModel().setValue("qeug_number","GCJD-"+getNumber()+"-"+number,rowIndex); } } } public String getNumber(){ Date currentDate = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); return sdf.format(currentDate); } }