Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/master'

liuyc 2 anni fa
parent
commit
ca77c3dcc8

+ 44 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/WorkDateInfo.java

@@ -0,0 +1,44 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.control.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+ * 实体类
+ *
+ * @author BladeX
+ * @since 2022-07-08
+ */
+@Data
+@TableName("c_work_date_info")
+public class WorkDateInfo {
+
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @ApiModelProperty(value = "日期")
+    private LocalDate oneDay;
+
+    @ApiModelProperty(value = "0休息日,1工作日")
+    private Integer isWork;
+
+}

+ 3 - 6
blade-service/blade-control/src/main/java/org/springblade/control/mapper/DepartmentMonthPlanMapper.xml

@@ -15,16 +15,13 @@
     <select id="getPage" resultType="org.springblade.control.vo.DepartmentMonthPlanVO">
         SELECT dmp.*,
                (select COUNT(1)  from c_project_cost_budget pcb WHERE pcb.dept_id = dmp.dept_id
-                    and (pcb.plan_start_time BETWEEN dmp.plan_start_date AND dmp.plan_end_date
-                    or pcb.plan_end_time BETWEEN dmp.plan_start_date AND dmp.plan_end_date)) as 'planTotal',
+                    and dmp.plan_date between DATE_FORMAT(pcb.plan_start_time  ,'%Y-%m') and DATE_FORMAT(pcb.plan_end_time ,'%Y-%m')) as 'planTotal',
                 (select COUNT(1)  from c_project_cost_budget pcb WHERE pcb.dept_id = dmp.dept_id
                                                                    and pcb.task_approve = 1
-                    and (pcb.plan_start_time BETWEEN dmp.plan_start_date AND dmp.plan_end_date
-                    or pcb.plan_end_time BETWEEN dmp.plan_start_date AND dmp.plan_end_date)) as 'finishPlanTotal',
+                    and dmp.plan_date between DATE_FORMAT(pcb.plan_start_time  ,'%Y-%m') and DATE_FORMAT(pcb.plan_end_time ,'%Y-%m')) as 'finishPlanTotal',
                 (select COUNT(1)  from c_project_cost_budget pcb WHERE pcb.dept_id = dmp.dept_id
                                                                    and pcb.task_approve = 0
-                    and (pcb.plan_start_time BETWEEN dmp.plan_start_date AND dmp.plan_end_date
-                    or pcb.plan_end_time BETWEEN dmp.plan_start_date AND dmp.plan_end_date)) as 'beginPlanTotal',
+                    and dmp.plan_date between DATE_FORMAT(pcb.plan_start_time  ,'%Y-%m') and DATE_FORMAT(pcb.plan_end_time ,'%Y-%m')) as 'beginPlanTotal',
                 (select bu.name from blade_user bu WHERE bu.id = dmp.plan_designer) as 'planDesignerName'
         FROM c_department_month_plan dmp
         where dmp.plan_designer = #{userId} and dmp.is_deleted = 0

+ 1 - 1
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectCostBudgetMapper.java

