Kaynağa Gözat

转移任务通知

qianxb 2 yıl önce
ebeveyn
işleme
c7900b85db

+ 1 - 0
blade-service/blade-control/src/main/java/org/springblade/control/controller/AnnualBudgetController.java

@@ -8,6 +8,7 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.springblade.control.dto.AnnualBudgetDTO;
 import org.springblade.control.dto.ControlProjectInfoDTO;
 import org.springblade.control.entity.AnnualBudget;

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

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.control.entity.AnnualBudgetDisburse;
 import org.springblade.control.entity.PlanInform;
+import org.springblade.system.user.entity.User;
 
 import java.util.List;
 
@@ -16,4 +17,6 @@ public interface PlanInformMapper extends BaseMapper<PlanInform> {
 
 
     List<PlanInform> getUserInform(@Param("userId") Long userId);
+
+    User getUserById(@Param("id") Long taskUser);
 }

+ 3 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/PlanInformMapper.xml

@@ -8,4 +8,7 @@
         order by inform_date desc
         limit 5
     </select>
+    <select id="getUserById" resultType="org.springblade.system.user.entity.User">
+        SELECT id,name FROM blade_user WHERE id = #{id}
+    </select>
 </mapper>

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

@@ -57,4 +57,5 @@ public interface ProjectInfoMapper extends BaseMapper<ControlProjectInfo> {
     //返回指定项目,指定费用分类对应的进程
     List<ProjectReimburseVO> getProjectReimburse3(@Param("projectId") Long projectId,@Param("costType") Integer costType);
 
+    String getProjectNameByBudgetId(@Param("id") Long id);
 }

+ 3 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectInfoMapper.xml

@@ -128,5 +128,8 @@
         WHERE fri.is_deleted = 0 and fri.status = 2
             and #{year} = DATE_FORMAT(fri.fr_date ,'%Y')
     </select>
+    <select id="getProjectNameByBudgetId" resultType="java.lang.String">
+        select cpi.name  from c_control_project_info cpi WHERE id = (SELECT pcb.project_id from c_project_cost_budget pcb WHERE pcb.id = #{id})
+    </select>
 
 </mapper>

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

@@ -18,4 +18,7 @@ public interface IPlanInformService extends BaseService<PlanInform> {
     //任务完成,传入任务名称.任务人和审批人
     void taskFinishedInform(String taskName,Long taskUser,String appUser,Integer status);
     void taskFinishedInform2(String taskName,String taskUser,String appUser,Integer status);
+
+    //任务转移审批通过,通知
+    void taskChangedInform(Long taskUser,Long changedUser,String appUserName,String planDesc);
 }

+ 27 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/PlanInformServiceImpl.java

@@ -21,6 +21,7 @@ import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.system.user.entity.User;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -99,4 +100,30 @@ public class PlanInformServiceImpl extends BaseServiceImpl<PlanInformMapper, Pla
         this.saveBatch(list);
     }
 
+    /**
+     * 任务转移审批通过,通知
+     * @param taskUser
+     * @param changedUser
+     */
+    @Override
+    public void taskChangedInform(Long taskUser, Long changedUser, String appUserName,String planDesc) {
+        List<PlanInform> list = new ArrayList<>();
+        //获取任务人
+        User u1 = baseMapper.getUserById(taskUser);
+        //通知任务人
+        PlanInform inform1 = new PlanInform();
+        inform1.setInformDetails("《任务转移》" + "已被" + "【" + appUserName + "】" + "审批通过");
+        inform1.setInformUser(taskUser);
+        inform1.setInformDate(LocalDateTime.now());
+        list.add(inform1);
+        //获取转移人
+        PlanInform inform2 = new PlanInform();
+        inform2.setInformDetails("【" + u1.getName() + "】" + "向您转移了任务" + "《" + planDesc + "》");
+        inform2.setInformUser(changedUser);
+        inform2.setInformDate(LocalDateTime.now());
+        list.add(inform2);
+        //通知转移人
+        this.saveBatch(list);
+    }
+
 }

