打印插件修改打印数据原创
金蝶云社区-Cchen
Cchen
4人赞赏了该文章 501次浏览 未经作者许可,禁止转载编辑于2023年12月20日 10:16:02

public class CustomCodePrintPlugin extends AbstractPrintPlugin {

@Override

public void afterLoadData(AfterLoadDataEvent evt) {

super.afterLoadData(evt);
List<DataRowSet> dataRowSets = evt.getDataRowSets();//元数据
List<DataRowSet> newdataRowSets = new ArrayList<>();//新数据

for (DataRowSet dataRowSet : dataRowSets) {

String entryId = entrtyRow.getField("id").toString();//获取数据

dataRowSet.add("sn",new TextField(entryId));//修改数据

DataRowSet dataRowSet2 = dataRowSet.deepCopy();

newdataRowSets.add(dataRowSet2);

evt.setDataRowSets(newdataRowSets);

}

}

}

----------------------------获取列表选择行-------------------

final PrtDataSource dataSource;
//数据源为主数据源类型
if (!((dataSource = evt.getDataSource()) instanceof MainDataSource)) {
   return;
}
String pageId;
// pageId不可以为空
if (StringUtils.isBlank(pageId = ((MainDataSource)dataSource).getPageId())) {
   return;
}
int[] selectRows;
int[] selectlistRows;
final EntryGrid entryEntity = SessionManager.getCurrent().getView(pageId).getControl(ENTRY_FIELD);
//分录控件存在,且所选分录至少勾选一行
if (entryEntity == null || (selectRows = entryEntity.getSelectRows()).length <= 0) {


}else {

   //移除未勾选的分录行
   for (DataRowSet row : evt.getDataRowSets()) {
       List<DataRowSet> entryRows = row.getCollectionField("entryentity").getValue();
       List<DataRowSet> moveRows = new ArrayList<>(selectRows.length);
       Arrays.stream(selectRows).forEach(index -> moveRows.add(entryRows.get(index)));
       row.getCollectionField(ENTRY_FIELD).setValue(moveRows);
   }
}

-----------------获取表单所选的单据体行-----------------------

final BillList listentryEntity = SessionManager.getCurrent().getView(pageId).getControl("billlistap");
if (listentryEntity == null || (selectlistRows = listentryEntity.getSelectedRows().getRowKeys()).length <= 0) {

}else{
   if (!ObjectUtils.isEmpty(listentryEntity)){
       ListSelectedRowCollection selectedRows = listentryEntity.getSelectedRows();
       //分录控件存在,且所选分录至少勾选一行
       if ( selectedRows.size() > 0) {
           List<String> selectRow = new ArrayList();
           for (ListSelectedRow selectedRow : selectedRows) {
               selectRow.add(selectedRow.getEntryPrimaryKeyValue().toString());
           }
           List<DataRowSet> dataRowSets = evt.getDataRowSets();
           for (int i = 0; i < dataRowSets.size(); i++) {
               Field entrty = dataRowSets.get(i).getField("entryentity");
               List<DataRowSet> entrtyRow = (ArrayList) entrty.getValue();
               for (int j = 0; j < entrtyRow.size(); j++) {
                   String entryId = entrtyRow.get(j).getField("id").toString();
                   if (!selectRow.contains(entryId)) {
                       entrtyRow.remove(j);
                       j--;
                   }
               }
           }
       }
   }
}


赞 4