Bläddra i källkod

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

seyason 2 år sedan
förälder
incheckning
37d483c748

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -537,8 +537,8 @@ public class ProjectController {
     }
 
     @RequestMapping("/exportUserWorkingTimeList")
-    public HttpRespMsg exportUserWorkingTimeList(String userId,Integer projectId,String startDate, String endDate){
-        return projectService.exportUserWorkingTimeList(userId,projectId,startDate,endDate,request);
+    public HttpRespMsg exportUserWorkingTimeList(String userId,Integer projectId,String startDate, String endDate,Integer departmentId){
+        return projectService.exportUserWorkingTimeList(userId,projectId,startDate,endDate,request,departmentId);
     }
 
     /**

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/LeaveSheetMapper.java

@@ -25,5 +25,5 @@ public interface LeaveSheetMapper extends BaseMapper<LeaveSheet> {
 
     List<LeaveSheet> selectLeave(Integer companyId, String startDate, String endDate);
 
-    List<Map<String,Object>> selectLeaveAll(Integer companyId, String startDate, String endDate);
+    List<Map<String,Object>> selectLeaveAll(Integer companyId, String startDate, String endDate,List<Integer> branchDepartment,List<Integer> deptIds);
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java

@@ -148,7 +148,7 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg getUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate, Integer pageIndex, Integer pageSize,HttpServletRequest request,Integer departmentId);
 
-    HttpRespMsg exportUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate,HttpServletRequest request);
+    HttpRespMsg exportUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate,HttpServletRequest request,Integer departmentId);
 
     HttpRespMsg getUserReportTimelinessRate(HttpServletRequest request, String startDate, String endDate, Integer departmentId, String userId,Integer pageIndex,Integer pageSize);
 

+ 16 - 71
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -5814,8 +5814,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     @Override
     public HttpRespMsg getUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate, Integer pageIndex, Integer pageSize,HttpServletRequest request,Integer departmentId) {
         //1.获取分页结果
-        Integer size=pageSize;//查询条数
-        Integer start =(pageIndex-1)*size;//limit开始
+        if (pageSize!=null && pageIndex!=null){
+            Integer size=pageSize;//查询条数
+            Integer start =(pageIndex-1)*size;//limit开始
+        }
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
@@ -5908,7 +5910,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             li.put("proportion",nf.format(divide));
         });
         //全月请假人员
-        List<Map<String, Object>> maps = leaveSheetMapper.selectLeaveAll(companyId, startDate, endDate);
+        List<Map<String, Object>> maps = leaveSheetMapper.selectLeaveAll(companyId, startDate, endDate,branchDepartment,deptIds);
         TimeType timetype = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", user.getCompanyId()));
         List<Map<String, Object>> leaveStaff = new ArrayList<>();
         //去重
@@ -5938,10 +5940,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             if (!stringObjectHashMap.containsKey("deptName")){
                 stringObjectHashMap.put("deptName","未分配");
             }
-            stringObjectHashMap.put("isPublic",0);
+            stringObjectHashMap.put("isPublic",0.0);
             stringObjectHashMap.put("jobNumber",map.get("jobNumber"));
-            Double leaveHours = 0.0;
-            int days = WorkDayCalculateUtils.getWorkDaysListInRange(map.get("startDate").toString(),map.get("endDate").toString(), 0).size();
+            double leaveHours = 0.0;
+            //int days = WorkDayCalculateUtils.getWorkDaysListInRange(map.get("startDate").toString(),map.get("endDate").toString(), 0).size();
             for (Map<String, Object> stringObjectMap : collectMap) {
                 if (map.get("id").toString().equals(stringObjectMap.get("id"))){
                     LocalDate leaveStart = LocalDate.parse(map.get("startDate").toString(), dateTimeFormatter);
@@ -5974,7 +5976,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             leaveHours = new BigDecimal(leaveHours).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
             stringObjectHashMap.put("leaveSum",leaveHours+"h");
             stringObjectHashMap.put("proportion","0%");
-            stringObjectHashMap.put("unPublic",0);
+            stringObjectHashMap.put("unPublic",0.0);
             stringObjectHashMap.put("userId",map.get("id"));
             if (wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1){
                 stringObjectHashMap.put("username",map.get("wxOpenId"));
@@ -6023,44 +6025,21 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     }
 
     @Override
-    public HttpRespMsg exportUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate,HttpServletRequest request) {
+    public HttpRespMsg exportUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate,HttpServletRequest request,Integer departmentId) {
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
-        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全公司工时分配");
-        List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责部门工时分配");
-        List<Integer> deptIds=null;
-        List<Department> allDepartmentList=departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",user.getCompanyId()));
-        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()).eq("company_id",user.getCompanyId()));
-        List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", user.getId()));
-        //判断查看权限
-        if(functionAllList.size()==0){
-            deptIds=new ArrayList<>();
-            deptIds.add(-1);
-            if(functionDeptList.size()>0){
-                List<Integer> collect = departmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
-                List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
-                collect.addAll(otherCollect);
-                for (Integer integer : collect) {
-                    List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
-                    deptIds.addAll(branchDepartment);
-                }
-            }
-        }
-        List<Map<String, Object>> list = projectMapper.getUserWorkingTimeList(userId, user.getCompanyId(), startDate, endDate, projectId,null,null,null,deptIds);
+        HttpRespMsg userWorkingTimeList = getUserWorkingTimeList(userId,projectId,startDate, endDate, null,null,request,departmentId);
+        HashMap result = (HashMap) userWorkingTimeList.data;
+        List<Map<String, Object>> resultList = (List<Map<String, Object>>) result.get("result");
         //String[] string={"人员","部门","工号","普通项目工时","公共项目工时","请假时长","总工时","公共项目工时占比"};
         String[] string={MessageUtils.message("entry.personnel"),MessageUtils.message("excel.department"),MessageUtils.message("entry.No"),MessageUtils.message("entry.GenProHours"),MessageUtils.message("entry.PubProHours"),MessageUtils.message("leave.duration"),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(Map<String,Object> item:resultList){
             //取部门名
             for (Department department : deptName) {
                 if (item.get("deptId").toString().equals(department.getDepartmentId().toString())){
@@ -6069,47 +6048,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }else {
                         item.put("deptName",getSupDepartment(department));
                     }
-                    continue;
+                    break;
                 }
             }
             if (!item.containsKey("deptName")){
                 item.put("deptName","未分配");
             }
-            //计算请假时间
-            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");
-            double workTimeDouble = Double.parseDouble(item.get("workingTime").toString()) + leaveSum;
-            BigDecimal workTimeBig = new BigDecimal(workTimeDouble);
-            item.put("workingTime",workTimeBig.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
             List<String> subList=new ArrayList<>();
-            double isPublic = (double) item.get("isPublic");
-            double workingTime = (double) item.get("workingTime");
-            BigDecimal bdIsPublic=new BigDecimal(isPublic);
-            BigDecimal divide = bdIsPublic.divide(BigDecimal.valueOf(workingTime),2,BigDecimal.ROUND_HALF_UP);
-            NumberFormat nf = NumberFormat.getPercentInstance();
             if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
                 subList.add("$userName="+(item.get("corpwxUserId")==null?"":item.get("corpwxUserId"))+"$");
             }else {
@@ -6121,7 +6066,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             subList.add(String.valueOf(item.get("isPublic")));
             subList.add(String.valueOf(item.get("leaveSum")));
             subList.add(String.valueOf(item.get("workingTime")));
-            subList.add(String.valueOf(nf.format(divide)));
+            subList.add(String.valueOf(item.get("proportion")));
             dataList.add(subList);
         }
         //生成excel文件导出

+ 7 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages.properties

@@ -400,7 +400,7 @@ entry.mainProject=主项目
 entry.projectId=项目编号
 entry.contractNo=合同编号
 entry.projectType=项目分类
-entry.publicProject=是否为公共项目
+entry.publicProject=是否为项目
 entry.projectName=项目名称
 entry.groupName=分组名称
 entry.groupCharge=分组负责人
@@ -474,10 +474,10 @@ entry.totalLaborCostIncurred=已发生总工时成本
 entry.costBudget=成本预算
 entry.repCost=已填报成本
 entry.proFilledIn=已填报占比
-entry.GenProHours=普通项目工时
-entry.PubProHours=公共项目工时
+entry.GenProHours=正式项目工时
+entry.PubProHours=项目工时
 entry.totalManHours=总工时
-entry.PubProHoursProp=公共项目工时占比
+entry.PubProHoursProp=项目工时占比
 entry.timely=及时
 entry.NoTimely=不及时
 entry.SubTime=提交时间
@@ -535,7 +535,7 @@ fileName.monthWork=月度工时表
 fileName.deptJoinPro=部门参与项目情况表
 fileName.leaveRemaining = 假期剩余表
 #excel
-excel.publicProject=是否为公共项目
+excel.publicProject=是否为项目
 excel.projectName=项目名称必填
 excel.manyPeople=多个参与人(姓名/工号)使用中文逗号(,)隔开
 excel.manyPeoplePlus=多个参与人(工号)使用中文逗号(,)隔开
@@ -544,8 +544,8 @@ excel.projectManagerPlus=项目经理(姓名/工号)需存在于参与人中
 excel.projectCharge=负责人需存在于参与人中
 excel.dateFormat=日期格式:yyyy-MM-dd
 excel.forExample=例如: 2021-01-01
-excel.yesPublic=是:公共项目
-excel.noPublic=否:普通项目
+excel.yesPublic=是:项目
+excel.noPublic=否:正式项目
 excel.yes=是
 excel.no=否
 excel.normal=正常

+ 7 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages_en_US.properties

@@ -400,7 +400,7 @@ entry.mainProject=Main project
 entry.projectId=project No
 entry.contractNo=Contract No
 entry.projectType=Project classification
-entry.publicProject=Whether it is a public project
+entry.publicProject=Whether it is a non project
 entry.projectName=project name
 entry.groupName=Group Name
 entry.groupCharge=Group leader
@@ -474,10 +474,10 @@ entry.totalLaborCostIncurred=Total labor cost incurred
 entry.costBudget=Cost Budget
 entry.repCost=Reported cost
 entry.proFilledIn=Proportion filled in
-entry.GenProHours=General Project Hours
-entry.PubProHours=Public Project Hours
+entry.GenProHours=Formal project man hours
+entry.PubProHours=Non Project Work
 entry.totalManHours=Total man hours
-entry.PubProHoursProp=Proportion of public project man hours
+entry.PubProHoursProp=Proportion of non project man hours
 entry.timely=timely
 entry.NoTimely=Not timely
 entry.SubTime=Submission time
@@ -535,7 +535,7 @@ fileName.monthWork=Monthly man hour Table
 fileName.deptJoinPro=Department Participation in Projects
 fileName.leaveRemaining = Leave Remaining Table
 #excel
-excel.publicProject=Whether it is a public project
+excel.publicProject=Whether it is a non project
 excel.projectName=Project name is required
 excel.manyPeople=Multiple participants (name/jobNumber) are separated by commas (,)
 excel.manyPeoplePlus=Multiple participants (jobNumber) are separated by commas (,)
@@ -544,8 +544,8 @@ excel.projectManagerPlus=The project manager (jobNumber) must exist in the parti
 excel.projectCharge=The person in charge must exist in the participants
 excel.dateFormat=Date Format:yyyy-MM-dd
 excel.forExample=for example: 2021-01-01
-excel.yesPublic=yes:public project
-excel.noPublic=no:average project
+excel.yesPublic=Yes: Non project
+excel.noPublic=No: formal project
 excel.yes=yes
 excel.no=no
 excel.normal=normal

+ 12 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/LeaveSheetMapper.xml

@@ -63,5 +63,17 @@
         on user.id = leave_sheet.owner_id
         where user.company_id = #{companyId} and leave_sheet.status=0
         and leave_sheet.start_date &lt;=#{endDate} and leave_sheet.end_date &gt;=#{startDate}
+        <if test="branchDepartment!=null and branchDepartment.size()>0">
+            and user.department_id in
+            <foreach collection="branchDepartment" open="(" close=")" item="item" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="deptIds!=null and deptIds.size()>0">
+            and user.department_id in
+            <foreach collection="deptIds" open="(" item="item" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
     </select>
 </mapper>

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/components/select.vue

@@ -34,7 +34,7 @@
         </div>
     </div>
     <transition name="el-zoom-in-top">
-      <div v-show="show" style="position: relative;z-index: 99;"> 
+      <div v-show="show" style="position: relative;z-index: 999;"> 
         <!-- 搜索框 -->
         <div class="searchBox">
             <el-input :placeholder="$t('peaseenterthe')" size="mini" v-model="searchTex" style="width: 150px" @focus="searchBox()">

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

@@ -1486,6 +1486,12 @@ export default {
           url += "/exportUserWorkingTimeList"
           sl.startDate = this.rangeDatas[0]
           sl.endDate = this.rangeDatas[1]
+          if(this.departmentIdArray.length != 0){
+            sl.departmentId = this.departmentIdArray[this.departmentIdArray.length - 1]
+          }
+          if(this.userId){
+            sl.userId = this.userId
+          }
         } else if (this.ins == 9) {
           fName = this.$t('personnelfillingtimelyratestatistics')  + '.xls'
           url += "/exportReportTimelinessRate"

+ 1 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue

@@ -3693,6 +3693,7 @@ overflow: auto;
         text-align: center;
         color: #fff;
         background: #778899;
+        overflow: hidden;
     }
     div {
         text-align: left;

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/project_gantt.vue

@@ -102,7 +102,7 @@
           </div>
         </template>
       </el-table-column>
-      <el-table-column :label="$t('starttimes') - $t('time.endTime')" min-width="240">
+      <el-table-column :label="$t('starttimes')  +' - '+ $t('time.endTime')" min-width="240">
         <template slot-scope="scope">
           <span>{{scope.row.startDate ? scope.row.startDate + ' ~ ' + scope.row.endDate : ''}}</span>
         </template>

+ 2 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/summary.vue

@@ -504,7 +504,8 @@
                         show: true,
                         feature:{
                             saveAsImage:{
-                                show:true
+                                // show: false
+                                show: this.user.userNameNeedTranslate == 1 ? false : true
                             },
                             restore:{
                                 show:true

+ 2 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue

@@ -424,7 +424,7 @@
                         <div class="player">
                             <p @click="chan">{{ $t('participantin') }}</p>
                             <span  v-for="(pl, i) in critic" :key="i">
-                            <div class="bj" style="width: 14%">
+                            <div class="bj" style="width: 14%;">
                                 <span style="background: #778899" v-if="user.userNameNeedTranslate != '1'">{{pl.length > 2 ? pl.substring(pl.length - 2, pl.length) : pl}}</span>
                                 <span style="background: #778899" v-if="user.userNameNeedTranslate == '1'"><ww-open-data type='userName' :openid='pl'></ww-open-data></span>
                             </div>
@@ -593,6 +593,7 @@
         text-align: center;
         color: #fff;
         background: #778899;
+        overflow: hidden;
     }
     div {
         text-align: left;