+ 42 - 2
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectCostBudgetServiceImpl.java

@@ -1460,7 +1460,7 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
             }
             List<EmployeeTaskInfo> infoList = new ArrayList<>();
             for (LocalDate today : workDaysList) {
-                //保存预算到任务计划表
+                //保存实际执行任务时间-到任务计划表
                 EmployeeTaskInfo employeeTaskInfo = new EmployeeTaskInfo();
                 employeeTaskInfo.setBudgetId(budget.getId());
                 employeeTaskInfo.setProjectId(budget.getProjectId());
@@ -1540,7 +1540,47 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
         int taskType = dictInfo.getDictValue().intValue();
         //计划为固定计划时,则插入工作量,清空workDate
         if (taskType == 1){
-
+            //获取任务人工资
+            User userInfo = baseMapper.getUserInfo(taskUser);
+            if (userInfo.getOneMoney() == null){
+                throw new ServiceException("没有为任务人设置工资");
+            }
+            Double money = userInfo.getOneMoney();
+            DepartmentPlanLog planLog = logMapper.getNewestPlanLog(PlanId);
+            //为员工任务信息表插入实际工作时间
+            String workDate = planLog.getWorkDate();
+            List<LocalDate> workDaysList = new ArrayList<>();
+            //直接使用工作日集合
+            if (StringUtils.isNotBlank(workDate)){
+                String[] days = workDate.split(",");
+                if (days != null && days.length > 0){
+                    for (String day : days) {
+                        workDaysList.add(LocalDate.parse(day));
+                    }
+                    List<EmployeeTaskInfo> infoList = new ArrayList<>();
+                    for (LocalDate today : workDaysList) {
+                        //保存预算到任务计划表
+                        EmployeeTaskInfo employeeTaskInfo = new EmployeeTaskInfo();
+                        employeeTaskInfo.setBudgetId(budget.getId());
+                        employeeTaskInfo.setProjectId(budget.getProjectId());
+                        employeeTaskInfo.setBudgetParentId(budget.getParentId());
+                        employeeTaskInfo.setUnitType(budget.getUnitType());
+                        employeeTaskInfo.setDeptId(budget.getDeptId());
+                        employeeTaskInfo.setCostType(budget.getCostType());
+                        employeeTaskInfo.setTaskDetail(budget.getTaskDetail());
+                        employeeTaskInfo.setProjectProcess(budget.getProjectProcess());
+                        employeeTaskInfo.setBudgetType(budget.getBudgetType());
+                        employeeTaskInfo.setOneDay(today);
+                        employeeTaskInfo.setWorkType(1);
+                        employeeTaskInfo.setPostType(budget.getPostType());
+                        employeeTaskInfo.setEmployeeSalary(new BigDecimal(money));
+                        infoList.add(employeeTaskInfo);
+                    }
+                    employeeTaskInfoService.saveBatch(infoList);
+                    planLog.setWorkDate("");
+                    logMapper.updateById(planLog);
+                }
+            }
         }
     }
 

+ 5 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectInfoServiceImpl.java

@@ -52,6 +52,11 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, C
 
     private final JdbcTemplate jdbcTemplate;
 
