|
@@ -106,6 +106,7 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
|
|
|
case "btnok":
|
|
case "btnok":
|
|
|
//回传数据
|
|
//回传数据
|
|
|
this.importData();
|
|
this.importData();
|
|
|
|
|
+
|
|
|
break;
|
|
break;
|
|
|
default:
|
|
default:
|
|
|
break;
|
|
break;
|
|
@@ -164,7 +165,7 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
|
|
|
//校验导入模板
|
|
//校验导入模板
|
|
|
String templateMsg = checkExcelTemplate(dataHeadList, entry, dataHeadNumberList);
|
|
String templateMsg = checkExcelTemplate(dataHeadList, entry, dataHeadNumberList);
|
|
|
//校验数据必录
|
|
//校验数据必录
|
|
|
- String DataMsg = checkExcelData(dataHeadList, dataRowList);
|
|
|
|
|
|
|
+ String DataMsg = checkExcelMustInputData(dataHeadList, dataRowList);
|
|
|
String errMsg = templateMsg + "\n" + DataMsg;
|
|
String errMsg = templateMsg + "\n" + DataMsg;
|
|
|
if (!StringUtils.isNotBlank(errMsg)) {
|
|
if (!StringUtils.isNotBlank(errMsg)) {
|
|
|
// returnMap.put("dataHeadNumberList", dataHeadNumberList);
|
|
// returnMap.put("dataHeadNumberList", dataHeadNumberList);
|
|
@@ -253,53 +254,27 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+ //添加更新逻辑
|
|
|
|
|
+ DynamicObject[] load = BusinessDataServiceHelper.load("nckd_examinproject_result", "nckd_user,nckd_rank_org,nckd_remark,nckd_cumulativeranking,nckd_rank_org,nckd_postbase,nckd_entryentity.nckd_examine_dimension,nckd_entryentity.nckd_result", new QFilter[]{new QFilter("nckd_importplan.id", QCP.equals, this.getView().getFormShowParameter().getCustomParam("importplan"))});
|
|
|
|
|
+ List<String> collect = Arrays.stream(load).map(i -> i.getString("nckd_user.number")).collect(Collectors.toList());
|
|
|
//1为姓名 3 为组织 5为岗位 6为排名单位 17为备注 12 为部门累计平均排名
|
|
//1为姓名 3 为组织 5为岗位 6为排名单位 17为备注 12 为部门累计平均排名
|
|
|
ArrayList<DynamicObject> saveList = new ArrayList<>();
|
|
ArrayList<DynamicObject> saveList = new ArrayList<>();
|
|
|
for (Map<Integer, String> integerStringMap : dataRowList) {
|
|
for (Map<Integer, String> integerStringMap : dataRowList) {
|
|
|
- DynamicObject newData = BusinessDataServiceHelper.newDynamicObject("nckd_examinproject_result");
|
|
|
|
|
- //设置默认数据
|
|
|
|
|
- newData.set("enable", "1");
|
|
|
|
|
- newData.set("status", "A");
|
|
|
|
|
- newData.set("nckd_importplan", importPlan);
|
|
|
|
|
- //姓名
|
|
|
|
|
- newData.set("nckd_user", userMap.get(integerStringMap.get(1)));
|
|
|
|
|
- //行政组织
|
|
|
|
|
- newData.set("nckd_org", deptMap.get(integerStringMap.get(3)));
|
|
|
|
|
- newData.set("group", deptMap.get(integerStringMap.get(3)));
|
|
|
|
|
- //岗位
|
|
|
|
|
- newData.set("nckd_postbase", postMap.get(integerStringMap.get(5)));
|
|
|
|
|
- //排名单位
|
|
|
|
|
- newData.set("nckd_rank_org", integerStringMap.get(6));
|
|
|
|
|
- //备注
|
|
|
|
|
- newData.set("nckd_remark", integerStringMap.get(17));
|
|
|
|
|
-
|
|
|
|
|
- //增加分录数据
|
|
|
|
|
- DynamicObjectCollection entry = newData.getDynamicObjectCollection("nckd_entryentity");
|
|
|
|
|
- for (Integer i : integerStringMap.keySet()) {
|
|
|
|
|
- //除1为姓名 3 为组织 5为岗位 6为排名单位 17为备注 12 为部门累计平均排名外全部存入分录
|
|
|
|
|
- if (i != 1 && i != 3 && i != 5 && i != 6 && i != 17) {
|
|
|
|
|
- DynamicObject entryRow = entry.addNew();
|
|
|
|
|
- entryRow.set("nckd_examine_dimension", examineDimensionMap.get(zeroExcelRow.get(i)));
|
|
|
|
|
- entryRow.set("nckd_result", integerStringMap.get(i));
|
|
|
|
|
- }
|
|
|
|
|
- //计算部门累计平均排名
|
|
|
|
|
- if (i == 12) {
|
|
|
|
|
- //本次导入排名
|
|
|
|
|
- String rank = integerStringMap.get(11);
|
|
|
|
|
- //用户历史数据排名
|
|
|
|
|
- List<String> userHistory = userHistoryRank.get(integerStringMap.get(1));
|
|
|
|
|
- if (ObjectUtils.isNotEmpty(userHistory)) {
|
|
|
|
|
- //计算
|
|
|
|
|
- int sum = userHistory.stream().mapToInt(Integer::parseInt).sum();
|
|
|
|
|
- sum += Integer.parseInt(rank);
|
|
|
|
|
- int finalRank = sum / (userHistory.size() + 1);
|
|
|
|
|
- newData.set("nckd_cumulativeranking", finalRank);
|
|
|
|
|
|
|
+ String userNumber = integerStringMap.get(1);
|
|
|
|
|
+ for (DynamicObject billData : load) {
|
|
|
|
|
+ String string = billData.getString("nckd_user.number");
|
|
|
|
|
+ //先判断excel行和当前绩效导入结果数据是否同一条
|
|
|
|
|
+ if (StringUtils.equals(string, userNumber)) {
|
|
|
|
|
+ //后判断为新增还是修改
|
|
|
|
|
+ if (!collect.contains(userNumber)) {
|
|
|
|
|
+ //添加数据
|
|
|
|
|
+// addResultData(saveList, integerStringMap, importPlan, examineDimensionMap, userMap, deptMap, postMap, zeroExcelRow, userHistoryRank);
|
|
|
} else {
|
|
} else {
|
|
|
- newData.set("nckd_cumulativeranking", Integer.parseInt(rank));
|
|
|
|
|
|
|
+ //更新数据
|
|
|
|
|
+ updateResultData(billData, saveList, integerStringMap, examineDimensionMap, zeroExcelRow, userHistoryRank);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- saveList.add(newData);
|
|
|
|
|
}
|
|
}
|
|
|
Object[] save = SaveServiceHelper.save(saveList.toArray(new DynamicObject[0]));
|
|
Object[] save = SaveServiceHelper.save(saveList.toArray(new DynamicObject[0]));
|
|
|
if (ObjectUtils.isNotEmpty(save)) {
|
|
if (ObjectUtils.isNotEmpty(save)) {
|
|
@@ -309,6 +284,117 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 添加绩效导入结果新数据
|
|
|
|
|
+ * @param saveList 保存用
|
|
|
|
|
+ * @param integerStringMap 表格行数据
|
|
|
|
|
+ * @param examineDimensionMap 考核维度基础资料
|
|
|
|
|
+ * @param zeroExcelRow 表头行
|
|
|
|
|
+ * @param userHistoryRank 历史排名
|
|
|
|
|
+ */
|
|
|
|
|
+ private void updateResultData(DynamicObject resultData,
|
|
|
|
|
+ ArrayList<DynamicObject> saveList,
|
|
|
|
|
+ Map<Integer, String> integerStringMap,
|
|
|
|
|
+ Map<String, DynamicObject> examineDimensionMap,
|
|
|
|
|
+ Map<Integer, String> zeroExcelRow,
|
|
|
|
|
+ HashMap<String, List<String>> userHistoryRank) {
|
|
|
|
|
+ //排名单位
|
|
|
|
|
+ resultData.set("nckd_rank_org", integerStringMap.get(6));
|
|
|
|
|
+ //备注
|
|
|
|
|
+ resultData.set("nckd_remark", integerStringMap.get(17));
|
|
|
|
|
+ DynamicObjectCollection entry = resultData.getDynamicObjectCollection("nckd_entryentity");
|
|
|
|
|
+ //清空数据
|
|
|
|
|
+ entry.clear();
|
|
|
|
|
+ //重新添加
|
|
|
|
|
+ addEntryData(resultData, entry, integerStringMap, examineDimensionMap, zeroExcelRow, userHistoryRank);
|
|
|
|
|
+ saveList.add(resultData);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 添加绩效导入结果新数据
|
|
|
|
|
+ * @param saveList 保存用
|
|
|
|
|
+ * @param integerStringMap 表格行数据
|
|
|
|
|
+ * @param importPlan 导入任务
|
|
|
|
|
+ * @param examineDimensionMap 考核维度基础资料
|
|
|
|
|
+ * @param userMap 用户
|
|
|
|
|
+ * @param deptMap 部门
|
|
|
|
|
+ * @param postMap 岗位
|
|
|
|
|
+ * @param zeroExcelRow 表头行
|
|
|
|
|
+ * @param userHistoryRank 历史排名
|
|
|
|
|
+ */
|
|
|
|
|
+ private void addResultData(ArrayList<DynamicObject> saveList,
|
|
|
|
|
+ Map<Integer, String> integerStringMap,
|
|
|
|
|
+ DynamicObject importPlan,
|
|
|
|
|
+ Map<String, DynamicObject> examineDimensionMap,
|
|
|
|
|
+ Map<String, DynamicObject> userMap,
|
|
|
|
|
+ Map<String, DynamicObject> deptMap,
|
|
|
|
|
+ Map<String, DynamicObject> postMap,
|
|
|
|
|
+ Map<Integer, String> zeroExcelRow,
|
|
|
|
|
+ HashMap<String, List<String>> userHistoryRank) {
|
|
|
|
|
+ DynamicObject newData = BusinessDataServiceHelper.newDynamicObject("nckd_examinproject_result");
|
|
|
|
|
+ //设置默认数据
|
|
|
|
|
+ newData.set("enable", "1");
|
|
|
|
|
+ newData.set("status", "A");
|
|
|
|
|
+ newData.set("nckd_importplan", importPlan);
|
|
|
|
|
+ //姓名
|
|
|
|
|
+ newData.set("nckd_user", userMap.get(integerStringMap.get(1)));
|
|
|
|
|
+ //行政组织
|
|
|
|
|
+ newData.set("nckd_org", deptMap.get(integerStringMap.get(3)));
|
|
|
|
|
+ newData.set("group", deptMap.get(integerStringMap.get(3)));
|
|
|
|
|
+ //岗位
|
|
|
|
|
+ newData.set("nckd_postbase", postMap.get(integerStringMap.get(5)));
|
|
|
|
|
+ //排名单位
|
|
|
|
|
+ newData.set("nckd_rank_org", integerStringMap.get(6));
|
|
|
|
|
+ //备注
|
|
|
|
|
+ newData.set("nckd_remark", integerStringMap.get(17));
|
|
|
|
|
+
|
|
|
|
|
+ //增加分录数据
|
|
|
|
|
+ DynamicObjectCollection entry = newData.getDynamicObjectCollection("nckd_entryentity");
|
|
|
|
|
+ addEntryData(newData, entry, integerStringMap, examineDimensionMap, zeroExcelRow, userHistoryRank);
|
|
|
|
|
+ saveList.add(newData);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 添加分录数据
|
|
|
|
|
+ * @param billData 绩效导入结果
|
|
|
|
|
+ * @param entry 分录
|
|
|
|
|
+ * @param integerStringMap 表格行
|
|
|
|
|
+ * @param examineDimensionMap 考核维度数据
|
|
|
|
|
+ * @param zeroExcelRow 表头行
|
|
|
|
|
+ * @param userHistoryRank 历史排名
|
|
|
|
|
+ */
|
|
|
|
|
+ private void addEntryData(DynamicObject billData,
|
|
|
|
|
+ DynamicObjectCollection entry,
|
|
|
|
|
+ Map<Integer, String> integerStringMap,
|
|
|
|
|
+ Map<String, DynamicObject> examineDimensionMap,
|
|
|
|
|
+ Map<Integer, String> zeroExcelRow,
|
|
|
|
|
+ HashMap<String, List<String>> userHistoryRank) {
|
|
|
|
|
+ for (Integer i : integerStringMap.keySet()) {
|
|
|
|
|
+ //除1为姓名 3为组织 5为岗位 6为排名单位 17为备注 12 为部门累计平均排名外全部存入分录
|
|
|
|
|
+ if (i != 0 && i != 1 && i != 2 && i != 3 && i != 4 && i != 5 && i != 6 && i != 17) {
|
|
|
|
|
+ DynamicObject entryRow = entry.addNew();
|
|
|
|
|
+ entryRow.set("nckd_examine_dimension", examineDimensionMap.get(zeroExcelRow.get(i)));
|
|
|
|
|
+ entryRow.set("nckd_result", integerStringMap.get(i));
|
|
|
|
|
+ }
|
|
|
|
|
+ //计算部门累计平均排名
|
|
|
|
|
+ if (i == 12) {
|
|
|
|
|
+ //本次导入排名
|
|
|
|
|
+ String rank = integerStringMap.get(11);
|
|
|
|
|
+ //用户历史数据排名
|
|
|
|
|
+ List<String> userHistory = userHistoryRank.get(integerStringMap.get(1));
|
|
|
|
|
+ if (ObjectUtils.isNotEmpty(userHistory)) {
|
|
|
|
|
+ //计算
|
|
|
|
|
+ int sum = userHistory.stream().mapToInt(Integer::parseInt).sum();
|
|
|
|
|
+ sum += Integer.parseInt(rank);
|
|
|
|
|
+ int finalRank = sum / (userHistory.size() + 1);
|
|
|
|
|
+ billData.set("nckd_cumulativeranking", finalRank);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ billData.set("nckd_cumulativeranking", Integer.parseInt(rank));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 校验导入模板
|
|
* 校验导入模板
|
|
|
* @param dataHeadList 模板表头数据
|
|
* @param dataHeadList 模板表头数据
|
|
@@ -330,7 +416,13 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
|
|
|
return "";
|
|
return "";
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private String checkExcelData(List<Map<Integer, String>> dataHeadList, List<Map<Integer, String>> dataRowList) {
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 校验excel必录数据
|
|
|
|
|
+ * @param dataHeadList 表头
|
|
|
|
|
+ * @param dataRowList 表格
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ private String checkExcelMustInputData(List<Map<Integer, String>> dataHeadList, List<Map<Integer, String>> dataRowList) {
|
|
|
boolean check = false;
|
|
boolean check = false;
|
|
|
//表头数据
|
|
//表头数据
|
|
|
Map<Integer, String> integerStringMap = dataHeadList.get(0);
|
|
Map<Integer, String> integerStringMap = dataHeadList.get(0);
|
|
@@ -414,7 +506,7 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
|
|
|
String excelName = template.getString("name");
|
|
String excelName = template.getString("name");
|
|
|
DynamicObjectCollection entry = template.getDynamicObjectCollection("nckd_outimptplentry");
|
|
DynamicObjectCollection entry = template.getDynamicObjectCollection("nckd_outimptplentry");
|
|
|
//绩效导入任务
|
|
//绩效导入任务
|
|
|
- DynamicObject importPlan = BusinessDataServiceHelper.loadSingle(importPlanId, "nckd_importplan");
|
|
|
|
|
|
|
+// DynamicObject importPlan = BusinessDataServiceHelper.loadSingle(importPlanId, "nckd_importplan");
|
|
|
|
|
|
|
|
|
|
|
|
|
// 创建表头
|
|
// 创建表头
|
|
@@ -440,23 +532,19 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
- //获取模板使用组织
|
|
|
|
|
- DynamicObject orgObj = template.getDynamicObject("nckd_orgfield");
|
|
|
|
|
- //获取下级组织id
|
|
|
|
|
- List<Long> subOrgIds = OrgUnitServiceHelper.getAllSubordinateOrgs(1L, Collections.singletonList(orgObj.getLong("id")), true);
|
|
|
|
|
-
|
|
|
|
|
- //构建查询条件
|
|
|
|
|
- QFilter qFilter = new QFilter("entryentity.dpt.id", QCP.in, subOrgIds);
|
|
|
|
|
- qFilter.and("entryentity.ispartjob", QCP.equals, false);
|
|
|
|
|
- qFilter.and("status", QCP.equals, "C");
|
|
|
|
|
- qFilter.and("enable", QCP.equals, "1");
|
|
|
|
|
- //查询组织对应人员数据
|
|
|
|
|
- DynamicObjectCollection query = QueryServiceHelper.query("bos_user",
|
|
|
|
|
- "id,name,number,entryentity.dpt.name as dptname,entryentity.dpt.number as dptnumber," +
|
|
|
|
|
- "entryentity.post.name as positionname,entryentity.post.number as positionnumber", qFilter.toArray());
|
|
|
|
|
|
|
+// //获取模板使用组织
|
|
|
|
|
+// DynamicObject orgObj = template.getDynamicObject("nckd_orgfield");
|
|
|
|
|
+// //获取下级组织id
|
|
|
|
|
+// List<Long> subOrgIds = OrgUnitServiceHelper.getAllSubordinateOrgs(1L, Collections.singletonList(orgObj.getLong("id")), true);
|
|
|
|
|
+ DynamicObject[] resultUsers = BusinessDataServiceHelper.load("nckd_examinproject_result", "nckd_rank_org,nckd_remark,nckd_user,nckd_org,nckd_postbase,nckd_entryentity.nckd_result",
|
|
|
|
|
+ new QFilter[]{new QFilter("nckd_importplan.id", QCP.equals, importPlanId).and("status", QCP.equals, "A")});
|
|
|
//添加行数据
|
|
//添加行数据
|
|
|
- for (int i = 0; i < query.size(); i++) {
|
|
|
|
|
- DynamicObject user = query.get(i);
|
|
|
|
|
|
|
+ for (int i = 0; i < resultUsers.length; i++) {
|
|
|
|
|
+ DynamicObject resultUser = resultUsers[i];
|
|
|
|
|
+ DynamicObject user = resultUser.getDynamicObject("nckd_user");
|
|
|
|
|
+ DynamicObject userOrg = resultUser.getDynamicObject("nckd_org");
|
|
|
|
|
+ DynamicObject userPost = resultUser.getDynamicObject("nckd_postbase");
|
|
|
|
|
+ DynamicObjectCollection resultEntry = resultUser.getDynamicObjectCollection("nckd_entryentity");
|
|
|
//创建行数据
|
|
//创建行数据
|
|
|
Row row = sheet.createRow(i + 2);
|
|
Row row = sheet.createRow(i + 2);
|
|
|
//设置姓名
|
|
//设置姓名
|
|
@@ -467,25 +555,28 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
|
|
|
numberCell.setCellValue(user.getString("number"));
|
|
numberCell.setCellValue(user.getString("number"));
|
|
|
//设置行政组织
|
|
//设置行政组织
|
|
|
Cell dptNameCell = row.createCell(2);
|
|
Cell dptNameCell = row.createCell(2);
|
|
|
- dptNameCell.setCellValue(user.getString("dptname"));
|
|
|
|
|
|
|
+ dptNameCell.setCellValue(userOrg.getString("name"));
|
|
|
//设置行政组织编码
|
|
//设置行政组织编码
|
|
|
Cell dptNumberCell = row.createCell(3);
|
|
Cell dptNumberCell = row.createCell(3);
|
|
|
- dptNumberCell.setCellValue(user.getString("dptnumber"));
|
|
|
|
|
|
|
+ dptNumberCell.setCellValue(userOrg.getString("number"));
|
|
|
//设置岗位
|
|
//设置岗位
|
|
|
Cell positionNameCell = row.createCell(4);
|
|
Cell positionNameCell = row.createCell(4);
|
|
|
- positionNameCell.setCellValue(user.getString("positionname"));
|
|
|
|
|
|
|
+ positionNameCell.setCellValue(userPost.getString("name"));
|
|
|
//设置岗位
|
|
//设置岗位
|
|
|
Cell positionNumberCell = row.createCell(5);
|
|
Cell positionNumberCell = row.createCell(5);
|
|
|
- positionNumberCell.setCellValue(user.getString("positionnumber"));
|
|
|
|
|
- //设置年份
|
|
|
|
|
- Cell yearCell = row.createCell(7);
|
|
|
|
|
- Calendar calendar = Calendar.getInstance();
|
|
|
|
|
- calendar.setTime(importPlan.getDate("nckd_year"));
|
|
|
|
|
- int currentYear = calendar.get(Calendar.YEAR);
|
|
|
|
|
- yearCell.setCellValue(currentYear);
|
|
|
|
|
- //设置周期
|
|
|
|
|
- Cell monthCell = row.createCell(8);
|
|
|
|
|
- monthCell.setCellValue(importPlan.getInt("nckd_month"));
|
|
|
|
|
|
|
+ positionNumberCell.setCellValue(userPost.getString("number"));
|
|
|
|
|
+ //设置排名单元
|
|
|
|
|
+ Cell rank_orgCell = row.createCell(6);
|
|
|
|
|
+ rank_orgCell.setCellValue(resultUser.getString("nckd_rank_org"));
|
|
|
|
|
+ //设置备注
|
|
|
|
|
+ Cell remarkCell = row.createCell(17);
|
|
|
|
|
+ remarkCell.setCellValue(resultUser.getString("nckd_remark"));
|
|
|
|
|
+ //设置分录数据
|
|
|
|
|
+ if (ObjectUtils.isNotEmpty(resultEntry)) {
|
|
|
|
|
+ for (int j = 0; j < resultEntry.size(); j++) {
|
|
|
|
|
+ row.createCell(j + 7).setCellValue(resultEntry.get(j).getString("nckd_result"));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 保存文件
|
|
// 保存文件
|