QuYueTing пре 1 дан
родитељ
комит
303c31135f

+ 9 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -1572,6 +1572,11 @@ public class ReportController {
                         return httpRespMsg;
                     }
                 }
+                if (!StringUtils.isEmpty(report.getExtraField4()) && StringUtils.isEmpty(report.getExtraField5())) {
+                    HttpRespMsg httpRespMsg = new HttpRespMsg();
+                    httpRespMsg.setError("选择了工单号["+report.getExtraField4()+"],对应的行号必填");
+                    return httpRespMsg;
+                }
             }
 
             List<String> collect = reportList.stream().filter(r -> !StringUtils.isEmpty(r.getExtraField4())).map(Report::getExtraField4).collect(Collectors.toList());
@@ -2007,6 +2012,10 @@ public class ReportController {
                 }
             }
         }
+        if (comTimeType.getFillOvertime() == 0) {
+            //不允许填报加班
+            reportList.forEach(r->r.setIsOvertime(0));
+        }
         HttpRespMsg httpRespMsg = reportService.editReport(reportList, createDate.length > 0 ? createDate[0] : null, targetUserList, hourCost, user.getCompanyId(), summary, weeklyAttachment);
         //填报自动通过功能:【上海绎维】、【火石演示】、【博通容合】、【威派格】使用;以及设置了自动审核通过的公司
         if (company.getId() == 862 || company.getId() == 3344 || company.getId() == 936 || comTimeType.getAutoProjectApprove()) {

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserCorpwxTimeController.java

@@ -835,11 +835,17 @@ public class UserCorpwxTimeController {
         list.forEach(l->{
             l.setCompanyId(companyId);
             l.setWxCorpid(wxCorpInfo.getCorpid());
+            if (l.getWorkHours() == null) {
+                msg.setError("数据格式有误:" +l.getName()+","+l.getCreateDate());
+            }
             //工作时长四舍五入
             l.setWorkHours(DateTimeUtil.getHalfHoursFromDouble(l.getWorkHours()));
             l.setWeekDay(l.getCreateDate().getDayOfWeek().getValue());
             l.setWeekDayTxt(DateTimeUtil.getWeekDayTxt(l.getWeekDay()));
         });
+        if (msg.code.equals("error")) {
+            return msg;
+        }
         //处理人员,调用企业微信的通讯录搜索接口
         List<String> userNameList = list.stream().map(UserCorpwxTime::getName).distinct().collect(Collectors.toList());
         try {

+ 22 - 15
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ExcelParserService.java

@@ -4,6 +4,7 @@ import com.management.platform.entity.UserCorpwxTime;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
@@ -23,7 +24,6 @@ public class ExcelParserService {
 
             // 获取表头行
             Row headerRow = sheet.getRow(0);
-            List<String> ignoreDates = new ArrayList<>();
             // 从第二行开始解析数据(假设第一行是表头)
             for (int i = 2; i <= sheet.getLastRowNum(); i++) {
                 Row row = sheet.getRow(i);
@@ -31,8 +31,6 @@ public class ExcelParserService {
 
                 // 获取姓名和部门
                 String name = getCellValue(row.getCell(0));
-                String department = getCellValue(row.getCell(2));
-
                 // 从第4列开始是日期列
                 for (int col = 3; col < row.getLastCellNum(); col++) {
                     Cell dateCell = headerRow.getCell(col);
@@ -42,7 +40,6 @@ public class ExcelParserService {
 
                     // 解析日期(格式如:03-01\n周六)
                     String dateStr = getCellValue(dateCell);
-                    if (ignoreDates.contains(dateStr)) continue;
                     String[] dateParts = dateStr.split("\n");
                     if (dateParts.length < 1) continue;
 
@@ -67,16 +64,21 @@ public class ExcelParserService {
                             //次日最晚打卡
                             Cell nextDateCell = headerRow.getCell(col + 1);
                             String nextDateStr = getCellValue(nextDateCell);
-                            Cell nextDayTime = row.getCell(col + 1);
-                            String nextDayTimeStr = getCellValue(nextDayTime);
-                            String[] nextDayTimes = nextDayTimeStr.split("\n");
-                            if (nextDayTimes[nextDayTimes.length -1].compareTo("12:00") < 0) {
-                                //次日上午打卡结束
-                                String nextDayEndTime = "次日"+nextDayTimes[nextDayTimes.length -1];
-                                times = new String[2];
-                                times[0] = sTime;
-                                times[1] = nextDayEndTime;
-                                ignoreDates.add(nextDateStr);
+                            if (!StringUtils.isEmpty(nextDateStr)) {
+                                Cell nextDayTime = row.getCell(col + 1);
+                                String nextDayTimeStr = getCellValue(nextDayTime);
+                                if (!StringUtils.isEmpty(nextDayTimeStr) && !"-".equals(nextDayTimeStr)) {
+                                    String[] nextDayTimes = nextDayTimeStr.split("\n");
+                                    if (nextDayTimes[nextDayTimes.length -1].compareTo("12:00") < 0) {
+                                        //次日上午打卡结束
+                                        String nextDayEndTime = "次日"+nextDayTimes[nextDayTimes.length -1];
+                                        times = new String[2];
+                                        times[0] = sTime;
+                                        times[1] = nextDayEndTime;
+                                        //跳过下一个日期
+                                        col++;
+                                    }
+                                }
                             }
                         }
                     }
@@ -145,11 +147,16 @@ public class ExcelParserService {
         // 简单计算工作时长(小时)
         // 实际应用中需要更精确的计算,考虑午休时间等
         String[] startParts = startTime.split(":");
+        boolean isEndNextDay = endTime.startsWith("次日");
+        if (endTime.startsWith("次日")) {
+            endTime = endTime.substring(3);
+            System.out.println("去掉次日后="+endTime);
+        }
         String[] endParts = endTime.split(":");
 
         int startHour = Integer.parseInt(startParts[0]);
         int startMinute = Integer.parseInt(startParts[1]);
-        int endHour = Integer.parseInt(endParts[0]);
+        int endHour = Integer.parseInt(endParts[0]) + (isEndNextDay ? 24 : 0);
         int endMinute = Integer.parseInt(endParts[1]);
 
         double hours = (endHour - startHour) + (endMinute - startMinute) / 60.0;

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

@@ -5104,7 +5104,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
 
                 for(int i=0;i<leaveSheetList.size();i++){
-                    GanttDataItem curItem = new GanttDataItem();;
+                    GanttDataItem curItem = new GanttDataItem();
                     if (!leaveSheetList.get(i).getOwnerId().equals(lsLastItemId)) {
                         //抽取父级对象,人员名称
                         int finalI = i;

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

@@ -890,10 +890,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     UserFvTime time = userFvTimeList.get(0);
                     resultMap.put("time", time);
                 }
-                //针对泓浒,前端不显示考勤时间
-                if (companyId != 7536) {
-                    showRefresh = true;
-                }
+                showRefresh = true;
             } else if (timeType.getShowCorpwxCardtime() == 1) {
                 User user = userMapper.selectById(userId);
                 List<UserCorpwxTime> corpwxTimes = null;