zm
2024-11-04 9d22bf2b596d8f5627f671f009b3f42d71d73bf4
考情看板和报表
已修改3个文件
149 ■■■■ 文件已修改
src/main/java/com/product/administration/controller/LeaveRequestController.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/administration/service/LeaveRequestService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/administration/service/WorkAttendanceKanbanService.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/administration/controller/LeaveRequestController.java
@@ -236,6 +236,76 @@
            return this.error(SystemCode.SYSTEM_DELETE_LEAVE_REQUEST_FAIL.getValue(),SystemCode.SYSTEM_DELETE_LEAVE_REQUEST_FAIL.getText());
        }
    }
    /**
     * @Date: 2020-03-30 16:13
     * @Author: zm
     * @Description: 根据日期获取请假数据
     */
    @RequestMapping(value = "/getLeave/{version}", method = RequestMethod.POST)
    @ApiVersion(1)
    public String getLeave(HttpServletRequest request) {
        try {
            //获取参数
            FieldSetEntity fse=null;
            Object bean=request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
            if(bean != null)    {
                RequestParameterEntity reqp=(RequestParameterEntity)bean;
                fse = reqp.getFormData();
            }
            //判断参数是否为空
            if(bean == null || fse == null) {
                SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
                return this.error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
            }
            //判断表名是否正常
            if (!CmnConst.PRODUCT_SYS_ASK_FOR_LEAVE.equals(fse.getTableName())) {
                SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_TABLE_NODATA.getValue(), SystemCode.SYSTEM_TABLE_NODATA.getText());
                return this.error(SystemCode.SYSTEM_TABLE_NODATA.getValue(), SystemCode.SYSTEM_TABLE_NODATA.getText());
            }
            FieldSetEntity fs = leaveRequestService.getLeave(fse);
            return OK_List(fs);
        }catch(BaseException e) {
            SpringMVCContextHolder.getSystemLogger().error(e);
            return this.error(e);
        }catch (Exception e) {
            SpringMVCContextHolder.getSystemLogger().error(e);
            return this.error(SystemCode.SYSTEM_DELETE_LEAVE_REQUEST_FAIL.getValue(),SystemCode.SYSTEM_DELETE_LEAVE_REQUEST_FAIL.getText());
        }
    }
    /**
     * @Date: 2020-03-30 16:13
     * @Author: zm
     * @Description: 根据日期获取请假列表
     */
    @RequestMapping(value = "/leaveList/{version}", method = RequestMethod.POST)
    @ApiVersion(1)
    public String leaveList(HttpServletRequest request) {
        try {
            //获取参数
            FieldSetEntity fse=null;
            Object bean=request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
            if(bean != null)    {
                RequestParameterEntity reqp=(RequestParameterEntity)bean;
                fse = reqp.getFormData();
            }
            //判断参数是否为空
            if(bean == null || fse == null) {
                SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
                return this.error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
            }
            //判断表名是否正常
            if (!CmnConst.PRODUCT_SYS_ASK_FOR_LEAVE.equals(fse.getTableName())) {
                SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_TABLE_NODATA.getValue(), SystemCode.SYSTEM_TABLE_NODATA.getText());
                return this.error(SystemCode.SYSTEM_TABLE_NODATA.getValue(), SystemCode.SYSTEM_TABLE_NODATA.getText());
            }
            DataTableEntity dt = leaveRequestService.leaveList(fse);
            return OK_List(dt);
        }catch(BaseException e) {
            SpringMVCContextHolder.getSystemLogger().error(e);
            return this.error(e);
        }catch (Exception e) {
            SpringMVCContextHolder.getSystemLogger().error(e);
            return this.error(SystemCode.SYSTEM_DELETE_LEAVE_REQUEST_FAIL.getValue(),SystemCode.SYSTEM_DELETE_LEAVE_REQUEST_FAIL.getText());
        }
    }
}
src/main/java/com/product/administration/service/LeaveRequestService.java
@@ -12,6 +12,7 @@
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -116,4 +117,32 @@
    public boolean deleteLeaveRequest(FieldSetEntity fs) throws BaseException {
        return baseDao.delete(CmnConst.PRODUCT_SYS_ASK_FOR_LEAVE,CmnConst.UUID+"=?",new Object[]{fs.getString(CmnConst.UUID)});
    }
    /**
     * 根据申请人和请假日期获取请假单据
     * @param fs
     * @return
     */
    public FieldSetEntity getLeave(FieldSetEntity fs){
        return  baseDao.getFieldSetByFilter(CmnConst.PRODUCT_SYS_ASK_FOR_LEAVE,"user_id=? and DATE_FORMAT(start_time,'%Y-%m-%d')<=? and DATE_FORMAT(end_time,'%Y-%m-%d')>=?",new String[]{fs.getString("user_id"),fs.getString("date"),fs.getString("date")},false);
    }
    /**
     *
     * @param fs
     * @return
     */
    public DataTableEntity leaveList(FieldSetEntity fs){
        String a="";
        ArrayList<String> list = new ArrayList<>();
        if (!StringUtils.isEmpty(fs.getString("yearAndMonth"))){
            a="(DATE_FORMAT( start_time, '%Y-%m' )=? or DATE_FORMAT( end_time, '%Y-%m' )=?) and user_id=? and";
            list.add(fs.getString("yearAndMonth"));
            list.add(fs.getString("yearAndMonth"));
            list.add(fs.getString("created_by"));
        }
        DataTableEntity dt = baseDao.listTable(CmnConst.PRODUCT_SYS_ASK_FOR_LEAVE, a + " flow_flag = 2", list.toArray());
        baseDao.loadPromptData(dt);
        return dt;
    }
}
src/main/java/com/product/administration/service/WorkAttendanceKanbanService.java
@@ -1,9 +1,11 @@
package com.product.administration.service;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.time.YearMonth;
import cn.hutool.core.util.ObjectUtil;
import org.springframework.beans.factory.annotation.Autowired;
@@ -450,6 +452,10 @@
            if (StringUtils.isEmpty(yearAndMonth)) {
                yearAndMonth=DateUtils.formatDate(new Date(), "yyyy-MM");
            }
        int year = Integer.parseInt(yearAndMonth.split("-")[0]);
        int month = Integer.parseInt(yearAndMonth.split("-")[1]);
        LocalDate monthEndDate = YearMonth.of(year, month).atEndOfMonth();
         //获取每月天数
            int dayOfMonth = DateUtils.getMonthHasDays(DateUtils.parseDate(yearAndMonth));
