Explorar o código

绩效导入结果代码优化

彭佳杰 hai 4 días
pai
achega
f72c58c08c

+ 29 - 28
code/opmc/nckd-jxccl-opmc/src/main/java/nckd/jxccl/opmc/pm/plugin/form/ExaminProjectResultListPlugin.java

@@ -46,6 +46,7 @@ import nckd.jxccl.base.common.utils.DateTimeUtils;
 import nckd.jxccl.base.swc.helper.SWCHelper;
 import nckd.jxccl.opmc.pm.helper.PerfManagerHelper;
 import org.apache.commons.lang.exception.ExceptionUtils;
+import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import java.math.BigDecimal;
@@ -95,37 +96,37 @@ public class ExaminProjectResultListPlugin extends AbstractListPlugin {
     public void closedCallBack(ClosedCallBackEvent e) {
         super.closedCallBack(e);
         String actionId = e.getActionId();
-//        if (StringUtils.equals(actionId, "importData")) {
-//            Object returnData = e.getReturnData();
-//            if (ObjectUtils.isNotEmpty(returnData)) {
-//                this.getView().invokeOperation("refresh");
-//            }
-//        }
-
-
-        Map returnData;
-        if ("importData".equals(actionId)) {
-            returnData = (Map) e.getReturnData();
-            if (returnData == null) {
-                return;
-            }
-            if ((Boolean) returnData.get("isOk")) {
-                int totalCount = Integer.parseInt(returnData.get("totalCount").toString());
-                Long importTaskId = (Long) returnData.get("importTaskId");
-                String cacheKey = (String) returnData.get("cacheKey");
-                String caption = ResManager.loadKDString("导入看板", "ImportTaskGuideOpereateBillList_33", "swc-hsas-formplugin", new Object[0]);
-                this.openProgressPage(totalCount, importTaskId, "22", "importingData", caption, cacheKey);
-            }
-        } else if ("importingData".equals(actionId)) {
-            returnData = (Map) e.getReturnData();
-            if (returnData != null && !returnData.isEmpty()) {
-                this.openImportingView(returnData);
-            } else {
+        if (StringUtils.equals(actionId, "importData")) {
+            Object returnData = e.getReturnData();
+            if (ObjectUtils.isNotEmpty(returnData)) {
                 this.getView().invokeOperation("refresh");
             }
-        } else {
-            this.getView().invokeOperation("refresh");
         }
+
+
+//        Map returnData;
+//        if ("importData".equals(actionId)) {
+//            returnData = (Map) e.getReturnData();
+//            if (returnData == null) {
+//                return;
+//            }
+//            if ((Boolean) returnData.get("isOk")) {
+//                int totalCount = Integer.parseInt(returnData.get("totalCount").toString());
+//                Long importTaskId = (Long) returnData.get("importTaskId");
+//                String cacheKey = (String) returnData.get("cacheKey");
+//                String caption = ResManager.loadKDString("导入看板", "ImportTaskGuideOpereateBillList_33", "swc-hsas-formplugin", new Object[0]);
+//                this.openProgressPage(totalCount, importTaskId, "22", "importingData", caption, cacheKey);
+//            }
+//        } else if ("importingData".equals(actionId)) {
+//            returnData = (Map) e.getReturnData();
+//            if (returnData != null && !returnData.isEmpty()) {
+//                this.openImportingView(returnData);
+//            } else {
+//                this.getView().invokeOperation("refresh");
+//            }
+//        } else {
+//            this.getView().invokeOperation("refresh");
+//        }
     }
 
     private void openProgressPage(int totalCount, Long importTaskId, String progressType, String closeCalBackId, String caption, String verifyId) {

+ 47 - 29
code/opmc/nckd-jxccl-opmc/src/main/java/nckd/jxccl/opmc/pm/plugin/form/ImportKPISelectFormPlugin.java

@@ -48,10 +48,14 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collections;
+import java.util.Date;
 import java.util.EventObject;
 import java.util.HashMap;
 import java.util.List;
@@ -168,10 +172,10 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
 //                    returnMap.put("dataRowList", dataRowList);
                     //写入数据
                     Boolean b = saveData(dataHeadNumberList, dataRowList);
-                    if( b ){
+                    if (b) {
                         this.getView().returnDataToParent(true);
                         this.getView().close();
-                    }else{
+                    } else {
                         this.getView().showTipNotification("数据保存错误请联系管理员!");
                     }
                 } else {
@@ -184,9 +188,23 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
         }
     }
 
-    private Boolean saveData(List<Map<Integer, String>> dataHeadNumberList,List<Map<Integer, String>> dataRowList){
+    private String judgeDataType(Object object) {
+        if (object instanceof Boolean) {
+            Boolean b = (Boolean) object;
+            return b ? "是" : "否";
+        } else if (object instanceof Date) {
+            SimpleDateFormat basicFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            String date = basicFormat.format((Date) object);
+            return date;
+        } else if (object instanceof BigDecimal) {
+            return ((BigDecimal) object).toString();
+        }
+        return (String) object;
+    }
+
+    private Boolean saveData(List<Map<Integer, String>> dataHeadNumberList, List<Map<Integer, String>> dataRowList) {
         QFilter commonQFilter = new QFilter("enable", QCP.equals, "1");
-        commonQFilter.and("status",QCP.equals,"C");
+        commonQFilter.and("status", QCP.equals, "C");
         //表头编码
         Map<Integer, String> zeroExcelRow = dataHeadNumberList.get(0);
         QFilter dimensionQFilter = new QFilter("number", QCP.in, zeroExcelRow.values());
@@ -200,23 +218,23 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
         List<String> userNumbers = dataRowList.stream().map(i -> i.get(1)).collect(Collectors.toList());
         QFilter userQFilter = new QFilter("number", QCP.in, userNumbers);
         DynamicObject[] users = BusinessDataServiceHelper.load("bos_user", "id,name,number", new QFilter[]{userQFilter, commonQFilter});
-        Map<String, DynamicObject> userMap = Arrays.stream(users).collect(Collectors.toMap(i -> i.getString("number"), i -> i,(existing, replacement) -> existing));
+        Map<String, DynamicObject> userMap = Arrays.stream(users).collect(Collectors.toMap(i -> i.getString("number"), i -> i, (existing, replacement) -> existing));
 
         //汇总组织编码
         List<String> deptNumbers = dataRowList.stream().map(i -> i.get(3)).collect(Collectors.toList());
         QFilter deptQFilter = new QFilter("number", QCP.in, deptNumbers);
         DynamicObject[] depts = BusinessDataServiceHelper.load("bos_org", "id,name,number", new QFilter[]{deptQFilter, commonQFilter});
-        Map<String, DynamicObject> deptMap = Arrays.stream(depts).collect(Collectors.toMap(i -> i.getString("number"), i -> i,(existing, replacement) -> existing));
+        Map<String, DynamicObject> deptMap = Arrays.stream(depts).collect(Collectors.toMap(i -> i.getString("number"), i -> i, (existing, replacement) -> existing));
 
         //汇总岗位编码
         List<String> postNumbers = dataRowList.stream().map(i -> i.get(5)).collect(Collectors.toList());
         QFilter postQFilter = new QFilter("number", QCP.in, postNumbers);
         DynamicObject[] posts = BusinessDataServiceHelper.load("bos_position", "id,name,number", new QFilter[]{postQFilter, commonQFilter});
-        Map<String, DynamicObject> postMap = Arrays.stream(posts).collect(Collectors.toMap(i -> i.getString("number"), i -> i,(existing, replacement) -> existing));
+        Map<String, DynamicObject> postMap = Arrays.stream(posts).collect(Collectors.toMap(i -> i.getString("number"), i -> i, (existing, replacement) -> existing));
 
         //查询绩效绩效结果-后续计算部门累计平均排名
         HashMap<String, List<String>> userHistoryRank = new HashMap<>();
-        DynamicObject[] examinProjectResult = BusinessDataServiceHelper.load("nckd_examinproject_result","nckd_entryentity.nckd_examine_dimension,nckd_entryentity.nckd_result,nckd_org,nckd_user",new QFilter[]{new QFilter("nckd_user.number",QCP.in,userNumbers)});
+        DynamicObject[] examinProjectResult = BusinessDataServiceHelper.load("nckd_examinproject_result", "nckd_entryentity.nckd_examine_dimension,nckd_entryentity.nckd_result,nckd_org,nckd_user", new QFilter[]{new QFilter("nckd_user.number", QCP.in, userNumbers)});
         for (DynamicObject object : examinProjectResult) {
             //用户
             DynamicObject user = object.getDynamicObject("nckd_user");
@@ -227,11 +245,11 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
                 String dimensionNumber = dimension.getString("number");
                 ArrayList<String> rank = new ArrayList<>();
                 //判断是否排名
-                if( StringUtils.equals(dimensionNumber,"JT-00012") ){
+                if (StringUtils.equals(dimensionNumber, "JT-00012")) {
                     //添加历史成绩
                     rank.add(entry.getString("nckd_result"));
                 }
-                userHistoryRank.put(userNumber,rank);
+                userHistoryRank.put(userNumber, rank);
             }
 
         }
@@ -240,53 +258,53 @@ public class ImportKPISelectFormPlugin extends AbstractFormPlugin implements Upl
         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("enable", "1");
+            newData.set("status", "A");
+            newData.set("nckd_importplan", importPlan);
             //姓名
-            newData.set("nckd_user",userMap.get(integerStringMap.get(1)));
+            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_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_postbase", postMap.get(integerStringMap.get(5)));
             //排名单位
-            newData.set("nckd_rank_org",integerStringMap.get(6));
+            newData.set("nckd_rank_org", integerStringMap.get(6));
             //备注
-            newData.set("nckd_remark",integerStringMap.get(17));
+            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 ){
+                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));
+                    entryRow.set("nckd_examine_dimension", examineDimensionMap.get(zeroExcelRow.get(i)));
+                    entryRow.set("nckd_result", integerStringMap.get(i));
                 }
                 //计算部门累计平均排名
-                if( i == 12 ){
+                if (i == 12) {
                     //本次导入排名
                     String rank = integerStringMap.get(11);
                     //用户历史数据排名
                     List<String> userHistory = userHistoryRank.get(integerStringMap.get(1));
-                    if( ObjectUtils.isNotEmpty(userHistory) ){
+                    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);
-                    }else{
-                        newData.set("nckd_cumulativeranking",Integer.parseInt(rank));
+                        newData.set("nckd_cumulativeranking", finalRank);
+                    } else {
+                        newData.set("nckd_cumulativeranking", Integer.parseInt(rank));
                     }
                 }
             }
             saveList.add(newData);
         }
         Object[] save = SaveServiceHelper.save(saveList.toArray(new DynamicObject[0]));
-        if(ObjectUtils.isNotEmpty(save)){
+        if (ObjectUtils.isNotEmpty(save)) {
             return true;
-        }else{
+        } else {
             return false;
         }
     }