Ver código fonte

Merge branch 'master' of http://47.100.37.243:10080/wutt/manHourHousekeeper

Lijy 2 anos atrás
pai
commit
eb5b61dc5f

+ 95 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -5792,6 +5792,53 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             NumberFormat nf = NumberFormat.getPercentInstance();
             li.put("proportion",nf.format(divide));
         });
+        Integer companyId = user.getCompanyId();
+        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
+        List<LeaveSheet> leaveSheet = leaveSheetMapper.selectLeave(companyId,startDate,endDate);
+        List<Department> deptName = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
+        TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", companyId));
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDate localStartDate = LocalDate.parse(startDate, dateTimeFormatter);
+        LocalDate localEndDate = LocalDate.parse(endDate, dateTimeFormatter);
+        for (Map<String, Object> map : list) {
+            //取部门名
+            for (Department department : deptName) {
+                if (map.get("deptId").toString().equals(department.getDepartmentId().toString())){
+                    if (wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1){
+                        map.put("deptName",getWxDepartment(department));
+                    }else {
+                        map.put("deptName",getSupDepartment(department));
+                    }
+                    continue;
+                }
+            }
+            //计算请假时间
+            Float leaveSum = 0F;
+            for (LeaveSheet sheet : leaveSheet) {
+                if (sheet.getOwnerId().equals(map.get("userId"))){
+//                    System.err.println(sheet.getOwnerName());
+//                    System.err.println(sheet.getStartDate());
+//                    System.err.println(sheet.getEndDate());
+                    Float timeHours = sheet.getTimeHours();
+                    //若请假开始时间不在筛选时间内
+                    if (sheet.getStartDate().isBefore(localStartDate)) {
+                        long day = localStartDate.toEpochDay() - sheet.getStartDate().toEpochDay();
+                        timeHours -= day * allDay.getAllday();
+//                        System.err.println("请假开始时间不在筛选时间内,应减去" + day * allDay.getAllday()+"小时");
+                    }
+                    //若请假结束时间不在筛选时间内
+                    if (sheet.getEndDate().isAfter(localEndDate)) {
+                        long day = sheet.getEndDate().toEpochDay() - localEndDate.toEpochDay();
+                        timeHours -= day * allDay.getAllday();
+//                        System.err.println("请假结束时间不在筛选时间内,应减去"+day * allDay.getAllday()+"小时");
+                    }
+//                    System.err.println("计算完的时间为:" + timeHours);
+                    leaveSum += timeHours;
+                }
+            }
+//            System.err.println("总时间为:"+leaveSum);
+            map.put("leaveSum",leaveSum + "h");
+        }
         HashMap map=new HashMap();
         map.put("total",total);
         map.put("result",list);
@@ -5826,11 +5873,55 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             }
         }
         List<Map<String, Object>> list = projectMapper.getUserWorkingTimeList(userId, user.getCompanyId(), startDate, endDate, projectId,null,null,null,deptIds);
-        //String[] string={"人员","工号","普通项目工时","公共项目工时","总工时","公共项目工时占比"};
-        String[] string={MessageUtils.message("entry.personnel"),MessageUtils.message("entry.No"),MessageUtils.message("entry.GenProHours"),MessageUtils.message("entry.PubProHours"),MessageUtils.message("entry.totalManHours"),MessageUtils.message("entry.PubProHoursProp")};
+        //String[] string={"人员","部门","工号","请假时长","普通项目工时","公共项目工时","总工时","公共项目工时占比"};
+        String[] string={MessageUtils.message("entry.personnel"),MessageUtils.message("excel.department"),MessageUtils.message("entry.No"),MessageUtils.message("leave.duration"),MessageUtils.message("entry.GenProHours"),MessageUtils.message("entry.PubProHours"),MessageUtils.message("entry.totalManHours"),MessageUtils.message("entry.PubProHoursProp")};
         List<List<String>> dataList=new ArrayList<>();
         dataList.add(Arrays.asList(string));
