Explorar el Código

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

cs hace 2 años
padre
commit
6c8efe0e7b

+ 15 - 11
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -886,7 +886,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                     if (newList.size() == 0 && deleteList.size() == oldAuditorList.size()) {
                         //全部被删除了的情况,保留项目负责人
-                        if (inchargerId != null) {
+                        if (!StringUtils.isEmpty(inchargerId)) {
                             ProjectAuditor auditor = new ProjectAuditor();
                             auditor.setProjectId(id);
                             auditor.setAuditorId(inchargerId);
@@ -3142,11 +3142,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         projectMapper.updateById(project);
                     }else {
                         if(projectMapper.insert(project)>0){
-                            ProjectAuditor projectAuditor=new ProjectAuditor();
-                            projectAuditor.setAuditorId(project.getInchargerId());
-                            projectAuditor.setAuditorName(project.getInchargerName());
-                            projectAuditor.setProjectId(project.getId());
-                            projectAuditorMapper.insert(projectAuditor);
+                            if (!StringUtils.isEmpty(project.getInchargerId())) {
+                                ProjectAuditor projectAuditor=new ProjectAuditor();
+                                projectAuditor.setAuditorId(project.getInchargerId());
+                                projectAuditor.setAuditorName(project.getInchargerName());
+                                projectAuditor.setProjectId(project.getId());
+                                projectAuditorMapper.insert(projectAuditor);
+                            }
                         }
                     }
                     importCount++;
@@ -3738,11 +3740,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         projectMapper.updateById(project);
                     }else {
                         if(projectMapper.insert(project)>0){
-                            ProjectAuditor projectAuditor=new ProjectAuditor();
-                            projectAuditor.setAuditorId(project.getInchargerId());
-                            projectAuditor.setAuditorName(project.getInchargerName());
-                            projectAuditor.setProjectId(project.getId());
-                            projectAuditorMapper.insert(projectAuditor);
+                            if (!StringUtils.isEmpty(project.getInchargerId())) {
+                                ProjectAuditor projectAuditor=new ProjectAuditor();
+                                projectAuditor.setAuditorId(project.getInchargerId());
+                                projectAuditor.setAuditorName(project.getInchargerName());
+                                projectAuditor.setProjectId(project.getId());
+                                projectAuditorMapper.insert(projectAuditor);
+                            }
                         }
                     }
                     Integer id = project.getId();

+ 6 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -1117,12 +1117,14 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 String createDate = (String)a.get("date");
                 String name = (String)a.get("name");
                 String uid = (String)a.get("userId");
+                String corpwxUserid = (String)a.get("corpwxUserid");
 
                 if (lastName == null || !(lastName.get("name").equals(name) && lastName.get("dateStr").equals(createDate))) {
                     lastName = new HashMap<String, Object>();
                     lastName.put("dateStr", createDate);
                     lastName.put("name", name);
                     lastName.put("userId", uid);
+                    lastName.put("corpwxUserid", corpwxUserid);
                     nameList.add(lastName);
                     userDailyReportList = new ArrayList<>();
                     lastName.put("data", userDailyReportList);
@@ -1198,16 +1200,16 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 QueryWrapper<UserCorpwxTime> userCorpwxTimeQueryWrapper = new QueryWrapper<>();
                 if (nameList.size() > 0) {
                     for (Map map : nameList) {
-                        String name = (String)map.get("name");
+                        String corpwxUserid = (String)map.get("corpwxUserid");
                         String dateStr = (String)map.get("dateStr");
-                        userCorpwxTimeQueryWrapper.or(wrapper->wrapper.eq("name", name).eq("create_date", dateStr));
+                        userCorpwxTimeQueryWrapper.or(wrapper->wrapper.eq("corpwx_userid", corpwxUserid).eq("create_date", dateStr));
                     }
                     List<UserCorpwxTime> timeList = userCorpwxTimeMapper.selectList(userCorpwxTimeQueryWrapper);
                     //过滤匹配当前的数据
                     for (Map map : nameList) {
-                        String name = (String)map.get("name");
+                        String corpwxUserid = (String)map.get("corpwxUserid");
                         String dateStr = (String)map.get("dateStr");
-                        Optional<UserCorpwxTime> first = timeList.stream().filter(time -> time.getName().equals(name) && dtf.format(time.getCreateDate()).equals(dateStr)).findFirst();
+                        Optional<UserCorpwxTime> first = timeList.stream().filter(time -> time.getCorpwxUserid().equals(corpwxUserid) && dtf.format(time.getCreateDate()).equals(dateStr)).findFirst();
                         if (first.isPresent()) {
                             double wh = first.get().getWorkHours();
                             //赋值打卡时长

+ 55 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java

@@ -711,6 +711,7 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                                         needRecaculate = true;
                                     }
                                 } else if (leaveText.startsWith("外出")) {
+
                                     String string = holiday.getJSONObject("sp_description").getJSONArray("data").getJSONObject(m).getString("text");
                                     String[] s = string.split(" |\\~");
                                     //获取到外出的开始时间和结束时间
@@ -718,14 +719,65 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                                     if (s.length < 5) {
                                         isOldFormat = true;
                                     }
-                                    String outEnd = isOldFormat ? s[3] : s[4];
-                                    String outStart = s[1];
+                                    //获取外出的日期; 9/1格式
+                                    String dateStart = localDate.getYear() + "/" + s[0];
+                                    String dateEnd = localDate.getYear() + "/" + (isOldFormat ? s[2] : s[3]);
+                                    LocalDate sDate = LocalDate.parse(dateStart, mdFormat);
+                                    LocalDate eDate = LocalDate.parse(dateEnd, mdFormat);
+                                    String outEnd = "";
+                                    String outStart = "";
+
+                                    if (sDate.isEqual(eDate)) {
+                                        //外出在一天内
+                                        outEnd = isOldFormat ? s[3] : s[4];
+                                        outStart = s[1];
+                                    } else {
+                                        if (showLog) System.out.println("跨天外出===");
+                                        if (showLog)
+                                            System.out.println("当天==" + localDate + ", sDate=" + sDate + ", 比较=" + (localDate.isEqual(sDate)));
+                                        //跨天外出,获取期间的非工作日,加进去
+                                        List<LocalDate> localDates = WorkDayCalculateUtils.getNonWorkDaysListInRange(dtf.format(sDate) ,dtf.format(eDate));
+                                        for (LocalDate curLdate : localDates) {
+                                            if (!betweenNonWorkDays.stream().anyMatch(be->be.isEqual(curLdate))) {
+                                                if (showLog) System.out.println("含非工作日请假:"+curLdate);
+                                                betweenNonWorkDays.add(curLdate);
+                                            }
+                                        }
+                                        if (betweenNonWorkDays.size() > 0) {
+                                            betweenTotalDays = (int)sDate.until(eDate, ChronoUnit.DAYS) + 1;
+                                            if (showLog) System.out.println("总跨度外出天数为:"+betweenTotalDays);
+                                        }
+                                        if (localDate.isEqual(sDate)) {
+                                            //当前日期第一天,需判断上下午半天请假的情况
+                                            if (showLog) System.out.println("跨天外出第一天outStart为:"+outStart);
+                                            if (outStart.equals("上午")) {
+                                                outStart = baseMorningStart;
+                                            } else if (outStart.equals("下午")) {
+                                                outStart = baseAfternoonStart;
+                                            }
+                                            //跨天请假的第一天,结束时间默认为18:00
+                                            outEnd = baseAfternoonEnd;//上午开始请假的算全天
+                                        } else if (localDate.isEqual(eDate)) {
+                                            //当前日期就是最后一天,需判断上下午半天请假的情况
+                                            if (outEnd.equals("下午")) {
+                                                outEnd = baseAfternoonEnd;//请假到最后一天的下午,就算是全天
+                                            } else if (outEnd.equals("上午")) {
+                                                //上午外出
+                                                outEnd = baseMorningEnd;
+                                            }
+                                            outStart = baseMorningStart;
+                                        } else {
+                                            //中间日期就是全天
+                                            outStart = baseMorningStart;
+                                            outEnd = baseAfternoonEnd;
+                                            if (showLog) System.out.println("===中间天请假===");
+                                        }
+                                    }
                                     //获取外出的最早的开始时间和最晚的结束时间最为当天考勤的最早和最晚时间
                                     if (ct.getStartTime().equals("00:00") || ct.getStartTime().compareTo(outStart) > 0) {
                                         ct.setStartTime(outStart);
                                         needRecaculate = true;
                                     }
-
                                     if (ct.getEndTime().compareTo(outEnd) < 0) {
                                         ct.setEndTime(outEnd);
                                         needRecaculate = true;

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

@@ -294,7 +294,7 @@
 
     <!--新版获取待审核的列表,一次性获取全部 -->
     <select id="getAuditReportList" resultType="java.util.Map">
-        SELECT a.id, user.id as userId, user.name, DATE_FORMAT(a.create_date, '%Y-%m-%d') as date, a.project_id as projectId, b.project_code AS projectCode, b.project_name AS project, a.working_time AS time, a.content, a.state, a.time_type as timeType,
+        SELECT a.id, user.id as userId,user.corpwx_userid as corpwxUserid, user.name, DATE_FORMAT(a.create_date, '%Y-%m-%d') as date, a.project_id as projectId, b.project_code AS projectCode, b.project_name AS project, a.working_time AS time, a.content, a.state, a.time_type as timeType,
         a.cost, a.report_time_type as reportTimeType, a.start_time as startTime,
         a.end_time as endTime, b.incharger_id as inchargerId,dept.department_name as departmentName,
         a.creator_id as creatorId, d.name as subProjectName,a.task_id as taskId, task.name as taskName, a.is_overtime as isOvertime,a.progress as progress,

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

@@ -4440,6 +4440,23 @@
             },
             // 按周填报里内容的填写
             tianxies(item, i, names, row) {
+                if(this.user.timeType.notAllowedNoAttendance == 1){
+                    if(this.zhoData[i].corpTime){
+                        if(this.zhoData[i].corpTime.workHours == 0){
+                            this.$message({
+                                message: '无考勤记录不可填报',
+                                type: 'error'
+                            })
+                            return
+                        }
+                    }else{
+                        this.$message({
+                            message: '无考勤记录不可填报',
+                            type: 'error'
+                        })
+                        return
+                    }
+                }
                 var idd = ''
                 var obj = {}
                 for(var l in this.projectList) {

+ 46 - 0
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit.vue

@@ -524,6 +524,23 @@
             },
             // 切换星期
             switchWeek(item,index){
+                // if(this.user.timeType.notAllowedNoAttendance == 1){
+                //     let havework = false
+                //     for(let i in this.currentForm.domains){
+                //         if(this.currentForm.domains[i].projectId){
+                //             havework = true
+                //         }
+                //     }
+                //     if(havework){
+                //         if(this.kaoqinText){
+                //             if(this.currentForm.cardtime == 0){
+                //                 this.$toast.fail('无考勤记录' + this.weekArr[this.inbtn] +'不可填报')
+                //             }
+                //         }else{
+                //             this.$toast.fail('无考勤记录' + this.weekArr[this.inbtn] +'不可填报')
+                //         }
+                //     }
+                // }
                 this.form[this.inbtn] = this.currentForm
                 this.inbtn = index
                 this.currentForm = this.form[this.inbtn]
@@ -535,6 +552,7 @@
                 this.getKaoqin()
                 this.getWorkTime()
             },
+            
             // 获取日考勤记录
             getKaoqin(){
                 this.$axios.post('/report/getCardTime',{
@@ -1496,6 +1514,30 @@
             // 提交日报
             submitReport() {
                 this.form[this.inbtn] = this.currentForm
+
+
+                if(this.user.timeType.notAllowedNoAttendance == 1){
+                    let toast = ''
+                    for(let i in this.form){
+                        let havework = false
+                        for(let m in this.form[i].domains){
+                            if(this.form[i].domains[m].projectId){
+                                havework = true
+                            }
+                        }
+                        if(havework){
+                            if(!this.form[i].cardtime){
+                                toast += this.weekArr[i] + '、'
+                            }
+                        }
+                    }
+                    if(toast){
+                        toast = toast.substring(0,toast.length - 1)
+                        this.$toast.fail('[' + toast +']无考勤记录不可填报')
+                        return
+                    }
+                }
+
                 if((this.user.timeType.showDdCardtime == 1 || this.user.timeType.showCorpwxCardtime == 1) && this.reportTimeType.type == 1){
                     let tips = ''
                     for(let m in this.form){
@@ -1518,6 +1560,9 @@
 
                 let formData = new URLSearchParams()
                 for(let formIndex=0;formIndex<this.form.length;formIndex++){
+                    
+
+
                     this.dateAr = []
                     let alp = []
                     if(this.user.timeType.multiWorktime == 1) {
@@ -1881,6 +1926,7 @@
         },
         
         mounted() {
+            this.user.timeType.notAllowedNoAttendance = 1
             this.timeRange = []
             for(let i=0.5; i<=20; i+=0.5){
                 this.timeRange.push(i)