Pārlūkot izejas kodu

【U审批】【周总结&个人总结接口】

wuyx 6 gadi atpakaļ
vecāks
revīzija
2c851d6cf7

+ 82 - 0
uas-office-qywx/src/main/java/com/usoftchina/uas/office/qywx/controller/QywxAnalysisController.java

@@ -0,0 +1,82 @@
+package com.usoftchina.uas.office.qywx.controller;
+
+import com.usoftchina.uas.office.entity.DataCenter;
+import com.usoftchina.uas.office.jdbc.DataSourceHolder;
+import com.usoftchina.uas.office.qywx.service.UasAnalysisService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author yingp
+ * @date 2020/2/19
+ */
+@RestController
+public class QywxAnalysisController {
+    @Autowired
+    private UasAnalysisService uasAnalysisService;
+    DataCenter dataCenter = DataCenter.INSTANCE;
+
+    /**
+     * 获取部门总结
+     *
+     * @param instanceid
+     * @return
+     */
+    @PostMapping(value = "/api/analysis/getAnalysisByWeek")
+    public Map<String,Object>  getAnalysisByWeek(int instanceid) {
+        Map<String,Object> res = new HashMap<>();
+        List<Map<String,Object>> resList  = new ArrayList<Map<String,Object>>();
+        DataCenter dataCenter = DataCenter.INSTANCE;
+        if (null == dataCenter) {
+            res.put("success", false);
+            res.put("data", resList);
+            return res;
+        }
+        try {
+            if (null != dataCenter.getUsername() && null != dataCenter.getPassword() && null != dataCenter.getUrl()) {
+                DataSourceHolder.set(dataCenter);
+                resList = uasAnalysisService.getAnalysisByWeek(instanceid);
+            }
+        } finally {
+            DataSourceHolder.clear();
+        }
+        res.put("success", true);
+        res.put("data", resList);
+        return res;
+    }
+    /**
+     * 获取个人总结
+     *
+     * @param instanceid
+     * @return
+     */
+    @PostMapping(value = "/api/analysis/getAnalysisByPerson")
+    public Map<String,Object>  getAnalysisByPerson(int instanceid,String emCode) {
+        Map<String,Object> res = new HashMap<>();
+        Map<String,Object> dataRes = new HashMap<>();
+        DataCenter dataCenter = DataCenter.INSTANCE;
+        if (null == dataCenter) {
+            res.put("success", false);
+            res.put("data", dataRes);
+            return res;
+        }
+        try {
+            if (null != dataCenter.getUsername() && null != dataCenter.getPassword() && null != dataCenter.getUrl()) {
+                DataSourceHolder.set(dataCenter);
+                dataRes = uasAnalysisService.getAnalysisByPerson(instanceid,emCode);
+            }
+        } finally {
+            DataSourceHolder.clear();
+        }
+        res.put("success", true);
+        res.put("data", dataRes);
+        return res;
+    }
+
+}

+ 119 - 0
uas-office-qywx/src/main/java/com/usoftchina/uas/office/qywx/service/UasAnalysisService.java

