Browse Source

按项目在列上导出

seyason 3 years ago
parent
commit
4b263e9133
15 changed files with 244 additions and 30 deletions
  1. 4 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportExtraDegreeController.java
  2. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TempDuserController.java
  3. 5 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ReportAlogMembdate.java
  4. 42 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TempDuser.java
  5. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TempDuserMapper.java
  6. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TempDuserService.java
  7. 8 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java
  8. 13 12
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  9. 61 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  10. 15 9
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java
  11. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TempDuserServiceImpl.java
  12. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/MilestoneTaskRefMapper.xml
  13. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  14. 17 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TempDuserMapper.xml
  15. 4 4
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

+ 4 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportExtraDegreeController.java

@@ -190,7 +190,10 @@ public class ReportExtraDegreeController {
         if (withProjects == 1) {
             List<Project> allProjects = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", user.getCompanyId()));
             for (ReportExtraDegree degree : all) {
-                degree.setProjects(allProjects.stream().filter(pro->pro.getAssociateDegreeNames() != null && pro.getAssociateDegreeNames().contains(degree.getName())).map(Project::getProjectName).collect(Collectors.joining(",")));
+                degree.setProjects(allProjects.stream().filter(pro->pro.getAssociateDegreeNames() != null &&
+                        (pro.getAssociateDegreeNames().equals(degree.getName()) || pro.getAssociateDegreeNames().startsWith(degree.getName()+",")
+                            || pro.getAssociateDegreeNames().contains(","+degree.getName()+",")
+                            || pro.getAssociateDegreeNames().endsWith(","+degree.getName()))).map(Project::getProjectName).collect(Collectors.joining(",")));
             }
         }
 

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TempDuserController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-05-31
+ */
+@RestController
+@RequestMapping("/temp-duser")
+public class TempDuserController {
+
+}
+

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ReportAlogMembdate.java

@@ -6,9 +6,12 @@ import java.time.LocalDate;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
 
 /**
  * <p>
@@ -29,6 +32,8 @@ public class ReportAlogMembdate extends Model<ReportAlogMembdate> {
     private Integer id;
 
     @TableField("create_date")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate createDate;
 
     @TableField("user_id")

+ 42 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TempDuser.java

@@ -0,0 +1,42 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-05-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class TempDuser extends Model<TempDuser> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("dingding_userid")
+    private String dingdingUserid;
+
+    @TableField("name")
+    private String name;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TempDuserMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.TempDuser;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-05-31
+ */
+public interface TempDuserMapper extends BaseMapper<TempDuser> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TempDuserService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.TempDuser;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-05-31
+ */
+public interface TempDuserService extends IService<TempDuser> {
+
+}

+ 8 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java

@@ -56,6 +56,9 @@ public class DingDingServiceImpl implements DingDingService {
     public static String SUITE_ACCESS_TOKEN = null;
     public static long suiteTokenExpireTime = 0L;
 
+    @Resource
+    TempDuserMapper tempDuserMapper;
+
     public static String PRE_AUTH_CODE = null;
     public static long expireTime = 0L;
 
@@ -769,6 +772,11 @@ public class DingDingServiceImpl implements DingDingService {
                     .setDingdingUnionid(userJson.getString("unionid"))
                     .setColor(ColorUtil.randomColor());
 
+            TempDuser duser = new TempDuser();
+            duser.setDingdingUserid(user.getDingdingUserid());
+            duser.setName(user.getName());
+//            tempDuserMapper.insert(duser);
+
             if (departmentId != null) {
                 user.setDepartmentCascade(convertDepartmentIdToCascade(departmentId));
             }

+ 13 - 12
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -829,20 +829,21 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     List<Map<String, Object>> mapList = membList.stream().filter(mb -> mb.get("creatorId").equals(user.getId())).collect(Collectors.toList());
                     List<String> membRowData=new ArrayList<>();
                     membRowData.add(user.getName());
-                        for(Map<String, Object> membMap :mapList){
-                            for(Object i:projectIds){
-                                if(membMap.get("projectId").equals(i)){
-                                    membRowData.add(String.valueOf(membMap.get("cost")));
-                                    membRowData.add(String.valueOf(membMap.get("costMoney")));
-                                    flag=true;
-                                }
+
+                    for(Map<String, Object> membMap :mapList){
+                        for(Object i:projectIds){
+                            if(membMap.get("projectId").equals(i)){
+                                membRowData.add(String.valueOf(membMap.get("cost")));
+                                membRowData.add(String.valueOf(membMap.get("costMoney")));
+                                flag=true;
                             }
-                            lineCostTime += (Double)membMap.get("cost");
-                            lineMoneyCost = lineMoneyCost.add((BigDecimal)membMap.get("costMoney"));
-                    }
-                        if(flag){
-                            allList.add(membRowData);
                         }
+                        lineCostTime += (Double)membMap.get("cost");
+                        lineMoneyCost = lineMoneyCost.add((BigDecimal)membMap.get("costMoney"));
+                    }
+                    if(flag){
+                        allList.add(membRowData);
+                    }
                 }
                 //合计
                 /*sumRow=new ArrayList<>();

+ 61 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -99,6 +99,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     @Resource
     private ProfessionMapper professionMapper;
     @Resource
+    private LeaveSheetMapper leaveSheetMapper;
+    @Resource
     private ReportProfessionProgressService reportProfessionProgressService;
     @Resource
     private ProjectProfessionMapper projectProfessionMapper;
@@ -720,7 +722,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         if (finishedTaskIds.size() > 0) {
             Task fTask = new Task();
             fTask.setTaskStatus(1);
-            fTask.setFinishDate(LocalDate.now());
+            LocalDate createDate = reportList.get(0).getCreateDate();
+            fTask.setFinishDate(createDate);
             taskMapper.update(fTask, new QueryWrapper<Task>().in("id", finishedTaskIds));
             taskService.notifyMileStoneFinish(companyId, finishedTaskIds);
         }
@@ -2159,7 +2162,21 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             userMonthWorks.add(mon);
         });
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         //对于全部的用户已填日报,对比请假的数据,进行填充
+        TimeType timeType = timeTypeMapper.selectById(companyId);
+        //获取钉钉的请假日期
+        List<LeaveSheet> leaveSheets = null;
+        if (timeType.getSyncDingding() == 1) {
+            List<String> userIds = new ArrayList<>();
+            for (UserMonthWork work : userMonthWorks) {
+                userIds.add(work.userId);
+            }
+            if (userIds.size() > 0) {
+                leaveSheets = leaveSheetMapper.selectList(
+                        new QueryWrapper<LeaveSheet>().eq("company_id", companyId).in("owner_id", userIds).ge("end_date", startDate).le("start_date", endDate));
+            }
+        }
         for (UserMonthWork userMonthWork : userMonthWorks) {
             List<Map<String, Object>> worktimeList = userMonthWork.worktimeList;
             //获取到该员工请假的数据
@@ -2186,6 +2203,40 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     worktimeList.add(leaveMap);
                 }
             });
+            //钉钉请假的数据
+            if (timeType.getSyncDingding() == 1 && leaveSheets != null && leaveSheets.size() > 0) {
+                List<LeaveSheet> curUserLeaveList = leaveSheets.stream().filter(leave -> leave.getOwnerId().equals(userMonthWork.userId)).collect(Collectors.toList());
+                curUserLeaveList.forEach(leave->{
+                    LocalDate startDate1 = leave.getStartDate();
+                    LocalDate endDate1 = leave.getEndDate();
+                    //该范围内的都算请假
+                    int i=0;
+                    while(true) {
+                        LocalDate workDate = startDate1.plusDays(i);
+                        String leaveDateStr = dateTimeFormatter.format(workDate);
+                        Optional<Map<String, Object>> find = worktimeList.stream().filter(w->((String)w.get("createDate")).equals(leaveDateStr)).findFirst();
+                        if (find.isPresent()) {
+                            //打卡的有记录,加上请假
+                            Object str = find.get().get("workingTime");
+                            if (str instanceof Double) {
+                                String newStr = (double)find.get().get("workingTime")+"(请假)";
+                                find.get().put("workingTime", newStr);
+                            }
+                        } else {
+                            //没有对应的打卡记录,直接加上当天请假
+                            Map<String, Object> leaveMap = new HashMap<>();
+                            leaveMap.put("createDate", leaveDateStr);
+                            leaveMap.put("workingTime", "请假");
+                            worktimeList.add(leaveMap);
+                        }
+
+                        if (workDate.isEqual(endDate1)) {
+                            break;
+                        }
+                        i++;
+                    }
+                });
+            }
         }
         HashMap map = new HashMap();
         List<HashMap> days = new ArrayList<HashMap>();
@@ -2567,6 +2618,10 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             if (timeType.getCustomDegreeActive() == 1) {
                 titles.add(timeType.getCustomDegreeName());
             }
+            //是否启用了自定义数值
+            if (timeType.getCustomDataActive() == 1) {
+                titles.add(timeType.getCustomDataName());
+            }
             if (timeType.getShowFillauditTime() == 1) {
                 titles.add("填写时间");
                 titles.add("审核人");
@@ -2751,7 +2806,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     row.createCell(index).setCellValue(map.get("degreeName") != null?map.get("degreeName").toString():"");
                     index++;
                 }
-                //
+                //是否启用了自定义数值
+                if (timeType.getCustomDataActive() == 1) {
+                    row.createCell(index).setCellValue(map.get("customData") != null?map.get("customData").toString():"");
+                    index++;
+                }
                 if (timeType.getShowFillauditTime() == 1) {
                     row.createCell(index).setCellValue(sdf.format((Date)map.get("time")));
                     index++;

+ 15 - 9
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java

@@ -70,6 +70,8 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
     private CompanyDingdingMapper companyDingdingMapper;
     @Resource
     private ParticipationMapper participationMapper;
+    @Resource
+    private ReportMapper reportMapper;
 
     @Override
     public HttpRespMsg getExecutorPanel(Integer projectId) {
@@ -456,6 +458,17 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
         } else {
             taskGroupMapper.deleteById(item.getId());
             //删除相关的阶段和任务
+            List<Task> taskList = taskMapper.selectList(new QueryWrapper<Task>().select("id").eq("group_id", item.getId()));
+            List<Integer> collect = taskList.stream().map(Task::getId).collect(Collectors.toList());
+            if (collect.size() > 0) {
+                long cnt = reportMapper.selectCount(new QueryWrapper<Report>().in("task_id", collect));
+                if (cnt > 0) {
+                    for (Integer tid : collect) {
+                        reportMapper.deleteReportTask(tid);
+                    }
+                }
+            }
+
             taskMapper.delete(new QueryWrapper<Task>().eq("group_id", item.getId()));
             stagesMapper.delete(new QueryWrapper<Stages>().eq("group_id", item.getId()));
 
@@ -464,13 +477,6 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
             msg.data = taskGroupMapper.selectList(queryWrapper);
         }
 
-        //检查,如果分组下有任务,不得删除
-        int cnt = taskMapper.selectCount(new QueryWrapper<Task>().eq("group_id", item.getId()));
-        if (cnt > 0) {
-            msg.setError("该分组下存在任务,不可删除");
-        } else {
-
-        }
         return msg;
     }
 
@@ -508,8 +514,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
 
     @Override
     public void notifyMileStoneFinish(Integer companyId, List<Integer> taskIdList) {
-        LocalDate now = LocalDate.now();
-        String finishDate = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(now);
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         new Thread() {
             public void run() {
                 List<CompanyDingding> dingdingList = companyDingdingMapper.selectList(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
@@ -518,6 +523,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
                     CompanyDingding dingding = dingdingList.get(0);
                     List<Task> taskList = taskMapper.selectList(new QueryWrapper<Task>().in("id", taskIdList).eq("task_type", 1));
                     for (Task task : taskList) {
+                        String finishDate = dateTimeFormatter.format(task.getFinishDate());
                         Project project = projectMapper.selectById(task.getProjectId());
                         List<Participation> participationList = participationMapper.selectList(new QueryWrapper<Participation>().eq("project_id", task.getProjectId()));
                         List<User> partUserList = userMapper.selectList(new QueryWrapper<User>().in("id", participationList.stream().map(Participation::getUserId).collect(Collectors.toList())));

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TempDuserServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.TempDuser;
+import com.management.platform.mapper.TempDuserMapper;
+import com.management.platform.service.TempDuserService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-05-31
+ */
+@Service
+public class TempDuserServiceImpl extends ServiceImpl<TempDuserMapper, TempDuser> implements TempDuserService {
+
+}

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/MilestoneTaskRefMapper.xml

@@ -30,7 +30,7 @@
         select milestone_task_ref.id, milestone_id, task_id, name, task_status from milestone_task_ref left join task on task.id = milestone_task_ref.task_id
         where milestone_task_ref.project_id = #{projectId}
         <if test="groupId != null">
-            and task.group_id = #{groupId}
+            and milestone_task_ref.milestone_id in(select id from task where task.group_id = #{groupId})
         </if>
     </select>
 </mapper>

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -202,7 +202,7 @@
         FROM report AS a
         JOIN user AS b ON a.creator_id = b.id
         left join department on department.department_id = a.dept_id
-        WHERE a.company_id=#{companyId} and a.state = 1 and a.custom_data > 0
+        WHERE a.company_id=#{companyId} and a.state = 1
         <if test="projectId != null">
             and a.project_id = #{projectId}
         </if>

+ 17 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TempDuserMapper.xml

@@ -0,0 +1,17 @@
+<?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="com.management.platform.mapper.TempDuserMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.TempDuser">
+        <id column="id" property="id" />
+        <result column="dingding_userid" property="dingdingUserid" />
+        <result column="name" property="name" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, dingding_userid, name
+    </sql>
+
+</mapper>

+ 4 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -339,8 +339,8 @@
                             :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
                             <i class="fa fa-trash" style="color: red;;font-size:18px;"></i>
                         </el-link>
-                        <el-link type="primary" v-if="canEdit"
-                            :underline="false" style="margin-left:10px;" @click="copyProject(index)">复制</el-link>
+                        <!-- <el-link type="primary" v-if="canEdit"
+                            :underline="false" style="margin-left:10px;" @click="copyProject(index)">复制</el-link> -->
                     </el-form-item>
                     <el-form-item :label="user.companyId==781?'描述':'项目描述'" v-if="user.company.packageProject==0&&domain.projectId&&projectList.filter(p=>p.id == domain.projectId)[0].projectDesc">
                         <span>{{projectList.filter(p=>p.id == domain.projectId)[0].projectDesc}}</span>
@@ -449,8 +449,8 @@
                             <el-input :disabled="!canEdit || domain.isOvertime==null || domain.isOvertime==0" v-model="domain.overtimeHours" @blur="triggerCalculateOT(index)" @input="domain.overtimeHours=domain.overtimeHours.replace(/[^\d.]/g,'')" style="width: 100px;"></el-input><span style="margin-left:5px">小时</span>
                             </div>
                             
-                            <el-link type="primary" v-if="canEdit"
-                                :underline="false" style="margin-left:10px;" @click="copyProject(index)">复制</el-link>
+                            <!-- <el-link type="primary" v-if="canEdit"
+                                :underline="false" style="margin-left:10px;" @click="copyProject(index)">复制</el-link> -->
                         </el-form-item>
                         <el-form-item :label="user.companyId==781?'描述':'项目描述'" v-if="user.company.packageProject==0&&domain.projectId&&projectList.filter(p=>p.id == domain.projectId)[0].projectDesc">
                             <span>{{projectList.filter(p=>p.id == domain.projectId)[0].projectDesc}}</span>