Переглянути джерело

[bug-4393]培训看板接口调整

gaozl 10 місяців тому
батько
коміт
3abe7bcf5c

+ 18 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/business/controller/StatisticController.java

@@ -109,4 +109,22 @@ public class StatisticController extends GenericProvider {
         }
         return result;
     }
+
+    @ApiOperation("外部培训统计-大方县")
+    @GetMapping("/externalTrainByDfx")
+    APIResult getExternalTrainByDfx(@NotBlank(message = "统计部门")
+                                                                     @RequestParam(name = "dept", required = false) String dept,
+                                                                     @NotBlank(message = "统计类型")
+                                                                     @RequestParam(name = "type", required = false) String type,
+                                                                     @NotBlank(message = "统计时间")
+                                                                     @RequestParam(name = "date", required = true) String date) {
+        APIResult result = new APIResult<>();
+        try {
+            Map<String,Object> labsDashBoard = statisticService.getTrainingDashBoardByDfx(dept,type,date);
+            result.setData(labsDashBoard);
+        } catch (Exception e) {
+            setExceptionResult(result, StateEnum.ILLEGAL_REQUEST.getCode(), I18nUtil.getMessage(StateEnum.ILLEGAL_REQUEST.getCode() + ""), e);
+        }
+        return result;
+    }
 }

+ 46 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/business/dto/ExternalTrainDTO.java

