From 1233cf3aec2f62edc402e39163b2f284406adc24 Mon Sep 17 00:00:00 2001 From: liuxy Date: Mon, 14 Nov 2022 16:17:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PerformancemstServiceImpl.java | 70 +++++++++++++++++++ .../wms/pa/wql/QL_TEST_PERFORMANCEMST01.wql | 54 ++++++++++++++ 2 files changed, 124 insertions(+) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pa/service/impl/PerformancemstServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pa/service/impl/PerformancemstServiceImpl.java index 55dff401..c4880a5f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pa/service/impl/PerformancemstServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pa/service/impl/PerformancemstServiceImpl.java @@ -246,6 +246,20 @@ public class PerformancemstServiceImpl implements PerformancemstService { JSONObject jsonObject = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "mst.assessor_date asc"); JSONArray re = jsonObject.getJSONArray("content"); // ===== 2.根据日期查出当天日期所有人员及分数 + + // 总出勤时间 + JSONObject jsonAllTime = new JSONObject(); + jsonAllTime.put("assessor_date", "总出勤时间"); + // 总积分 + JSONObject jsonAllTotal = new JSONObject(); + jsonAllTotal.put("assessor_date", "总积分"); + // 工时效率 + JSONObject jsonEta = new JSONObject(); + jsonEta.put("assessor_date", "工时效率"); + // 与班组平均对比 + JSONObject jsonContrast = new JSONObject(); + jsonContrast.put("assessor_date", "与班组平均对比"); + for (int i = 0; i < re.size(); i++) { JSONObject json = re.getJSONObject(i); JSONArray userArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParam("flag", "7").addParam("assessor_date", json.getString("assessor_date")).process().getResultJSONArray(0); @@ -258,6 +272,57 @@ public class PerformancemstServiceImpl implements PerformancemstService { total = total + json2.getDoubleValue("total_score"); average = NumberUtil.div(total, userArr.size()); + + JSONObject map1 = new JSONObject(); + map1.put("flag", "9"); + map1.put("begin_time", begin_time); + map1.put("end_time", end_time); + map1.put("assessor_id", json2.getString("assessor_id")); + + // 计算总出勤时间 + JSONObject jsonAllTimeNum = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().uniqueResult(0); + jsonAllTime.put(json2.getString("assessor_id"),jsonAllTimeNum.getString("num")); + + // 计算总积分 + map1.put("flag", "10"); + JSONObject jsonAllTotalNum = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().uniqueResult(0); + jsonAllTotal.put(json2.getString("assessor_id"),jsonAllTotalNum.getString("num")); + + // 计算工时效率:总积分 / 总出勤时间 + try { + String eta = NumberUtil.div(jsonAllTotalNum.getString("num"), jsonAllTimeNum.getString("num")).toString(); + jsonEta.put(json2.getString("assessor_id"),NumberUtil.round(eta, 2)); + } catch (Exception e) { + jsonEta.put(json2.getString("assessor_id"),"0"); + + } + + // 计算与班组平均对比:个人工时效率 - 所有人总积分 / 所有人总出勤时间 + map1.put("flag", "9"); + map1.put("assessor_id", ""); + double allPersonTotal = 0; // 所有人总积分 + double allPersonTime = 0; // 所有人总出勤时间 + + JSONArray allPersonTimeArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().getResultJSONArray(0); + for (int k = 0; k < allPersonTimeArr.size(); k++) { + JSONObject jsonObject1 = allPersonTimeArr.getJSONObject(k); + allPersonTime = NumberUtil.add(allPersonTime,jsonObject1.getDoubleValue("num")); + } + + map1.put("flag", "10"); + JSONArray allPersonTotalArr = WQL.getWO("QL_TEST_PERFORMANCEMST01").addParamMap(map1).process().getResultJSONArray(0); + for (int k = 0; k < allPersonTotalArr.size(); k++) { + JSONObject jsonObject1 = allPersonTotalArr.getJSONObject(k); + allPersonTotal = NumberUtil.add(allPersonTotal,jsonObject1.getDoubleValue("num")); + } + + // 与班组平均对比计算结果 + try { + String contrast = NumberUtil.sub(jsonEta.getString(json2.getString("assessor_id")), String.valueOf(NumberUtil.div(allPersonTotal, allPersonTime))).toString(); + jsonContrast.put(json2.getString("assessor_id"),NumberUtil.round(contrast, 2)); + } catch (Exception e) { + jsonContrast.put(json2.getString("assessor_id"),"0"); + } } //查询出有多少个员工 要用到它们的个数 @@ -266,6 +331,11 @@ public class PerformancemstServiceImpl implements PerformancemstService { json.put(String.valueOf(jsonArr.size() + 1), average); are.add(json); } + + are.add(0, jsonAllTime); + are.add(1, jsonAllTotal); + are.add(2, jsonEta); + are.add(3, jsonContrast); jsonObject.put("content", are); return jsonObject; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pa/wql/QL_TEST_PERFORMANCEMST01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pa/wql/QL_TEST_PERFORMANCEMST01.wql index cadd3a20..ecb5ef45 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pa/wql/QL_TEST_PERFORMANCEMST01.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pa/wql/QL_TEST_PERFORMANCEMST01.wql @@ -213,5 +213,59 @@ ENDQUERY ENDIF + IF 输入.flag = "9" + QUERY + SELECT + sum (IFNULL(dtl.workload,0)) AS num + FROM + QL_TEST_PerformanceMst mst + LEFT JOIN ql_test_performancedtl dtl ON mst.performance_id = dtl.performance_id AND dtl.item_code = 'XD20221013231' + WHERE + mst.is_delete = '0' + OPTION 输入.begin_time <> "" + mst.assessor_date >= 输入.begin_time + ENDOPTION + + OPTION 输入.end_time <> "" + mst.assessor_date <= 输入.end_time + ENDOPTION + + OPTION 输入.assessor_id <> "" + mst.assessor_id = 输入.assessor_id + ENDOPTION + + GROUP BY mst.assessor_id + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "10" + QUERY + SELECT + sum (mst.total_score) AS num + FROM + QL_TEST_PerformanceMst mst + + WHERE + mst.is_delete = '0' + + OPTION 输入.begin_time <> "" + mst.assessor_date >= 输入.begin_time + ENDOPTION + + OPTION 输入.end_time <> "" + mst.assessor_date <= 输入.end_time + ENDOPTION + + OPTION 输入.assessor_id <> "" + mst.assessor_id = 输入.assessor_id + ENDOPTION + + GROUP BY mst.assessor_id + + ENDSELECT + ENDQUERY + ENDIF \ No newline at end of file