@@ -466,11 +472,11 @@
        StringBuilder sb=new StringBuilder();
        sb.append(" SELECT ");
        sb.append(" ( SELECT user_name FROM product_sys_users WHERE user_id = a.created_by ) created_by, ");
        sb.append(" b.user_id,( SELECT user_name FROM product_sys_users WHERE user_id = b.user_id ) created_by, ");
        sb.append(" ( SELECT org_level_name FROM product_sys_org_levels WHERE uuid = dept_uuid ) dept_uuid, ");
        sb.append(" dayOfWork,workDayOfMonth,lateCome,leaveEarly,total_hours,askForLeave,(dayOfWork - workDayOfMonth-askForLeave) absenteeism  ");
        sb.append(" FROM(SELECT b.created_by,b.dayOfWork,b.workDayOfMonth+bb.replenish_date workDayOfMonth,b.dept_uuid,b.lateCome1 lateCome,b.leaveEarly2 leaveEarly FROM ");
        sb.append(" (SELECT a.created_by,"+dayOfWork+" dayOfWork,COUNT( day_of_month ) workDayOfMonth,a.dept_uuid, ");
        sb.append(" "+dayOfWork+" dayOfWork,workDayOfMonth,lateCome,leaveEarly,total_hours,askForLeave,("+dayOfWork+" - workDayOfMonth-askForLeave) absenteeism  ");
        sb.append(" FROM(SELECT b.created_by,b.workDayOfMonth+bb.replenish_date workDayOfMonth,b.dept_uuid,b.lateCome1 lateCome,b.leaveEarly2 leaveEarly FROM ");
        sb.append(" (SELECT a.created_by,COUNT( day_of_month ) workDayOfMonth,a.dept_uuid, ");
        sb.append(" COUNT(IF( result1 like '%迟到%', TRUE, NULL )) lateCome1,");
        sb.append(" COUNT(IF( result3 like '%迟到%', TRUE, NULL )) lateCome2,");
        sb.append(" COUNT(IF( result2 like '%早退%', TRUE, NULL )) leaveEarly1, ");
@@ -478,7 +484,7 @@
        sb.append(" FROM(SELECT d.created_by,d.dept_uuid,DATE_FORMAT( d.punch_time, '%Y-%m-%d' ) day_of_month,punch_type1 result1,punch_type2 result2,punch_type3 result3,punch_type4 result4 ");
        sb.append(" FROM product_oa_punch_record_v d ");
        sb.append(" LEFT JOIN product_oa_punch_time e ON e.attendance_object like  CONCAT('%',d.created_by,'%') ");
        sb.append(" AND DATE_FORMAT( d.punch_time, '%Y-%m' )=? ");
        sb.append(" where DATE_FORMAT( d.punch_time, '%Y-%m' )=? ");
        param.add(yearAndMonth);
        sb.append(" AND DATE_FORMAT( d.punch_time, '%Y-%m-%d' ) NOT IN ( SELECT date_holiday FROM product_sys_company_holiday )) a  ");
        sb.append(" GROUP BY a.created_by,a.dept_uuid ) b  ");
