Selaa lähdekoodia

前端处理考勤日期针对企业微信考勤字段是createDate

seyason 2 vuotta sitten
vanhempi
commit
9a0b99ce8d

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/AuthRedirectController.java

@@ -76,6 +76,7 @@ public class AuthRedirectController {
         if (userList.size() > 0) {
             //该用户已存在
             User curUser = userList.get(0);
+            System.out.println("企微用户是:"+curUser.getName());
             if (curUser.getIsActive() == 1) {
                 reqParam.put("userId", curUser.getId());
             } else {

+ 35 - 13
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -867,26 +867,48 @@ public class ReportController {
                         return o1.compareTo(o2);
                     }
                 }).get();
-
+                //按周填报只能自己填,所以用token来查找
                 List<Report> oldReportList = reportService.list(new QueryWrapper<Report>().between("create_date", startDate, endDate).eq("creator_id", token));
                 DateTimeFormatter mdFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                 if (oldReportList.size() > 0) {
                     StringBuilder sb = new StringBuilder();
-                    List<LocalDate> collect = oldReportList.stream().map(Report::getCreateDate).collect(Collectors.toList());
-                    for (Report report : reportList) {
-                        if (report.getId() == null) {
-                            if (collect.stream().anyMatch(oldDate->oldDate.isEqual(report.getCreateDate()))) {
-                                sb.append(mdFormatter.format(report.getCreateDate())).append(",");
+                    if (comTimeType.getLockWorktime() == 1) {
+                        List<Report> allReportList = new ArrayList<>();
+                        allReportList.addAll(reportList);
+                        for (Report r : reportList) {
+                            //添加同一天已有的日报
+                            List<Report> collect = oldReportList.stream().filter(old -> old.getCreateDate().isEqual(r.getCreateDate())).collect(Collectors.toList());
+                            allReportList.addAll(collect);
+                        }
+                        //锁定工作时长的情况下,需要检查工时时长超过设置
+                        Float allday = comTimeType.getAllday();
+                        reportList.addAll(oldReportList);
+                        List<LocalDate> dateArray = allReportList.stream().map(Report::getCreateDate).distinct().collect(Collectors.toList());
+                        for (LocalDate date : dateArray) {
+                            double sum = allReportList.stream().filter(re -> re.getCreateDate().isEqual(date)).mapToDouble(Report::getWorkingTime).sum();
+                            if (sum > allday) {
+                                HttpRespMsg msg = new HttpRespMsg();
+                                msg.setError("无法提交:"+date.format(dtf)+"日合计工作时长为" + sum+"h, 超过"+allday+"h");
+                                return msg;
+                            }
+                        }
+                    } else {
+                        List<LocalDate> collect = oldReportList.stream().map(Report::getCreateDate).collect(Collectors.toList());
+                        for (Report report : reportList) {
+                            if (report.getId() == null) {
+                                if (collect.stream().anyMatch(oldDate->oldDate.isEqual(report.getCreateDate()))) {
+                                    sb.append(mdFormatter.format(report.getCreateDate())).append(",");
+                                }
                             }
                         }
-                    }
 
-                    String s = sb.toString();
-                    if (s.length() > 0) {
-                        s = s.substring(0, s.length() -1);
-                        HttpRespMsg msg = new HttpRespMsg();
-                        msg.setError("已存在填写日报: " + s+", 请先删除后再填报。");
-                        return msg;
+                        String s = sb.toString();
+                        if (s.length() > 0) {
+                            s = s.substring(0, s.length() -1);
+                            HttpRespMsg msg = new HttpRespMsg();
+                            msg.setError("已存在填写日报: " + s+", 请先删除后再填报。");
+                            return msg;
+                        }
                     }
                 }
             }

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/UserDingdingTime.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 UserDingdingTime extends Model<UserDingdingTime> {
     private Integer id;
 
     @TableField("work_date")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private LocalDate workDate;
 
     /**

+ 10 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -667,9 +667,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         TimeType timeType = timeTypeMapper.selectById(companyId);
         //删除不在本次更新名单中的老记录
+        List<Integer> idList = reportList.stream().filter(r->r.getId() != null).map(Report::getId).collect(Collectors.toList());
         if (date != null && !date.contains("@")) {
             //取到已有记录的id集合
-            List<Integer> idList = reportList.stream().filter(r->r.getId() != null).map(Report::getId).collect(Collectors.toList());
             if (idList.size() > 0) {
                 reportMapper.delete(new QueryWrapper<Report>()
                         .eq("create_date", date)
@@ -677,6 +677,14 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         .notIn("id", idList));
             }
         }
+        //已通过和待审核状态的不需要处理
+        if (idList.size() > 0) {
+            List<Report> existsReportList = reportMapper.selectList(new QueryWrapper<Report>().select("id, state").in("id", idList));
+            if (existsReportList.size() > 0) {
+                List<Integer> ignoreIds = existsReportList.stream().filter(ex -> ex.getState() == 0 || ex.getState() == 1).map(Report::getId).collect(Collectors.toList());
+                reportList = reportList.stream().filter(re->re.getId() == null || !ignoreIds.contains(re.getId())).collect(Collectors.toList());
+            }
+        }
 
         //存在按周填报的情况,需要处理一天一个汇总
         Map<LocalDate, List<Report>> groupMap = reportList.stream().collect(Collectors.groupingBy(Report::getCreateDate));
@@ -1549,7 +1557,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 .setRejectReason(reason).setRejectUserid(user.getId()).setRejectUsername(user.getName());
         reportMapper.update(upReport,
                 new QueryWrapper<Report>().in("id", ListUtil.convertIdsArrayToList(reportIds)));
-        List<Report> rList = reportMapper.selectList(new QueryWrapper<Report>().select("id, group_id, project_id, creator_id, create_date").in("id", ListUtil.convertIdsArrayToList(reportIds)));
+        List<Report> rList = reportMapper.selectList(new QueryWrapper<Report>().select("id, group_id, project_id, creator_id, create_date, company_id").in("id", ListUtil.convertIdsArrayToList(reportIds)));
         if (timeTypeMapper.selectById(company.getId()).getReportAuditType() == 2) {
             //退回任务分组审核状态
             List<Report> newList = new ArrayList<>();
@@ -2240,7 +2248,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     public HttpRespMsg cancelReport(String userId, String reportIds, HttpServletRequest request) {
         HttpRespMsg msg = new HttpRespMsg();
         User user = userMapper.selectById(userId);
-
         List<Integer> ids = ListUtil.convertIntegerIdsArrayToList(reportIds);
         int cnt = 0;
         List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "审核全员日报");

+ 6 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java

@@ -515,6 +515,10 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                                         leaveEnd = baseMorningEnd;
                                         leaveStart = baseMorningStart;
                                     }
+                                    //开始时间是00:00要处理成正常打卡的开始时间
+                                    if ("00:00".equals(leaveStart)) {
+                                        leaveStart = baseMorningStart;
+                                    }
                                 } else {
                                     if (showLog)System.out.println("跨天请假@@@@");
                                     if (showLog)System.out.println("当天=="+localDate+", sDate=" + sDate+", 比较="+(localDate.isEqual(sDate)));
@@ -540,8 +544,8 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                                         leaveStart = baseMorningStart;
                                     } else {
                                         //中间日期就是全天
-                                        leaveEnd = "00:00";
-                                        leaveStart = "00:00";
+                                        leaveStart = baseMorningStart;
+                                        leaveEnd = baseAfternoonEnd;
                                         if (showLog)System.out.println("===中间天请假===");
                                     }
                                 }

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

@@ -4270,9 +4270,16 @@
                         },res => {
                             if(res.code == 'ok'){
                                 for(let i in res.data){
+                                    let datei = '';
+                                    if (this.user.timeType.showDdCardtime == 1) {
+                                        datei = res.data[i].workDate.split('-');
+                                    } else if (this.user.timeType.showCorpwxCardtime == 1) {
+                                        datei = res.data[i].createDate.split('-');
+                                    }
+                                    
                                     for(let m in this.zhoData){
                                         let datem = new Date(this.zhoData[m].zhoDataTime)
-                                        let datei = res.data[i].workDate
+                                        
                                         if(datei[0] == datem.getFullYear() && datei[1] == (datem.getMonth() + 1) && datei[2] == datem.getDate()){
                                             let item = {
                                                 startTime: res.data[i].startTime,