+
+    public String getProjectNameByBudgetId(Long id){
+        return baseMapper.getProjectNameByBudgetId(id);
+    }
+
     /**
      * 自定义分页
      *

+ 17 - 8
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/TaskProcessServiceImpl.java

@@ -1085,6 +1085,8 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
 
                             //删除当前计划任务与日志关系信息(如果任务转移,那么就不属于该用户了,就应该在新用户写日志时,与新用户绑定)
                             jdbcTemplate.execute("delete from c_log_history_task_record where task_id = " + dataId);
+
+
                         }
 
                     } else if (taskStatus == 3) { //驳回审批
@@ -1194,18 +1196,24 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
         switch (businessDataType) {
             case 1:
                 //计划任务
-                TaskProcessInfo taskProcessInfo1 = jdbcTemplate.query("select status from c_task_process_info where id = " + approveTaskId, new BeanPropertyRowMapper<>(TaskProcessInfo.class)).stream().findAny().orElse(null);
+                TaskProcessInfo taskProcessInfo1 = jdbcTemplate.query("select report_user_id,task_name,status from c_task_process_info where id = " + approveTaskId, new BeanPropertyRowMapper<>(TaskProcessInfo.class)).stream().findAny().orElse(null);
                 ProjectCostBudget projectCostBudget = jdbcTemplate.query("select plan_task_desc,task_user,id from c_project_cost_budget where id = " + dataId, new BeanPropertyRowMapper<>(ProjectCostBudget.class)).stream().findAny().orElse(null);
                 if (taskProcessInfo1 != null && projectCostBudget != null) {
                     //获取任务完成时间
                     TaskPlanUpdateStatusInfo taskPlanUpdateStatusInfo = jdbcTemplate.query("select completion_time from c_task_plan_update_status_info where update_type = 1 and approve_task_id = " + approveTaskId + " and plan_task_id = " + dataId, new BeanPropertyRowMapper<>(TaskPlanUpdateStatusInfo.class)).stream().findAny().orElse(null);
-                    if (taskPlanUpdateStatusInfo != null && taskProcessInfo1.getStatus().equals(2)) { //已完成的任务才推送
-                        //修改任务实际完成时间、金额
-                        LocalDate localDate = taskPlanUpdateStatusInfo.getCompletionTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
-                        projectCostBudgetService.taskFinishedStats(projectCostBudget.getId(), localDate);
+                    if (taskProcessInfo1.getTaskName().contains("完成任务")){
+                        if (taskPlanUpdateStatusInfo != null && taskProcessInfo1.getStatus().equals(2)) { //已完成的任务才推送
+                            //修改任务实际完成时间、金额
+                            LocalDate localDate = taskPlanUpdateStatusInfo.getCompletionTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+                            projectCostBudgetService.taskFinishedStats(projectCostBudget.getId(), localDate);
+                        }
+                        //日志操作信息
+                        planInformService.taskFinishedInform(projectCostBudget.getPlanTaskDesc(), projectCostBudget.getTaskUser(), SecureUtil.getUserName(), taskProcessInfo1.getStatus());
+                    }else if (taskProcessInfo1.getTaskName().contains("转移任务")){
+                        projectCostBudgetService.taskChangeStats(Long.parseLong(dataId),taskProcessInfo1.getReportUserId());
+                        //日志操作信息
+                        planInformService.taskChangedInform(taskPlanUpdateStatusInfo.getStartTransferObject(),taskPlanUpdateStatusInfo.getTransferObject(), SecureUtil.getUserName(),projectCostBudget.getPlanTaskDesc());
                     }
-                    //日志操作信息
-                    planInformService.taskFinishedInform(projectCostBudget.getPlanTaskDesc(), projectCostBudget.getTaskUser(), SecureUtil.getUserName(), taskProcessInfo1.getStatus());
                 }
 
                 break;
@@ -1311,8 +1319,9 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
             case 10:
                 TaskProcessInfo taskProcessInfo10 = jdbcTemplate.query("select status,report_user_id from c_task_process_info where id = " + approveTaskId, new BeanPropertyRowMapper<>(TaskProcessInfo.class)).stream().findAny().orElse(null);
                 if (taskProcessInfo10 != null && taskProcessInfo10.getStatus().equals(2)) {
+                    String name = projectInfoServiceImpl.getProjectNameByBudgetId(Long.parseLong(dataId));
                     //日志操作信息
-                    planInformService.taskFinishedInform("成本测算申请", taskProcessInfo10.getReportUserId(), SecureUtil.getNickName(), taskProcessInfo10.getStatus());
+                    planInformService.taskFinishedInform(name +"-成本测算申请", taskProcessInfo10.getReportUserId(), SecureUtil.getNickName(), 4);
                 }
                 break;
         }