@@ -490,23 +496,36 @@
        param.add(yearAndMonth);
        sb.append(" GROUP BY applicant,DATE_FORMAT(replenish_date, '%Y-%m')) bb on b.created_by=bb.applicant ");
        sb.append(" ) a ");
        sb.append(" LEFT JOIN (SELECT user_id,sum( duration ) total_hours FROM product_oa_work_overtime o ");
        sb.append(" RIGHT JOIN (SELECT user_id,sum( duration ) total_hours FROM product_oa_work_overtime o ");
        sb.append(" LEFT JOIN product_oa_work_overtime_sub b ON o.uuid = b.main_uuid AND DATE_FORMAT( b.start_time, '%Y-%m' )=? ");
        param.add(yearAndMonth);
        sb.append(" GROUP BY o.user_id ) b ON a.created_by = b.user_id ");
        sb.append(" LEFT JOIN ");
        sb.append("(SELECT a.created_by,sum(askForLeave) askForLeave FROM (SELECT a.created_by,a.askForLeave-COUNT(1) askForLeave FROM ");
        sb.append(" (SELECT created_by,DATEDIFF(DATE_FORMAT(end_time, '%Y-%m-%d' ), DATE_FORMAT(start_time, '%Y-%m-%d' ))+1 askForLeave,start_time,end_time ");
        sb.append(" FROM product_oa_ask_for_leave a where DATE_FORMAT( start_time, '%Y-%m' )=? AND flow_flag = 2 ) a ");
        sb.append(" (SELECT created_by,DATEDIFF(if(DATE_FORMAT(end_time, '%Y-%m-%d')<=?,DATE_FORMAT(end_time, '%Y-%m-%d'),?), if(DATE_FORMAT(start_time, '%Y-%m-%d' )>=?,DATE_FORMAT(start_time, '%Y-%m-%d' ),?))+1 askForLeave,start_time,end_time ");
        sb.append(" FROM product_oa_ask_for_leave a where (DATE_FORMAT( start_time, '%Y-%m' )=? or DATE_FORMAT( end_time, '%Y-%m' )=?) AND flow_flag = 2 ) a ");
        param.add(String.valueOf(monthEndDate));
        param.add(String.valueOf(monthEndDate));
        param.add(yearAndMonth+"-01");
        param.add(yearAndMonth+"-01");
        param.add(yearAndMonth);
        param.add(yearAndMonth);
        sb.append(" LEFT JOIN product_sys_company_holiday b on b.date_holiday<= a.end_time and b.date_holiday>=a.start_time and DATE_FORMAT(b.date_holiday, '%Y-%m')=?");
        sb.append(" GROUP BY a.created_by,a.askForLeave) a GROUP BY created_by )");
        param.add(yearAndMonth);
        sb.append(" LEFT JOIN product_sys_company_holiday b on b.date_holiday<= a.end_time and b.date_holiday>=a.start_time ");
        sb.append(" GROUP BY a.created_by,a.askForLeave) a GROUP BY created_by )");
        sb.append(" c ON a.created_by = c.created_by ");
        sb.append(" c ON b.user_id = c.created_by ");
        sb.append(" ORDER BY dept_uuid,a.created_by");
        DataTableEntity dataTableEntityReport = baseDao.listTable(sb.toString(), param.toArray());
        for (int i = 0; i <dataTableEntityReport.getRows() ; i++) {
            FieldSetEntity fs = dataTableEntityReport.getFieldSetEntity(i);
            if (StringUtils.isEmpty(fs.getString("dept_uuid"))){
                FieldSetEntity org_level_name = baseDao.getFieldSetEntityBySQL("SELECT org_level_name FROM `product_sys_staffs` a LEFT JOIN product_sys_org_levels b on a.dept_uuid=b.uuid where a.user_id=?", new String[]{fs.getString("user_id")}, false);
                fs.setValue("dept_uuid",org_level_name.getString("org_level_name"));
            }
        }
        //处理补卡的情况
//        List<Object>param2= new ArrayList<>();
@@ -533,8 +552,5 @@
        return  dataTableEntityReport;
    }
}