@@ -40,7 +40,7 @@ public interface ProjectCostBudgetMapper extends BaseMapper<ProjectCostBudget> {
 
     void removeChildrenPlan(@Param("projectId") Long projectId);
 
-    List<ProjectCostBudgetVO> getDepartmentPlan(@Param("deptId") Long deptId,@Param("startDate") LocalDate startDate,@Param("endDate") LocalDate endDate);
+    List<ProjectCostBudgetVO> getDepartmentPlan(@Param("deptId") Long deptId,@Param("date") String date);
 
     void updateStatus(@Param("id") Long id,@Param("status") int status);
 

+ 1 - 2
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectCostBudgetMapper.xml

@@ -108,8 +108,7 @@
                (select di.dict_name from c_dict_info di where di.type = 2 and di.id = pcb.plan_task_type) as planTaskTypeValue
         from c_project_cost_budget pcb
         WHERE pcb.dept_id = #{deptId}
-          and (pcb.plan_start_time BETWEEN #{startDate} AND #{endDate}
-            or pcb.plan_end_time BETWEEN #{startDate} AND #{endDate})
+          and #{date} between DATE_FORMAT(pcb.plan_start_time  ,'%Y-%m') and DATE_FORMAT(pcb.plan_end_time ,'%Y-%m')
     </select>
     <select id="getUserALLPlan" resultType="org.springblade.control.vo.ProjectCostBudgetVO3">
         SELECT

+ 19 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/WorkDateInfoMapper.java

@@ -0,0 +1,19 @@
+package org.springblade.control.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.control.entity.AnnualBudgetDisburse;
+import org.springblade.control.entity.WorkDateInfo;
+
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/5/12 9:38
+ **/
+public interface WorkDateInfoMapper extends BaseMapper<WorkDateInfo> {
+
+    Integer getWorkDays(@Param("start") LocalDate start, @Param("end") LocalDate end);
+}

+ 11 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/WorkDateInfoMapper.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.control.mapper.WorkDateInfoMapper">
+
+
+    <select id="getWorkDays" resultType="java.lang.Integer">
+        select COUNT(1)  from c_work_date_info
+        WHERE DATE_FORMAT(one_day,'%Y-%m-%d') between DATE_FORMAT(#{start} ,'%Y-%m-%d') and DATE_FORMAT(#{end},'%Y-%m-%d')
+        and is_work = 1
+    </select>
+</mapper>

+ 9 - 6
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/DepartmentPlanLogImpl.java

@@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.control.entity.DepartmentPlanLog;
 import org.springblade.control.mapper.DepartmentPlanLogMapper;
+import org.springblade.control.mapper.WorkDateInfoMapper;
 import org.springblade.control.service.*;;
 import org.springblade.control.vo.DepartmentPlanLogVO;
 import org.springblade.core.log.exception.ServiceException;
@@ -28,6 +29,8 @@ public class DepartmentPlanLogImpl extends BaseServiceImpl<DepartmentPlanLogMapp
 
     private final IProjectCostBudgetService budgetService;
 
+    private final WorkDateInfoMapper dateInfoMapper;
+
     /**
      * 根据暂停时间获取实际工时
      */
@@ -55,7 +58,7 @@ public class DepartmentPlanLogImpl extends BaseServiceImpl<DepartmentPlanLogMapp
             if (log.getOpenPlanStartTime().compareTo(log.getPauseTime()) == 0){
                 days = 0;
             }else {
-                days = CommonUtil.getWorkDays(log.getOpenPlanStartTime(), log.getPauseTime());
+                days = dateInfoMapper.getWorkDays(log.getOpenPlanStartTime(), log.getPauseTime());
                 if (days != 0){
                     days -= 1;
                 }
@@ -64,7 +67,7 @@ public class DepartmentPlanLogImpl extends BaseServiceImpl<DepartmentPlanLogMapp
             if (log.getRealPlanStartTime().compareTo(log.getPauseTime()) == 0){
                 days = 0;
             }else {
-                days = CommonUtil.getWorkDays(log.getRealPlanStartTime(), log.getPauseTime());
+                days = dateInfoMapper.getWorkDays(log.getRealPlanStartTime(), log.getPauseTime());
                 if (days != 0){
                     days -= 1;
                 }
@@ -169,11 +172,11 @@ public class DepartmentPlanLogImpl extends BaseServiceImpl<DepartmentPlanLogMapp
     public DepartmentPlanLogVO updateOpenTime(DepartmentPlanLog log) {
         DepartmentPlanLogVO vo = new DepartmentPlanLogVO();
         //先判断日期是否超过35天
-        if (log.getOpenPlanStartTime().until(log.getOpenPlanEndTime(), ChronoUnit.DAYS) > 35) {
-            throw new ServiceException("请不要制定超过一个月的固定计划");
-        }
+//        if (log.getOpenPlanStartTime().until(log.getOpenPlanEndTime(), ChronoUnit.DAYS) > 35) {
+//            throw new ServiceException("请不要制定超过一个月的固定计划");
+//        }
         //计算中途开启的工作日
-        int planDays = CommonUtil.getWorkDays(log.getOpenPlanStartTime(), log.getOpenPlanEndTime());
+        int planDays = dateInfoMapper.getWorkDays(log.getOpenPlanStartTime(), log.getOpenPlanEndTime());
         log.setOpenPlanStartEndDays(planDays);
         BeanUtils.copyProperties(log,vo);
         if ((planDays + vo.getRealWorkDays()) > vo.getPlanDays()) {

+ 26 - 83
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectCostBudgetServiceImpl.java

@@ -15,6 +15,7 @@ import org.springblade.control.entity.*;
 import org.springblade.control.mapper.DepartmentPlanLogMapper;
 import org.springblade.control.mapper.ProjectCostBudgetMapper;
 import org.springblade.control.mapper.ProjectInfoMapper;
+import org.springblade.control.mapper.WorkDateInfoMapper;
 import org.springblade.control.service.*;
 import org.springblade.control.vo.*;
 import org.springblade.core.log.exception.ServiceException;
@@ -51,6 +52,10 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
     private final ProjectCostBudgetMapper budgetMapper;
 
     private final IContractInfoService contractService;
+
+    private final WorkDateInfoMapper dateInfoMapper;
+
+
     /**
      * 批量新增或修改预算
      * @param dto
@@ -352,22 +357,7 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
                     if (taskMap.get(vo2.getPlanTaskType()).get(0).getDictValue().intValue() == 2){
                         vo2.setPlanDays(new BigDecimal(endDate.compareTo(startDate) + 1));
                     }else {
-                        if (startDate.until(endDate,ChronoUnit.DAYS) > 35){
-                            throw new ServiceException("请不要制定超过一个月的固定计划");
-//                            //工作天数,工具只能获取50天之内的
-//                            int i = 0;
-//                            while (endDate.compareTo(startDate) > 0){
-//                                i += CommonUtil.getWorkDays(startDate, startDate.plusDays(35L));
-//                                startDate = startDate.plusDays(36L);
-//                            }
-//                            vo2.setPlanDays(new BigDecimal(i));
-                        }else {
-                            try {
-                                vo2.setPlanDays(new BigDecimal(CommonUtil.getWorkDays(startDate, endDate)));
-                            }catch (NullPointerException e){
-                                throw new ServiceException("请不要刷新这么快,请稍后再试");
-                            }
-                        }
+                        vo2.setPlanDays(new BigDecimal(dateInfoMapper.getWorkDays(startDate, endDate)));
                     }
                     //如果计划已经完成,则不计算超预算
                     if (vo2.getTaskFinishedStatus() == null && vo2.getPlanDays() != null && vo2.getBudgetDays() != null){
@@ -505,7 +495,7 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
                     }
                     //如果保存太快,没有生成planDays,就查询
                     if (budget.getPlanDays() == null || budget.getPlanDays().intValue() == 0){
-                        budget.setPlanDays(new BigDecimal( CommonUtil.getWorkDays(budget.getPlanStartTime(),budget.getPlanEndTime())));
+                        budget.setPlanDays(new BigDecimal( dateInfoMapper.getWorkDays(budget.getPlanStartTime(),budget.getPlanEndTime())));
                     }
                     budget.setProjectId(vo.getProjectId());
                     budget.setParentId(vo2.getId());
@@ -528,7 +518,7 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
 //                            isTwoMonth = true;
                             budget.setPlanIsTwoMonth(1);
                             //计算开始到月底多少个工作日
-                            int days = CommonUtil.getWorkDays(budget.getPlanStartTime(), LocalDate.of(vo2.getPlanStartTime().getYear(), budget.getPlanStartTime().getMonthValue(), budget.getPlanStartTime().getMonth().maxLength()));
+                            int days = dateInfoMapper.getWorkDays(budget.getPlanStartTime(), LocalDate.of(vo2.getPlanStartTime().getYear(), budget.getPlanStartTime().getMonthValue(), budget.getPlanStartTime().getMonth().maxLength()));
                             if (days > budget.getPlanDays().intValue()){
                                 //如果这个月工作天数大于总天数,那么所有值都设置到本月
 //                                startTotalDays = startTotalDays.add(budget.getPlanDays());
@@ -581,7 +571,7 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
                         if (budget.getPlanStartTime().getMonthValue() != budget.getPlanEndTime().getMonthValue()) {
                             budget.setPlanIsTwoMonth(1);
                             //计算开始到月底多少个工作日
-                            int days = CommonUtil.getWorkDays(budget.getPlanStartTime(), LocalDate.of(budget.getPlanStartTime().getYear(), budget.getPlanStartTime().getMonthValue(), budget.getPlanStartTime().getMonth().maxLength()));
+                            int days = dateInfoMapper.getWorkDays(budget.getPlanStartTime(), LocalDate.of(budget.getPlanStartTime().getYear(), budget.getPlanStartTime().getMonthValue(), budget.getPlanStartTime().getMonth().maxLength()));
                             if (days > budget.getPlanDays().intValue()){
                                 //如果这个月工作天数大于总天数,那么所有值都设置到本月
                                 budget.setPlanStartMonthDays(budget.getPlanDays());
@@ -618,27 +608,7 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
      */
     @Override
     public List<ProjectCostBudgetVO> getDepartmentPlan(Long deptId, String date) {
-        //初始化时间段
-        String[] split = date.split("-");
-        int year = Integer.parseInt(split[0]);
-        int month = Integer.parseInt(split[1]);
-        LocalDate startDate;
-        LocalDate endDate;
-        startDate =  LocalDate.of(year,month,1);
-        if (Arrays.asList("1,3,5,7,8,10,12".split(",")).contains(month)){
-            endDate =  LocalDate.of(year,month,31);
-        }else {
-            if (month != 2) {
-                endDate = LocalDate.of(year, month, 30);
-            }else {
-                if (year % 4 == 0){
-                    endDate = LocalDate.of(year, month, 29);
-                }else {
-                    endDate = LocalDate.of(year, month, 28);
-                }
-            }
-        }
-        List<ProjectCostBudgetVO> departmentPlan = baseMapper.getDepartmentPlan(deptId, startDate, endDate);
+        List<ProjectCostBudgetVO> departmentPlan = baseMapper.getDepartmentPlan(deptId, date);
         List<DictInfo> allTaskInfo = budgetMapper.getAllTaskInfo();
         Map<Long, List<DictInfo>> taskMap = new HashMap<>();
         if (allTaskInfo != null && allTaskInfo.size() > 0) {
@@ -691,12 +661,8 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
         DictInfo info = baseMapper.getTaskType(planTaskType);
         if (info.getDictValue().intValue() == 2){
             return new BigDecimal(startDate.until(endDate,ChronoUnit.DAYS)).intValue() + 1 ;
-        }else {
-            if (startDate.until(endDate,ChronoUnit.DAYS) > 35){
-                throw new ServiceException("请不要制定超过一个月的固定计划");
-            }
-            return CommonUtil.getWorkDays(startDate, endDate);
         }
+            return dateInfoMapper.getWorkDays(startDate, endDate);
     }
 
     /**
@@ -772,7 +738,7 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
             //获取用户当月填写的日志
             Integer logTotal = baseMapper.getUserMonthLog(userId,start,end);
             //根据开始时间,结束时间获取工作日应该填写
-            days = CommonUtil.getWorkDays(start, end.plusDays(-1));
+            days = dateInfoMapper.getWorkDays(start, end.plusDays(-1));
             //计算 应该填写-实际填写
             vo3.setNotFilledLog(days - logTotal);
         }
@@ -1213,8 +1179,8 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
         if (type == 2){
             vo2.setPlanDays(new BigDecimal(vo2.getPlanStartTime().until(vo2.getPlanEndTime(),ChronoUnit.DAYS) + 1));
         }else {
-            if (vo2.getPlanStartTime().until(vo2.getPlanEndTime(),ChronoUnit.DAYS) > 35){
-                throw new ServiceException("请不要制定超过一个月的固定计划");
+//            if (vo2.getPlanStartTime().until(vo2.getPlanEndTime(),ChronoUnit.DAYS) > 35){
+//                throw new ServiceException("请不要制定超过一个月的固定计划");
 //                //工作天数,工具只能获取50天之内的
 //                LocalDate startDate = vo2.getPlanStartTime();
 //                LocalDate endDate = vo2.getPlanEndTime();
@@ -1224,9 +1190,9 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
 //                    startDate = startDate.plusDays(36L);
 //                }
 //                vo2.setPlanDays(new BigDecimal(i));
-            }else {
-                vo2.setPlanDays(new BigDecimal(CommonUtil.getWorkDays(vo2.getPlanStartTime(), vo2.getPlanEndTime())));
-            }
+//            }else {
+                vo2.setPlanDays(new BigDecimal(dateInfoMapper.getWorkDays(vo2.getPlanStartTime(), vo2.getPlanEndTime())));
+//            }
         }
         if (vo2.getPlanDays().intValue() > vo2.getBudgetDays().multiply(vo2.getStaffCount()).intValue()){
             vo2.setOutMoneyTips("成本增加!该项计划完成时间超过当初测算时间工作时长("+(vo2.getPlanDays().intValue() - vo2.getBudgetDays().multiply(vo2.getStaffCount()).intValue())+")天");
@@ -1299,12 +1265,8 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
                     if (task.getDictValue().intValue() == 2) {
                         l.setPlanDays(new BigDecimal(l.getPlanStartTime().until(l.getPlanEndTime(),ChronoUnit.DAYS) + 1));
                     } else {
-                        if (l.getPlanStartTime().until(l.getPlanEndTime(), ChronoUnit.DAYS) > 35) {
-                            throw new ServiceException("请不要制定超过一个月的固定计划");
-                        }else {
-                            if (l.getIsShowDelete() != 0) {
-                                l.setPlanDays(new BigDecimal(CommonUtil.getWorkDays(budgetVO2.getPlanStartTime(), budgetVO2.getPlanEndTime())));
-                            }
+                        if (l.getIsShowDelete() != 0) {
+                            l.setPlanDays(new BigDecimal(dateInfoMapper.getWorkDays(budgetVO2.getPlanStartTime(), budgetVO2.getPlanEndTime())));
                         }
                     }
                 }
@@ -1353,18 +1315,7 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
             if (task.getDictValue().intValue() == 2){
                 vo2.setPlanDays(new BigDecimal(startDate.until(endDate,ChronoUnit.DAYS)+ 1));
             }else {
-                if (startDate.until(endDate,ChronoUnit.DAYS) > 35){
-                    throw new ServiceException("请不要制定超过一个月的固定计划");
-//                    //工作天数,工具只能获取50天之内的
-//                    int i = 0;
-//                    while (endDate.compareTo(startDate) > 0){
-//                        i += CommonUtil.getWorkDays(startDate, startDate.plusDays(35L));
-//                        startDate = startDate.plusDays(36L);
-//                    }
-//                    vo2.setPlanDays(new BigDecimal(i));
-                }else {
-                    vo2.setPlanDays(new BigDecimal(CommonUtil.getWorkDays(startDate, endDate)));
-                }
+                vo2.setPlanDays(new BigDecimal(dateInfoMapper.getWorkDays(startDate, endDate)));
             }
             vo2.setIsShowEdit(0);
 
@@ -1424,28 +1375,20 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
                 //日志类型为开启,和status=2则 计算计划结束时间到中途开启时间 + 实际工作时间
                 if (planLog.getOpenPlanStartTime() == null){
                     //中途没暂停,开启过任务
-                    if (planLog.getRealPlanStartTime().until(practicalFinishTime, ChronoUnit.DAYS) > 35) {
-                        throw new ServiceException("固定计划完成周期超过一个月,请联系管理员");
-                    }else {
                         if (planLog.getRealPlanStartTime().compareTo(practicalFinishTime) >= 1){
                             throw new ServiceException("数据错误,计划开始时间大于结束时间");
                         }
-                        realWorkDays = CommonUtil.getWorkDays(planLog.getRealPlanStartTime(), practicalFinishTime);
-                    }
+                        realWorkDays = dateInfoMapper.getWorkDays(planLog.getRealPlanStartTime(), practicalFinishTime);
                 }else {
                     //中途暂停,开启过任务
                     //获取上次暂停时实际工作日
                     Integer days = planLog.getRealWorkDays();
                     //计算这次开启后到任务完成之间的工作日
-                    if (planLog.getOpenPlanStartTime().until(practicalFinishTime, ChronoUnit.DAYS) > 35) {
-                        throw new ServiceException("固定计划完成周期超过一个月,请联系管理员");
-                    }else {
-                        if (planLog.getOpenPlanStartTime().compareTo(practicalFinishTime) >= 1){
-                            throw new ServiceException("数据错误,计划开始时间大于结束时间");
-                        }
-                        int day = CommonUtil.getWorkDays(planLog.getOpenPlanStartTime(), practicalFinishTime);
-                        realWorkDays = days + day;
+                    if (planLog.getOpenPlanStartTime().compareTo(practicalFinishTime) >= 1){
+                        throw new ServiceException("数据错误,计划开始时间大于结束时间");
                     }
+                    int day = dateInfoMapper.getWorkDays(planLog.getOpenPlanStartTime(), practicalFinishTime);
+                    realWorkDays = days + day;
                 }
                 //设置status=4,taskAPP=1,实际工资,实际工资天数,实际完成时间,如果计划处于暂停中,那么实际完成时间就是暂停时间
             }
@@ -1455,7 +1398,7 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
             //判断是否跨月
             if (budget.getRealPlanStartTime().getMonthValue() != budget.getPracticalFinishTime().getMonthValue()){
                 budget.setIsTwoMonth(1);
-                int day = CommonUtil.getWorkDays(budget.getRealPlanStartTime(),LocalDate.of(budget.getRealPlanStartTime().getYear(),budget.getRealPlanStartTime().getMonthValue(),budget.getRealPlanStartTime().getMonth().maxLength()));
+                int day = dateInfoMapper.getWorkDays(budget.getRealPlanStartTime(),LocalDate.of(budget.getRealPlanStartTime().getYear(),budget.getRealPlanStartTime().getMonthValue(),budget.getRealPlanStartTime().getMonth().maxLength()));
                 if (day < realWorkDays){
                     budget.setPracticalStartMoney(new BigDecimal(day).multiply(new BigDecimal(money)));
                     budget.setPracticalEndMoney(budget.getActualTotalMoney().subtract(budget.getPracticalStartMoney()));