@@ -0,0 +1,46 @@
+package com.lc.ibps.business.dto;
+
+import java.util.*;
+
+public class ExternalTrainDTO {
+
+    private int total;
+
+    private String remark;
+
+    private List<ExternalTrainTypeDTO> ndwbpxTypeList;
+
+    public int getTotal() {
+        return total;
+    }
+
+    public void setTotal(int total) {
+        this.total = total;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public List<ExternalTrainTypeDTO> getNdwbpxTypeList() {
+        return ndwbpxTypeList;
+    }
+
+    public void setNdwbpxTypeList(List<ExternalTrainTypeDTO> ndwbpxTypeList) {
+        Set<String> existingTypeNames = new HashSet<>();
+        for (ExternalTrainTypeDTO rate : ndwbpxTypeList) {
+            existingTypeNames.add(rate.getTypeName());
+        }
+        List<ExternalTrainTypeDTO> finalList = new ArrayList<>(ndwbpxTypeList);
+        for (ExternalTrainTypeDTO predefined : ExternalTrainTypeDTO.TYPELIST) {
+            if (!existingTypeNames.contains(predefined.getTypeName())) {
+                finalList.add(predefined);
+            }
+        }
+        this.ndwbpxTypeList = finalList;
+    }
+}

+ 51 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/business/dto/ExternalTrainTypeDTO.java

@@ -0,0 +1,51 @@
+package com.lc.ibps.business.dto;
+
+public class ExternalTrainTypeDTO {
+
+    private String typeName;
+
+    private String typeNum;
+
+    private String rate;
+
+    public ExternalTrainTypeDTO() {
+    }
+
+    public ExternalTrainTypeDTO(String typeName, String typeNum, String rate) {
+        this.typeName = typeName;
+        this.typeNum = typeNum;
+        this.rate = rate;
+    }
+
+    public static final ExternalTrainTypeDTO[] TYPELIST = {
+            new ExternalTrainTypeDTO("行业交流会", "0", "0.00"),
+            new ExternalTrainTypeDTO("学术报告", "0", "0.00"),
+            new ExternalTrainTypeDTO("研讨会", "0", "0.00"),
+            new ExternalTrainTypeDTO("外聘老师授课", "0", "0.00"),
+            new ExternalTrainTypeDTO("其他", "0", "0.00")
+    };
+
+    public String getTypeName() {
+        return typeName;
+    }
+
+    public void setTypeName(String typeName) {
+        this.typeName = typeName;
+    }
+
+    public String getTypeNum() {
+        return typeNum;
+    }
+
+    public void setTypeNum(String typeNum) {
+        this.typeNum = typeNum;
+    }
+
+    public String getRate() {
+        return rate;
+    }
+
+    public void setRate(String rate) {
+        this.rate = rate;
+    }
+}

+ 2 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/business/service/StatisticService.java

@@ -15,4 +15,6 @@ public interface StatisticService {
     List<TrainingDashBoardDTO> getTrainingDashBoard(String dept, String type, String date);
 
     List<EquipmentDashBoardDTO> getEquipmentDashBoard();
+
+    Map<String,Object> getTrainingDashBoardByDfx(String dept, String type, String date);
 }

+ 75 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/business/service/impl/StatisticServiceImpl.java

@@ -152,6 +152,81 @@ public class StatisticServiceImpl implements StatisticService {
         return list;
     }
 
+    @Override
+    public Map<String,Object> getTrainingDashBoardByDfx(String dept, String types, String dates) {
+        Map<String,Object> map = new HashMap<>();
+        String dateCondition = "";String year = "";
+        // 在岗人员培训统计情况
+        if (dates.contains("-")){
+            year = dates.substring(0,4);
+        }else {
+            // 年
+            year =dates;
+        }
+        //  年度外部培训统计
+        List<Map<String, Object>> list = getExternalTrainByYear(getYearMonth(),dept,year);
+        map.put("yearList",list);
+        //  年度外部培训类别占比
+        ExternalTrainDTO externalTrainDTO = getExternalType(dept,year);
+        map.put("externalType",externalTrainDTO);
+        return map;
+    }
+
+    public ExternalTrainDTO getExternalType(String dept,String year){
+        ExternalTrainDTO externalTrainDTO = new ExternalTrainDTO();
+        externalTrainDTO.setRemark("本年度岗前培训类别占比");
+        List<ExternalTrainTypeDTO> rateDtoList = new ArrayList<>();
+        String sql = "select pei_xun_hui_yi_le,count(pei_xun_hui_yi_le)as nums from t_lhpxsqb where " +
+                " shi_fou_guo_shen_='已完成' %s group by pei_xun_hui_yi_le";
+        String talSql = "SELECT count(*) AS total FROM t_lhpxsqb WHERE shi_fou_guo_shen_ = '已完成' %s ";
+        String dateCondition = String.format(" AND di_dian_ = '%s' ", getDiDian());
+        if (BeanUtils.isNotEmpty(dept)){
+            dateCondition += String.format(" AND bian_zhi_bu_men_ = '%s' ", dept);
+        }
+        dateCondition += String.format(" AND DATE_FORMAT(pei_xun_kai_shi_s,'%%Y')='%s' ", year);
+        sql = String.format(sql,dateCondition);
+        talSql = String.format(talSql,dateCondition);
+        List<Map<String,Object>> list = (List<Map<String, Object>>) commonDao.query(sql);
+        Map<String,Object> sumMap = commonDao.queryOne(talSql);
+        int total = Integer.parseInt(sumMap==null?"0":sumMap.get("total").toString());
+        externalTrainDTO.setTotal(total);
+        if (BeanUtils.isNotEmpty(list)){
+            for (Map<String,Object> map : list){
+                ExternalTrainTypeDTO rateDto = new ExternalTrainTypeDTO();
+                String nums = map.get("nums").toString();
+                rateDto.setTypeName(map.get("pei_xun_hui_yi_le").toString());
+                rateDto.setTypeNum(nums);
+                rateDto.setRate(getRate(total,Integer.parseInt(nums)));
+                rateDtoList.add(rateDto);
+            }
+            externalTrainDTO.setNdwbpxTypeList(rateDtoList);
+        }
+        return externalTrainDTO;
+    }
+
+    public List<Map<String, Object>> getExternalTrainByYear(List<String> dateStr, String dept,String year) {
+        String baseSql = "SELECT count(*) AS total from t_lhpxsqb WHERE shi_fou_guo_shen_='已完成' and di_dian_='%s'";
+        baseSql = String.format(baseSql,getDiDian());
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (String date : dateStr) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("date", date + "月");
+            String formattedDate = year + "-" + (Integer.parseInt(date) < 10 ? "0" + date : date);
+            StringBuilder queryBuilder = new StringBuilder(baseSql)
+                    .append("AND DATE_FORMAT(pei_xun_kai_shi_s, '%Y-%m') = '").append(formattedDate).append("' ");
+            if (BeanUtils.isNotEmpty(dept)) {
+                queryBuilder.append("AND bian_zhi_bu_men_ = '").append(dept).append("' ");
+            }
+            String countSql = queryBuilder.toString();
+            Map<String, Object> countResult = commonDao.queryOne(countSql);
+            map.put("num", Integer.parseInt(countResult==null?"0":countResult.get("total").toString()));
+            list.add(map);
+        }
+        return list;
+    }
+
+
+
     @Override
     public List<EquipmentDashBoardDTO> getEquipmentDashBoard() {
         List<EquipmentDashBoardDTO> list = new ArrayList<>();