seyason пре 8 месеци
родитељ
комит
4df02a0988

+ 96 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserCorpwxTimeController.java

@@ -95,17 +95,17 @@ public class UserCorpwxTimeController {
         List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部企微考勤");
         if (functionList.size() > 0) {
             //查看全部人员的
-            list = userCorpwxTimeMapper.getUserDataList(user.getCompanyId(), startDate, endDate, null);
+            list = userCorpwxTimeMapper.getUserDataList(user.getCompanyId(), startDate, endDate, null, null);
         } else {
             Integer manageDeptId = user.getManageDeptId();
             if (manageDeptId != null && manageDeptId != 0) {
                 //一个人可能担任多个部门负责人
                 List<Department> departments = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()));
                 if (departments.size() == 1) {
-                    list = userCorpwxTimeMapper.getUserDataList(user.getCompanyId(), startDate, endDate, manageDeptId);
+                    list = userCorpwxTimeMapper.getUserDataList(user.getCompanyId(), startDate, endDate, manageDeptId, null);
                 } else {
                     for (Department d:departments) {
-                        list.addAll(userCorpwxTimeMapper.getUserDataList(user.getCompanyId(), startDate, endDate, d.getDepartmentId()));
+                        list.addAll(userCorpwxTimeMapper.getUserDataList(user.getCompanyId(), startDate, endDate, d.getDepartmentId(), null));
                     }
                 }
             }
@@ -200,6 +200,99 @@ public class UserCorpwxTimeController {
         return msg;
     }
 