+        Integer companyId = user.getCompanyId();
+        List<LeaveSheet> leaveSheet = leaveSheetMapper.selectLeave(companyId,startDate,endDate);
+        List<Department> deptName = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
+        TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", companyId));
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDate localStartDate = LocalDate.parse(startDate, dateTimeFormatter);
+        LocalDate localEndDate = LocalDate.parse(endDate, dateTimeFormatter);
         for(Map<String,Object> item:list){
+            //取部门名
+            for (Department department : deptName) {
+                if (item.get("deptId").toString().equals(department.getDepartmentId().toString())){
+                    if (wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1){
+                        item.put("deptName",getWxDepartment(department));
+                    }else {
+                        item.put("deptName",getSupDepartment(department));
+                    }
+                    continue;
+                }
+            }
+            //计算请假时间
+            Float leaveSum = 0F;
+            for (LeaveSheet sheet : leaveSheet) {
+                if (sheet.getOwnerId().equals(item.get("userId"))){
+//                    System.err.println(sheet.getOwnerName());
+//                    System.err.println(sheet.getStartDate());
+//                    System.err.println(sheet.getEndDate());
+                    Float timeHours = sheet.getTimeHours();
+                    //若请假开始时间不在筛选时间内
+                    if (sheet.getStartDate().isBefore(localStartDate)) {
+                        long day = localStartDate.toEpochDay() - sheet.getStartDate().toEpochDay();
+                        timeHours -= day * allDay.getAllday();
+//                        System.err.println("请假开始时间不在筛选时间内,应减去" + day * allDay.getAllday()+"小时");
+                    }
+                    //若请假结束时间不在筛选时间内
+                    if (sheet.getEndDate().isAfter(localEndDate)) {
+                        long day = sheet.getEndDate().toEpochDay() - localEndDate.toEpochDay();
+                        timeHours -= day * allDay.getAllday();
+//                        System.err.println("请假结束时间不在筛选时间内,应减去"+day * allDay.getAllday()+"小时");
+                    }
+//                    System.err.println("计算完的时间为:" + timeHours);
+                    leaveSum += timeHours;
+                }
+            }
+//            System.err.println("总时间为:"+leaveSum);
+            item.put("leaveSum",leaveSum + "h");
             List<String> subList=new ArrayList<>();
             double isPublic = (double) item.get("isPublic");
             double workingTime = (double) item.get("workingTime");
@@ -5842,7 +5933,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             }else {
                 subList.add(String.valueOf(item.get("username")));
             }
+            subList.add(String.valueOf(item.get("deptName")));
             subList.add(String.valueOf(StringUtils.isEmpty(item.get("jobNumber"))?"":item.get("jobNumber")));
+            subList.add(String.valueOf(item.get("leaveSum")));
             subList.add(String.valueOf(item.get("unPublic")));
             subList.add(String.valueOf(item.get("isPublic")));
             subList.add(String.valueOf(item.get("workingTime")));

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -328,6 +328,7 @@ public class TimingTask {
         needSynLeave.forEach(item->{
             companyId.add(item.getCompanyId());
         });
+        companyId.add(-1);
         //查询更新审批中的请假单
         List<LeaveSheet> approvalLeave = leaveSheetMapper.selectApprovalList();
         //插入请假单并更新审核中的请假单

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

@@ -689,6 +689,7 @@
     <!--获取人员工时-->
     <select id="getUserWorkingTimeList" resultType="java.util.Map">
         SELECT  report.`creator_id` AS userId, user.`name` AS username,user.corpwx_userid as corpwxUserId,user.job_number as jobNumber,
+        user.department_id As deptId,
         ifnull(SUM(if(project.is_public=0,report.working_time,null)),0) as unPublic,
         ifnull(SUM(if(project.is_public=1,report.working_time,null)),0) as isPublic,
         ifnull(SUM(report.`working_time`),0) AS workingTime

+ 12 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -495,6 +495,16 @@
                     </span>
                   </template>
               </el-table-column>
+              <el-table-column prop="deptName" :label="$t('subordinatedepartments')" width="150">
+                <template slot-scope="scope" >
+                    <span v-if="user.userNameNeedTranslate == '1'">
+                      <ww-open-data type='departmentName' :openid='scope.row.deptName'></ww-open-data>
+                    </span>
+                    <span v-if="user.userNameNeedTranslate != '1'">
+                      {{scope.row.deptName}}
+                    </span>
+                  </template>
+              </el-table-column>
               <el-table-column prop="jobNumber" :label="$t('Worknumber')" width="150"></el-table-column>
               <el-table-column prop="unPublic" :label="$t('ordinaryprojecthours')" min-width="160" align="right">
                 <template slot-scope="scope">
@@ -506,6 +516,8 @@
                   <span>{{scope.row.isPublic == null? 0 + 'h' : scope.row.isPublic.toFixed(1) + 'h'}}</span>
                 </template>
               </el-table-column>
+              <el-table-column prop="leaveSum" :label="$t('qing-jia-gong-shi')" min-width="160" align="right">
+              </el-table-column>
               <el-table-column prop="workingTime" :label="$t('other.totalworkinghours')" min-width="160" align="right">
                 <template slot-scope="scope">
                   <span>{{scope.row.workingTime == null? 0 + 'h' : scope.row.workingTime.toFixed(1) + 'h'}}</span>