@@ -0,0 +1,119 @@
+package com.usoftchina.uas.office.qywx.service;
+
+import com.usoftchina.uas.office.service.AbstractService;
+import org.springframework.dao.EmptyResultDataAccessException;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+/**
+ * @author yingp
+ * @date 2020/2/16
+ */
+@Service
+public class UasAnalysisService extends AbstractService {
+    public List<Map<String,Object>> getAnalysisByWeek(int instanceid) {
+        List<Map<String,Object>> reList = new ArrayList<>();
+        try {
+            List<Map<String, Object>> masterList = jdbcTemplate.queryForList("select * from master");
+            //获取推送主要信息 开始时间 结束时间 部门
+            List<Map<String, Object>> depList = jdbcTemplate.queryForList("select DEPART_, STARTDATE_, ENDDATE_,WEEK_ FROM UASANALYSIS_WEEK_PUSH WHERE INSTANCEID_ = ?  order by DEPART_ ASC",instanceid);
+            for(Map<String,Object> dep : depList){//循环获取各部门信息
+                Map<String, Object> res = new HashMap<String,Object>();
+                List<Map<String, Object>> durationList = new ArrayList<>();
+                List<Map<String, Object>> dailyCount = new ArrayList<>();
+                Object depart = dep.get("DEPART_");
+                Object startTime = dep.get("STARTDATE_");
+                Object endTime = dep.get("ENDDATE_");
+                Object week_ = dep.get("WEEK_");
+                res.put("DEPART",depart);//部门
+                int userCount = jdbcTemplate.queryForObject("select count(1) from UASANALYSIS_WEEK_PUSHMAP where INSTANCEID_ = ? ",Integer.class, instanceid);
+                res.put("USERCOUNT",userCount);//部门使用人数
+                try{
+                    durationList = jdbcTemplate.queryForList( "SELECT * FROM ( " +
+                            " SELECT EM_CODE EMCODE,EM_NAME EMNAME,WEEK.DURATION_ DURATION " +
+                            " FROM UASANALYSIS_WEEK_PUSHMAP PM " +
+                            " LEFT JOIN UASANALYSIS_WEEK WEEK ON WEEK.EMCODE_ = PM.EMCODE_ AND WEEK.WEEK_ = ? " +
+                            " LEFT JOIN EMPLOYEE ON EM_CODE = WEEK.EMCODE_ " +
+                            " WHERE PM.INSTANCEID_ = ?  order by WEEK.DURATION_ DESC,EM_NAME ASC)",week_,instanceid);
+                } catch (EmptyResultDataAccessException e) {
+
+                }
+                try{
+                    dailyCount = jdbcTemplate.queryForList( "SELECT DATE_TIME,EMCOUNT FROM ( " +
+                            "SELECT DT, " +
+                            " (CASE WHEN SUBSTR(DATE_TIME,6,1)='0' THEN SUBSTR(DATE_TIME,7,4) ELSE SUBSTR(DATE_TIME,6,5) END ) as date_time,  " +
+                            "    SUM(CASE WHEN nvl(DURATION_,0) = 0 THEN 0 ELSE 1 END) as emcount " +
+                            " from (  select level as dt,to_char(to_date('"+startTime+"','yyyy-mm-dd')+level-1,'yyyy-mm-dd') as date_time " +
+                            "         from DUAL connect by level <=to_date('"+endTime+"','yyyy-mm-dd')-to_date('"+startTime+"','yyyy-mm-dd')+1 " +
+                            "     ) left join " +
+                            "     (SELECT ABYDAY.DURATION_ DURATION_, ABYDAY.TIME_ TIME_ " +
+                            "            FROM UASANALYSIS_WEEK_PUSHMAP PM " +
+                            "            LEFT JOIN UASANALYSIS_DAY ABYDAY ON PM.EMCODE_ = ABYDAY.EMCODE_" +
+                            "            LEFT JOIN EMPLOYEE ON EM_CODE = ABYDAY.EMCODE_" +
+                            "        WHERE PM.INSTANCEID_ = ? "+
+                            "     ) tab on date_time = tab.TIME_ " +
+                            "     GROUP BY DATE_TIME,DT " +
+                            " ) ORDER BY DT ASC",instanceid);
+                } catch (EmptyResultDataAccessException e) {
+
+                }
+                res.put("DURATIONLIST",durationList);
+                res.put("DAILYCOUNT",dailyCount);
+                reList.add(res);
+            }
+        } catch (EmptyResultDataAccessException e) {
+            return reList;
+        }
+        return reList;
+    }
+
+    public Map<String,Object> getAnalysisByPerson(int instanceid,String emCode) {
+        Map<String, Object> res = new HashMap<String,Object>();
+        List<Map<String,Object>> modelList = new ArrayList<>();
+        res.put("EMCODE",emCode);
+        try {
+            Map<String, Object> pushMap = jdbcTemplate.queryForMap("SELECT * FROM (" +
+                    "SELECT WEEK_, " +
+                    "REPLACE((CASE WHEN SUBSTR(STARTDATE_,6,1)='0' THEN SUBSTR(STARTDATE_,7,4) ELSE SUBSTR(STARTDATE_,6,5) END),'-','.')||'-'||REPLACE((CASE WHEN SUBSTR(ENDDATE_,6,1)='0' THEN SUBSTR(ENDDATE_,7,4) ELSE SUBSTR(ENDDATE_,6,5) END),'-','.') AS RANGETIME " +
+                    "FROM UASANALYSIS_WEEK_PUSH WHERE INSTANCEID_ = ? )", instanceid);
+            if (pushMap != null) {
+                Object week_ = pushMap.get("WEEK_");
+                Map<String, Object> wMap = jdbcTemplate.queryForMap("SELECT * FROM (SELECT EM_CODE EMCODE,EM_NAME EMNAME, " +
+                        "NVL(DURATION_,0) DURATION,NVL(ADD_,0) ADDCOUNT,NVL(COMMIT_,0) COMMITCOUNT,NVL(AUDIT_,0) AUDITCOUNT " +
+                        "FROM UASANALYSIS_WEEK WEEK LEFT JOIN EMPLOYEE ON EM_CODE = EMCODE_ " +
+                        "WHERE EMCODE_ = ? AND WEEK_ = ?)", emCode, week_);
+                if (wMap != null) {
+                    res.put("EMNAME", wMap.get("EMNAME"));
+                    res.put("RANGETIME", pushMap.get("RANGETIME"));
+                    res.put("DURATION", wMap.get("DURATION"));
+                    res.put("ADDCOUNT", wMap.get("ADDCOUNT"));
+                    res.put("COMMITCOUNT", wMap.get("COMMITCOUNT"));
+                    res.put("AUDITCOUNT", wMap.get("AUDITCOUNT"));
+                }
+                modelList = jdbcTemplate.queryForList("SELECT * FROM (SELECT MOUDLE_ MODELNAME,DURATION_ DURATION " +
+                        "FROM UASANALYSISDET_WEEK WHERE EMCODE_ = ? AND WEEK_ = ? ORDER BY DURATION_ DESC)", emCode, week_);
+            }
+        } catch (EmptyResultDataAccessException e) {
+            return res;
+        }
+        res.put("MODELLIST",modelList);
+        return res;
+    }
+
+    public List<Map<String,Object>> getPushMan(String type){
+        List<Map<String,Object>> leaderList = new ArrayList<Map<String,Object>>();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setFirstDayOfWeek(Calendar.MONDAY);  //美国是以周日为每周的第一天 现把周一设成第一天
+        calendar.setTime(new Date());
+        String week_ = calendar.get(Calendar.YEAR)+(calendar.get(Calendar.WEEK_OF_YEAR)<10?"0":"")+String.valueOf(calendar.get(Calendar.WEEK_OF_YEAR));
+        System.out.println("当前周次为:"+week_);
+        try{
+            leaderList = jdbcTemplate.queryForList("SELECT INSTANCEID_,EMCODE_,DEPART_ FROM UASANALYSIS_WEEK_PUSH LEFT JOIN EMPLOYEE ON EM_CODE = EMCODE_ " +
+                    " WHERE ISPUSH_ = 0 AND EM_CLASS <> '离职' AND EM_QYWX IS NOT NULL AND PUSHTYPE_ = ? AND WEEK_ = ? order by INSTANCEID_ ASC ",type,week_);
+        } catch (EmptyResultDataAccessException e) {
+            return leaderList;
+        }
+        return leaderList;
+    }
+}