+    @RequestMapping("/getMyData")
+    public HttpRespMsg getMyData(String startDate, String endDate) {
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+        List<Map> list = new ArrayList<Map>();
+        list = userCorpwxTimeMapper.getUserDataList(user.getCompanyId(), startDate, endDate, null, user.getId());
+        //工作日处理,排除常规周末和法定节假日
+        DateTimeFormatter dtf =  DateTimeFormatter.ofPattern("yyyy/MM/dd");
+        list = list.stream().filter(time->{
+            String date = (String)time.get("createDate");
+            if (WorkDayCalculateUtils.isWorkDay(LocalDate.parse(date, dtf))) {
+                return true;
+            } else {
+                return false;
+            }
+        }).collect(Collectors.toList());
+        DateTimeFormatter standFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        HashMap item = new HashMap();
+        item.put("list", list);
+        if (list.size() > 0) {
+            List<String> userIdList = new ArrayList<>();
+            for (int i=0;i<list.size(); i++) {
+                Map map = list.get(i);
+                String userId = (String)map.get("userId");
+                userIdList.add(userId);
+            }
+            //员工参与的项目
+            List<Participation> participationList = participationMapper.selectList(new QueryWrapper<Participation>().in("user_id", userIdList));
+            List<String> names = new ArrayList<>();
+            LocalDate localStart = LocalDate.parse(startDate, standFormatter);
+            LocalDate localEnd = LocalDate.parse(endDate, standFormatter);
+            if (participationList.size() > 0) {
+                List<Integer> collect = participationList.stream().map(Participation::getProjectId).collect(Collectors.toList());
+                List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", collect).eq("is_public", 0).eq("company_id", user.getCompanyId()).orderByAsc("id"));
+
+                names = projectList.stream().filter(p->{
+                    if (p.getPlanStartDate() != null) {
+                        if (p.getPlanStartDate().isAfter(localEnd)) {
+                            return false;
+                        }
+                    }
+                    if (p.getPlanEndDate() != null) {
+                        if (p.getPlanEndDate().isBefore(localStart)) {
+                            return false;
+                        }
+                    }
+                    return true;
+                }).map(Project::getProjectName).collect(Collectors.toList());
+            }
+            //添加公共项目
+            List<Project> publicProjects = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", user.getCompanyId()).eq("is_public", 1));
+            if (publicProjects.size() > 0) {
+                List<String> collect = publicProjects.stream().filter(p->{
+                    if (p.getPlanStartDate() != null) {
+                        if (p.getPlanStartDate().isAfter(localEnd)) {
+                            return false;
+                        }
+                    }
+                    if (p.getPlanEndDate() != null) {
+                        if (p.getPlanEndDate().isBefore(localStart)) {
+                            return false;
+                        }
+                    }
+                    return true;
+                }).map(Project::getProjectName).collect(Collectors.toList());
+                names.addAll(collect);
+            }
+            item.put("projects", names);
+        } else {
+            item.put("projects", new ArrayList<String>());
+        }
+
+        //获取该时间段已经审核通过的报告
+        List<Report> reportList = reportService.list(new QueryWrapper<Report>()
+                .eq("company_id", user.getCompanyId()).between("create_date", startDate, endDate).eq("state", 1));
+
+        DateTimeFormatter splashDtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
+        //数据填充
+        for (Map dataItem : list) {
+            List<String> dataList = new ArrayList<>();
+            String userId = (String)dataItem.get("userId");
+            String createDate = (String)dataItem.get("createDate");
+            //检查该人员当天是否已经有审核通过的
+            boolean hasPassed = reportList.stream().anyMatch(r->r.getCreatorId().equals(userId) && splashDtf.format(r.getCreateDate()).equals(createDate));
+            dataItem.put("hasPassed", hasPassed);
+        }
+
+        //返回数据
+        HttpRespMsg msg = new HttpRespMsg();
+        msg.data = item;
+        return msg;
+    }
+
     @RequestMapping("/submitProjectTime")
     public HttpRespMsg submitProjectTime(String json, String projectColumns) {
         String token = request.getHeader("TOKEN");

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

@@ -17,7 +17,7 @@ import java.util.Map;
  */
 public interface UserCorpwxTimeMapper extends BaseMapper<UserCorpwxTime> {
 
-    public List<Map> getUserDataList(Integer companyId, String startDate, String endDate, Integer deptId);
+    public List<Map> getUserDataList(Integer companyId, String startDate, String endDate, Integer deptId, String userId);
 
     public List<Map> getUserDataRatioList(Integer companyId, List<LocalDate> dateList, String ymonth, List<Integer> deptIds);
 

+ 11 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -5125,6 +5125,17 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                 //赛元微电子,导入的按照项目审核的模式进行
                                 if (company.getId() == 469) {
                                     report.setState(0);//待审核员审核
+                                    //赛元都是非项目,直接取员工所属部门的主要负责人来审核
+                                    Department department = departmentMapper.selectById(user.getDepartmentId());
+                                    if (department != null) {
+                                        report.setProjectAuditorId(department.getManagerId());
+                                    }
+
+                                    List<AuditWorkflowTimeSetting> auditWorkflowList
+                                            = auditWorkflowTimeSettingMapper.selectList(
+                                            new QueryWrapper<AuditWorkflowTimeSetting>().eq("dept_id", reportCreator.getDepartmentId()).orderByAsc("seq"));
+                                    List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", reportCreator.getCompanyId()));
+                                    setReportWorkflowAuditor(auditWorkflowList, allDeptList, report,timeType);
                                 } else {
                                     if (timeType.getNeedDeptAudit() == 0) {
                                         report.setState(1);//导入的直接算审核通过

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserCorpwxTimeMapper.xml

@@ -37,6 +37,9 @@
         <if test="deptId != null">
             AND user.`department_id` = #{deptId}
         </if>
+        <if test="userId != null">
+            AND user.`id` = #{userId}
+        </if>
         ORDER BY a.create_date ASC
     </select>
 

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

@@ -1995,8 +1995,11 @@
             </div>
             
             <span slot="footer">
+            
             <el-link v-show="active==1" style="margin-right:300px;margin-top:10px;" 
                 type="primary" @click="downloadCheckInExcel">{{$t('template.DownloadEmployeeHourStatisticsTemplate')}}.xlsx</el-link>
+            
+                <el-button @click="refreshWXCardTimeByRange" v-if="active == 1" :loading="refreshingTime">刷新考勤</el-button>
             <el-button @click="pre" v-if="active!=0">{{$t('btn.previousstep')}}</el-button>
             
             <el-button @click="next" :disabled="importWxParam.date==null" v-if="active<2">{{$t('btn.nextStep')}}</el-button>
@@ -2216,6 +2219,7 @@
         },
         data() {
             return {
+                refreshingTime: false,
                 substitudeStep: 1,
                 showHidden: false,
                 pageIndex: 0,
@@ -2645,6 +2649,32 @@
                     
                 }
             },
+            //按选择的日期范围刷新考勤
+            refreshWXCardTimeByRange() {
+                this.refreshingTime = true;
+                this.http.post('/wxcorp/getUserCheckInDayData',{
+                    companyId: this.user.companyId,
+                    userId: this.user.id,
+                    startDate: this.importWxParam.date[0],
+                    endDate: this.importWxParam.date[1],
+                },res => {
+                    this.refreshingTime = false;
+                    if(res.code == 'ok'){
+                        this.loadCheckInData();
+                    }else {
+                        this.$message({
+                            message: res.msg,
+                            type: 'error'
+                        })
+                    }
+                },err => {
+                    this.syncTimeLoading = false;
+                    this.$message({
+                        message: err,
+                        type: 'error'
+                    })
+                })
+            },
             // 判断当前账号是否有某一块定制权限(返回 boolean 类型)
             isCustomization(userInfo, permissionArray) {
                 const { companyId } = userInfo
@@ -3451,7 +3481,7 @@
                     return;
                 }
                 this.checkinLoading = true;
-                this.http.post('/user-corpwx-time/getMyDeptMembsData',{ 
+                this.http.post('/user-corpwx-time/getMyData',{ 
                     startDate: this.importWxParam.date[0],
                     endDate: this.importWxParam.date[1],
                 },

+ 7 - 7
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/newWeeklyCustomization.vue

@@ -103,13 +103,13 @@ export default {
 
             let strArr = this.judgmentData(newWeekData)
             const { allday } = this.user.timeType // 系统设置的每日工作时间
-            if (strArr.length > 0) {
-                this.$message({
-                    message: `【${strArr.join('、')}】`+this.$t('tianXieGongShiHeJiFei')+` ${allday}`+ this.$t('time.hour'),
-                    type: "error"
-                });
-                return
-            }
+            // if (strArr.length > 0) {
+            //     this.$message({
+            //         message: `【${strArr.join('、')}】`+this.$t('tianXieGongShiHeJiFei')+` ${allday}`+ this.$t('time.hour'),
+            //         type: "error"
+            //     });
+            //     return
+            // }
 
             let formData = new FormData();
             formData.append("draft", draft);