Bläddra i källkod

正北考勤修改

QuYueTing 1 vecka sedan
förälder
incheckning
353377e87d

+ 9 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ExcelParserService.java

@@ -145,8 +145,8 @@ public class ExcelParserService {
     }
 
     public static void main(String[] args) {
-        String startTime = "08:30";
-        String endTime = "18:16";
+        String startTime = "08:29";
+        String endTime = "18:07";
         double workHours = calculateZhengBeiWorkHours(startTime, endTime);
 
         System.out.println("工作时长:" + workHours + "小时");
@@ -155,6 +155,13 @@ public class ExcelParserService {
     public static double calculateZhengBeiWorkHours(String startTime, String endTime) {
         // 简单计算工作时长(小时)
         // 实际应用中需要更精确的计算,考虑午休时间等
+        if (startTime.compareTo("08:30") < 0) {
+            startTime = "08:30";
+        }
+        // 12:00-13:00为午休,中间来的得从下午上班时间开始算
+        if (startTime.compareTo("12:00") > 0 && startTime.compareTo("13:00") < 0) {
+            startTime = "13:00";
+        }
         String[] startParts = startTime.split(":");
         boolean isEndNextDay = endTime.startsWith("次日");
         if (endTime.startsWith("次日")) {

+ 66 - 28
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -705,22 +705,34 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
                 Project project = allProjectList.stream().filter(p -> p.getId().equals(r.getProjectId())).findFirst().get();
                 //处理维度列表数据
-                if (timeTypeMapper.selectById(companyId).getCustomDegreeActive() == 1) {
-                    String associateDegrees = project.getAssociateDegrees();
-                    List<HashMap> degreeMapList = new ArrayList<>();
-                    if (associateDegrees != null) {
-                        String[] split = associateDegrees.split("\\,");
-                        for (int i=0;i<split.length; i++) {
-                            HashMap map = new HashMap();
-                            if (!StringUtils.isEmpty(split[i])) {
-                                Integer id = Integer.parseInt(split[i]);
-                                map.put("id", id);
-                                map.put("name", degreeList.stream().filter(d->d.getId().equals(id)).findFirst().get().getName());
-                                degreeMapList.add(map);
+                if (timeType.getCustomDegreeActive() == 1) {
+                    if (timeType.getCustomDegreeWithPro() == 1) {
+                        String associateDegrees = project.getAssociateDegrees();
+                        List<HashMap> degreeMapList = new ArrayList<>();
+                        if (associateDegrees != null) {
+                            String[] split = associateDegrees.split("\\,");
+                            for (int i=0;i<split.length; i++) {
+                                HashMap map = new HashMap();
+                                if (!StringUtils.isEmpty(split[i])) {
+                                    Integer id = Integer.parseInt(split[i]);
+                                    map.put("id", id);
+                                    map.put("name", degreeList.stream().filter(d->d.getId().equals(id)).findFirst().get().getName());
+                                    degreeMapList.add(map);
+                                }
                             }
                         }
+                        r.setDegreeList(degreeMapList);
+                    } else {
+                        //不关联项目
+                        List<HashMap> degreeMapList = new ArrayList<>();
+                        for (int i=0;i<degreeList.size(); i++) {
+                            HashMap map = new HashMap();
+                            map.put("id", degreeList.get(i).getId());
+                            map.put("name", degreeList.get(i).getName());
+                            degreeMapList.add(map);
+                        }
+                        r.setDegreeList(degreeMapList);
                     }
-                    r.setDegreeList(degreeMapList);
                 }
                 //检查是否是按照任务分组负责人审核
                 int reportAuditType = timeTypeMapper.selectById(companyId).getReportAuditType();
@@ -8798,7 +8810,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     reports.add(recentFillReport);
                 }
             } else {
-                msg.setError("请先设置参与的项目");
+                msg.setError("您尚未填写过日报,无法实现智能填报");
                 return msg;
             }
         }
@@ -8835,23 +8847,37 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
 
                 //处理维度列表数据
-                if (timeTypeMapper.selectById(companyId).getCustomDegreeActive() == 1) {
-                    Project project = allProjectList.stream().filter(p -> p.getId().equals(r.getProjectId())).findFirst().get();
-                    String associateDegrees = project.getAssociateDegrees();
-                    List<HashMap> degreeMapList = new ArrayList<>();
-                    if (associateDegrees != null) {
-                        String[] split = associateDegrees.split("\\,");
-                        for (int i=0;i<split.length; i++) {
-                            HashMap map = new HashMap();
-                            if (!StringUtils.isEmpty(split[i])) {
-                                Integer id = Integer.parseInt(split[i]);
-                                map.put("id", id);
-                                map.put("name", degreeList.stream().filter(d->d.getId().equals(id)).findFirst().get().getName());
-                                degreeMapList.add(map);
+                TimeType timeType = timeTypeMapper.selectById(companyId);
+                if (timeType.getCustomDegreeActive() == 1) {
+                    if (timeType.getCustomDegreeWithPro() == 1) {
+                        //和项目绑定的自定义维度
+                        Project project = allProjectList.stream().filter(p -> p.getId().equals(r.getProjectId())).findFirst().get();
+                        String associateDegrees = project.getAssociateDegrees();
+                        List<HashMap> degreeMapList = new ArrayList<>();
+                        if (associateDegrees != null) {
+                            String[] split = associateDegrees.split("\\,");
+                            for (int i=0;i<split.length; i++) {
+                                HashMap map = new HashMap();
+                                if (!StringUtils.isEmpty(split[i])) {
+                                    Integer id = Integer.parseInt(split[i]);
+                                    map.put("id", id);
+                                    map.put("name", degreeList.stream().filter(d->d.getId().equals(id)).findFirst().get().getName());
+                                    degreeMapList.add(map);
+                                }
                             }
                         }
+                        r.setDegreeList(degreeMapList);
+                    } else {
+                        //不关联项目
+                        List<HashMap> degreeMapList = new ArrayList<>();
+                        for (int i=0;i<degreeList.size(); i++) {
+                            HashMap map = new HashMap();
+                            map.put("id", degreeList.get(i).getId());
+                            map.put("name", degreeList.get(i).getName());
+                            degreeMapList.add(map);
+                        }
+                        r.setDegreeList(degreeMapList);
                     }
-                    r.setDegreeList(degreeMapList);
                 }
                 int reportAuditType = timeTypeMapper.selectById(companyId).getReportAuditType();
                 //分组
@@ -8957,6 +8983,18 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 } else {
                     //4和5是所属BU负责人审核和部门负责人审核,不需要前端页面显示审核人
                 }
+
+                //解析自定义多选数组
+                if (!StringUtils.isEmpty(r.getMultiDegrId())) {
+                    String multi = r.getMultiDegrId().replace("@", ",");
+                    JSONArray array = JSONArray.parseArray(multi);
+                    List<Integer> list = new ArrayList<>();
+                    for (int i=0;i<array.size(); i++) {
+                        Integer id = array.getInteger(i);
+                        list.add(id);
+                    }
+                    r.setMultiDegrIdList(list);
+                }
             });
             msg.data = reports;
         } catch (NullPointerException e) {

+ 1 - 1
fhKeeper/formulahousekeeper/octopus/src/views/customer/list.vue

@@ -80,7 +80,7 @@
                     <el-button size="mini"  @click="editClick('D', scope.row)">{{scope.row.setMeal ? '设为未签约' : '设为已签约'}}</el-button>
                     <el-button size="mini"  @click="editClick('G', scope.row)">其他设置</el-button>
                     <el-button size="mini"  @click="editClick('H', scope.row)">报表配置</el-button>
-                    <el-button size="mini"  @click="editClick('K', scope.row)" v-if="user.phone=='15895914665'">登录系统</el-button>
+                    <el-button size="mini"  @click="editClick('K', scope.row)">登录系统</el-button>
                     <el-button size="mini"  @click="editClick('I', scope.row)"  v-if="scope.row.canDelete">删除企业</el-button>
                     <el-button size="mini"  @click="editClick('E', scope.row)" v-loading="dingdingSync" v-if="scope.row.dingdingCorpid">同步钉钉人员</el-button>
                 </template>

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

@@ -6514,7 +6514,7 @@
                                     multiWorktime: aiReportData[i].multiWorktime || 0,
                                     worktimeList: [{}],
                                     degreeId: aiReportData[i].degreeId==-1?null:aiReportData[i].degreeId,
-                                    multiDegrIdArray: aiReportData[i].multiDegrId?JSON.parse(aiReportData[i].multiDegrId):null,
+                                    multiDegrIdArray: aiReportData[i].multiDegrIdList,
                                     wuduList: aiReportData[i].degreeList,
                                     taskGroups:aiReportData[i].taskGroups,
                                     customData: aiReportData[i].customData,//自定义的数值

+ 21 - 2
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -1747,7 +1747,24 @@ export default {
                                 subProjectName = list[i].subProjectList.filter(s => s.id == list[i].subProjectId)[0].name;
                             }
                             var projectName = list[i].projectName;
-                            arr.push({
+                            var t = this.user.timeType;
+                            let mmm = !t.customDegreeMultiple ? list[i].degreeId : (list[i].multiDegrIdList || [])
+                            let sss = list[i].degreeList || []
+                            let radioPickDegree = ''
+                            let wuduName = ''
+                            if(!t.customDegreeMultiple) {
+                                for (var s in sss) {
+                                    if (sss[s].id == mmm) {
+                                        wuduName = sss[s].name
+                                    }
+                                }
+                                radioPickDegree = sss.filter(s => s.id == mmm)[0]
+                            } else {
+                                let arr = sss.filter(s => mmm.includes(s.id)).map(s => s.name);
+                                radioPickDegree = sss.filter(s => mmm.includes(s.id))
+                                wuduName = arr.join(',')
+                            }
+                            let copyReport = {
                                 projectId: list[i].projectId,
                                 projectName: projectName,
                                 workingTime: String(list[i].workingTime),
@@ -1767,6 +1784,7 @@ export default {
                                 multiWorktime: list[i].multiWorktime,
                                 worktimeList: list[i].worktimeList,
                                 wuduList: list[i].degreeList,
+                                weiduName: wuduName,
                                 degreeId: list[i].degreeId==-1?null:list[i].degreeId,
                                 subProjectId: list[i].subProjectId,
                                 subProjectName: subProjectName,
@@ -1802,7 +1820,8 @@ export default {
                                 userReportDeptName: list[i].userReportDeptName,
                                 reportTargetDeptId: list[i].deptId,
                                 content: list[i].content
-                            })
+                            }
+                            arr.push(copyReport)
                         }
                         this.form.domains = arr;
                     } else {