|
|
@@ -45,107 +45,108 @@ public class PerfDetailPrintPlugin extends AbstractPrintPlugin implements Plugin
|
|
|
|
|
|
@Override
|
|
|
public void afterLoadData(AfterLoadDataEvent evt) {
|
|
|
- List<Integer> seqs = HRAppCache.get("nckd_pm").get("selectPrintSeq", List.class);
|
|
|
- if (seqs == null || seqs.isEmpty()) {
|
|
|
- return;
|
|
|
- }
|
|
|
+ String dsName = evt.getDataSource().getDsName();
|
|
|
+ if(!dsName.contains("custom")) {
|
|
|
+ List<Integer> seqs = HRAppCache.get("nckd_pm").get("selectPrintSeq", List.class);
|
|
|
+ if (seqs == null || seqs.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- Map<Integer,Long> selectPrintPersonIdMap = HRAppCache.get("nckd_pm").get("selectPrintPersonIdMap", Map.class);
|
|
|
- LocalDate now = LocalDate.now();
|
|
|
- // 获取5年前的年份
|
|
|
- int fiveYearsAgo = LocalDate.now().minusYears(5).getYear();
|
|
|
- Date beginDate = DateUtil.toDate(LocalDate.of(fiveYearsAgo, 1, 1));
|
|
|
+ Map<Integer, Long> selectPrintPersonIdMap = HRAppCache.get("nckd_pm").get("selectPrintPersonIdMap", Map.class);
|
|
|
+ LocalDate now = LocalDate.now();
|
|
|
+ // 获取5年前的年份
|
|
|
+ int fiveYearsAgo = LocalDate.now().minusYears(5).getYear();
|
|
|
+ Date beginDate = DateUtil.toDate(LocalDate.of(fiveYearsAgo, 1, 1));
|
|
|
|
|
|
- int currentYear = LocalDate.now().getYear() - 1; // 不包含今年
|
|
|
- Date endDate = DateUtil.toDate(LocalDate.of(currentYear, 1, 1));
|
|
|
+ int currentYear = LocalDate.now().getYear() - 1; // 不包含今年
|
|
|
+ Date endDate = DateUtil.toDate(LocalDate.of(currentYear, 1, 1));
|
|
|
|
|
|
- Map<String,String> positionMap = new HashMap<>();
|
|
|
- Map<String,Integer> perfRankMgmtMap = new HashMap<>();
|
|
|
- try(AlgoContext context = Algo.newContext()) {
|
|
|
- Collection<Long> personIds = selectPrintPersonIdMap.values();
|
|
|
- DataSet positionDateSet = getPositions(fiveYearsAgo, currentYear, personIds);
|
|
|
- if (positionDateSet != null) {
|
|
|
- while (positionDateSet.hasNext()) {
|
|
|
- Row next = positionDateSet.next();
|
|
|
- Long personId = next.getLong(String.join(".", FormConstant.EMPLOYEE_KEY, FormConstant.ID_KEY));
|
|
|
- int tempIndex = 1;
|
|
|
- for (int year = fiveYearsAgo; year <= currentYear; year++) {
|
|
|
- String positionName = next.getString("position_" + tempIndex);
|
|
|
- positionMap.put(personId + "nckd_position_" + tempIndex, positionName);
|
|
|
- tempIndex++;
|
|
|
+ Map<String, String> positionMap = new HashMap<>();
|
|
|
+ Map<String, Integer> perfRankMgmtMap = new HashMap<>();
|
|
|
+ try (AlgoContext context = Algo.newContext()) {
|
|
|
+ Collection<Long> personIds = selectPrintPersonIdMap.values();
|
|
|
+ DataSet positionDateSet = getPositions(fiveYearsAgo, currentYear, personIds);
|
|
|
+ if (positionDateSet != null) {
|
|
|
+ while (positionDateSet.hasNext()) {
|
|
|
+ Row next = positionDateSet.next();
|
|
|
+ Long personId = next.getLong(String.join(".", FormConstant.EMPLOYEE_KEY, FormConstant.ID_KEY));
|
|
|
+ int tempIndex = 1;
|
|
|
+ for (int year = fiveYearsAgo; year <= currentYear; year++) {
|
|
|
+ String positionName = next.getString("position_" + tempIndex);
|
|
|
+ positionMap.put(personId + "nckd_position_" + tempIndex, positionName);
|
|
|
+ tempIndex++;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- DataSet perfRankMgmtDataSet = getPerfRankMgmt(personIds, fiveYearsAgo, currentYear);
|
|
|
- if (perfRankMgmtDataSet != null) {
|
|
|
- while (perfRankMgmtDataSet.hasNext()) {
|
|
|
- Row next = perfRankMgmtDataSet.next();
|
|
|
- Long personId = next.getLong(String.join(".", FormConstant.NCKD_PERSON, FormConstant.ID_KEY));
|
|
|
- int tempIndex = 1;
|
|
|
- for (int year = fiveYearsAgo; year <= currentYear; year++) {
|
|
|
- Integer topran = next.getInteger("perfrank_topran_" + tempIndex);
|
|
|
- Integer topranks = next.getInteger("perfrank_topranks_" + tempIndex);
|
|
|
- perfRankMgmtMap.put(personId + "nckd_perfrank_topran_" + tempIndex, topran);
|
|
|
- perfRankMgmtMap.put(personId + "nckd_perfrank_topranks_" + tempIndex, topranks);
|
|
|
- tempIndex++;
|
|
|
+ DataSet perfRankMgmtDataSet = getPerfRankMgmt(personIds, fiveYearsAgo, currentYear);
|
|
|
+ if (perfRankMgmtDataSet != null) {
|
|
|
+ while (perfRankMgmtDataSet.hasNext()) {
|
|
|
+ Row next = perfRankMgmtDataSet.next();
|
|
|
+ Long personId = next.getLong(String.join(".", FormConstant.NCKD_PERSON, FormConstant.ID_KEY));
|
|
|
+ int tempIndex = 1;
|
|
|
+ for (int year = fiveYearsAgo; year <= currentYear; year++) {
|
|
|
+ Integer topran = next.getInteger("perfrank_topran_" + tempIndex);
|
|
|
+ Integer topranks = next.getInteger("perfrank_topranks_" + tempIndex);
|
|
|
+ perfRankMgmtMap.put(personId + "nckd_perfrank_topran_" + tempIndex, topran);
|
|
|
+ perfRankMgmtMap.put(personId + "nckd_perfrank_topranks_" + tempIndex, topranks);
|
|
|
+ tempIndex++;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
|
|
|
+ // 获取当前打印的数据集并准备过滤后的集合
|
|
|
+ // 2. 获取当前打印的数据集
|
|
|
+ List<DataRowSet> dataRowSets = evt.getDataRowSets();
|
|
|
+ List<DataRowSet> filteredDataRowSets = new ArrayList<>();
|
|
|
+ for (DataRowSet dataRowSet : dataRowSets) {
|
|
|
|
|
|
- // 获取当前打印的数据集并准备过滤后的集合
|
|
|
- // 2. 获取当前打印的数据集
|
|
|
- List<DataRowSet> dataRowSets = evt.getDataRowSets();
|
|
|
- List<DataRowSet> filteredDataRowSets = new ArrayList<>();
|
|
|
- for (DataRowSet dataRowSet : dataRowSets) {
|
|
|
-
|
|
|
- CollectionField entryField = (CollectionField) dataRowSet.getField("reportEntry");
|
|
|
- List<DataRowSet> entryRows = entryField.getValue();
|
|
|
- List<DataRowSet> filteredEntryRows = new ArrayList<>();
|
|
|
- for (DataRowSet entryRow : entryRows) {
|
|
|
- if(dataRowSet.containerKey("reportEntry")) {
|
|
|
- Integer seq = ConvertUtil.toInt(entryRow.getField(FormConstant.SEQ_KEY).getValue());
|
|
|
- Long personId = selectPrintPersonIdMap.get(seq + "");
|
|
|
- // 判断该分录行是否在用户勾选的列表中
|
|
|
- if (seqs.contains(seq)) {
|
|
|
- filteredEntryRows.add(entryRow); // 保留被勾选的行
|
|
|
- }
|
|
|
- for (String fieldKey : entryRow.getFieldKeys()) {
|
|
|
- if (fieldKey.startsWith("nckd_position_")) {
|
|
|
- String positionName = positionMap.get(personId + fieldKey);
|
|
|
- Field field = entryRow.getField(fieldKey);
|
|
|
- field.setValue(positionName != null ? positionName : "");
|
|
|
- entryRow.put(fieldKey, field);
|
|
|
- }
|
|
|
- if (fieldKey.startsWith("nckd_perfrank_topran_")) {
|
|
|
- Integer perfRankMgmt = perfRankMgmtMap.get(personId + fieldKey);
|
|
|
- Field field = entryRow.getField(fieldKey);
|
|
|
- field.setValue(perfRankMgmt != null ? perfRankMgmt : 0);
|
|
|
- entryRow.put(fieldKey, field);
|
|
|
+ CollectionField entryField = (CollectionField) dataRowSet.getField("reportEntry");
|
|
|
+ List<DataRowSet> entryRows = entryField.getValue();
|
|
|
+ List<DataRowSet> filteredEntryRows = new ArrayList<>();
|
|
|
+ for (DataRowSet entryRow : entryRows) {
|
|
|
+ if (dataRowSet.containerKey("reportEntry")) {
|
|
|
+ Integer seq = ConvertUtil.toInt(entryRow.getField(FormConstant.SEQ_KEY).getValue());
|
|
|
+ Long personId = selectPrintPersonIdMap.get(seq + "");
|
|
|
+ // 判断该分录行是否在用户勾选的列表中
|
|
|
+ if (seqs.contains(seq)) {
|
|
|
+ filteredEntryRows.add(entryRow); // 保留被勾选的行
|
|
|
}
|
|
|
- if (fieldKey.startsWith("nckd_perfrank_topranks_")) {
|
|
|
- Integer perfRankMgmt = perfRankMgmtMap.get(personId + fieldKey);
|
|
|
- Field field = entryRow.getField(fieldKey);
|
|
|
- field.setValue(perfRankMgmt != null ? perfRankMgmt : 0);
|
|
|
- entryRow.put(fieldKey, field);
|
|
|
+ for (String fieldKey : entryRow.getFieldKeys()) {
|
|
|
+ if (fieldKey.startsWith("nckd_position_")) {
|
|
|
+ String positionName = positionMap.get(personId + fieldKey);
|
|
|
+ Field field = entryRow.getField(fieldKey);
|
|
|
+ field.setValue(positionName != null ? positionName : "");
|
|
|
+ entryRow.put(fieldKey, field);
|
|
|
+ }
|
|
|
+ if (fieldKey.startsWith("nckd_perfrank_topran_")) {
|
|
|
+ Integer perfRankMgmt = perfRankMgmtMap.get(personId + fieldKey);
|
|
|
+ Field field = entryRow.getField(fieldKey);
|
|
|
+ field.setValue(perfRankMgmt != null ? perfRankMgmt : 0);
|
|
|
+ entryRow.put(fieldKey, field);
|
|
|
+ }
|
|
|
+ if (fieldKey.startsWith("nckd_perfrank_topranks_")) {
|
|
|
+ Integer perfRankMgmt = perfRankMgmtMap.get(personId + fieldKey);
|
|
|
+ Field field = entryRow.getField(fieldKey);
|
|
|
+ field.setValue(perfRankMgmt != null ? perfRankMgmt : 0);
|
|
|
+ entryRow.put(fieldKey, field);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
// 用过滤后的分录数据替换原数据
|
|
|
if (!filteredEntryRows.isEmpty()) {
|
|
|
DataRowSet newDataRowSet = dataRowSet.deepCopy(); // 深拷贝,避免影响原数据
|
|
|
newDataRowSet.put("reportEntry", new CollectionField(filteredEntryRows));
|
|
|
filteredDataRowSets.add(newDataRowSet);
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
+ // 将过滤后的数据集设置回事件,实现只打印勾选行
|
|
|
+ evt.setDataRowSets(filteredDataRowSets);
|
|
|
}
|
|
|
- // 将过滤后的数据集设置回事件,实现只打印勾选行
|
|
|
- evt.setDataRowSets(filteredDataRowSets);
|
|
|
}
|
|
|
|
|
|
|