ソースを参照

转移任务设置限制,完成任务统计每天

qianxb 2 年 前
コミット
754482b074

+ 3 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectCostBudgetService.java

@@ -92,6 +92,9 @@ public interface IProjectCostBudgetService extends BaseService<ProjectCostBudget
     //任务审批完成闭环时,计算当前任务的实际用时和人工成本,传入任务id和任务实际完成时间
     void taskFinishedStats(Long PlanId,LocalDate practicalFinishTime);
 
+    //任务转移审批通过时,计算上一个任务人工作量,并清空workDate
+    void taskChangeStats(Long PlanId,Long taskUser);
+
     //获取所有项目截至当年的维护支出
     BigDecimal getAllMaintainCost(int year);
 

+ 2 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/DepartmentPlanLogImpl.java

@@ -113,6 +113,8 @@ public class DepartmentPlanLogImpl extends BaseServiceImpl<DepartmentPlanLogMapp
                         str.append(localDate.toString() + ",");
                     }
                     log.setWorkDate(str.toString());
+                }else {
+                    throw new ServiceException("任务日期错误,请联系管理员");
                 }
             }
         }else {

+ 33 - 12
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectCostBudgetServiceImpl.java

@@ -1426,7 +1426,7 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
         int taskType = dictInfo.getDictValue().intValue();
         //计划为临时计划,则不计算金额直接闭环
         if (taskType == 2){
-            //为临时任务设置任务实际实际,方便统计
+            //为临时任务设置任务实际天数,方便统计
             budget.setPracticalTaskDays(new BigDecimal(1 + budget.getPracticalFinishTime().until(budget.getRealPlanStartTime(), ChronoUnit.DAYS)));
             this.updateById(budget);
         }else {
@@ -1438,19 +1438,24 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
             Double money = userInfo.getOneMoney();
             //为固定计划,则获取最后一条任务日志
             DepartmentPlanLog planLog = logMapper.getNewestPlanLog(PlanId);
-
             //为员工任务信息表插入实际工作时间
-            //获取计划日期中的工作日
+            String workDate = planLog.getWorkDate();
+            StringBuilder str = new StringBuilder();
             List<LocalDate> workDaysList = new ArrayList<>();
-            if (planLog.getSort() == 1){
-                workDaysList.addAll(dateInfoMapper.getWorkDaysList(budget.getRealPlanStartTime(), budget.getPracticalFinishTime()));
-            }else if (planLog.getSort() == 2){
-                workDaysList.addAll(dateInfoMapper.getWorkDaysList(budget.getRealPlanStartTime(), planLog.getPauseTime()));
-            }else {
-                //获取所有的计划日志,计算真实工作时间
-                List<DepartmentPlanLog> logList = logMapper.getAllLog(PlanId);
-                for (DepartmentPlanLog log : logList) {
-
+            //如果最后一条任务操作是暂停,则直接使用工作日集合
+            if (StringUtils.isNotBlank(workDate)){
+                String[] days = workDate.split(",");
+                if (days != null && days.length > 0){
+                    for (String day : days) {
+                        workDaysList.add(LocalDate.parse(day));
+                    }
+                }
+            }
+            //如果最后一条任务操作是开启,则+最后开启时间与提交日期之间的工作日
+            if (planLog.getStatus() == 1){
+                List<LocalDate> list = dateInfoMapper.getWorkDaysList(planLog.getOpenPlanStartTime(), practicalFinishTime);
+                if (list != null && list.size() > 0){
+                    workDaysList.addAll(list);
                 }
             }
             List<EmployeeTaskInfo> infoList = new ArrayList<>();
@@ -1523,6 +1528,22 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
         }
     }
 
+    /**
+     * 任务转移审批通过时,计算上一个任务人工作量,并清空workDate
+     * @param PlanId
+     */
+    @Override
+    public void taskChangeStats(Long PlanId,Long taskUser) {
+        ProjectCostBudget budget = this.getById(PlanId);
+        //如果为临时任务,则直接跳过
+        DictInfo dictInfo = baseMapper.getTaskType(budget.getPlanTaskType());
+        int taskType = dictInfo.getDictValue().intValue();
+        //计划为固定计划时,则插入工作量,清空workDate
+        if (taskType == 1){
+
+        }
+    }
+
     /**
      * 根据年份获取所有项目的维护支出
      * @return

+ 4 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/TaskProcessServiceImpl.java

@@ -890,6 +890,10 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
                         planInformService.taskFinishedInform2("计划任务完成", taskProcessInfo.getAuditUserIds(), SecureUtil.getNickName(), taskProcessInfo.getStatus());
 
                     } else if (dto.getUpdateType().equals("2")) {
+                        //如果任务正在进行中,则提示要先暂停才能转移
+                        if (planTaskInfo.getStatus() != 3){
+                            throw new ServiceException("请先暂停任务,再转移");
+                        }
                         //任务转移
                         TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
                         taskProcessInfo.setId(SnowFlakeUtil.getId());