Browse Source

Merge branch 'master' of http://47.100.37.243:10191/quyueting/manHourHousekeeper

seyanew 2 tuần trước cách đây
mục cha
commit
89ef07248f
33 tập tin đã thay đổi với 869 bổ sung20 xóa
  1. 49 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserCorpwxTimeController.java
  2. 3 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ContractBonusDetailServiceImpl.java
  3. 3 6
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceImportServiceImpl.java
  4. 3 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceServiceImpl.java
  5. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  6. 15 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  7. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/SimpleReportServiceImpl.java
  8. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  9. 3 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/DataCollectTask.java
  10. 8 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/DateTimeUtil.java
  11. BIN
      fhKeeper/formulahousekeeper/management-platform/workTime.2025-11-08.log.gz
  12. 21 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/FactoryController.java
  13. 21 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/MealApplicationsController.java
  14. 21 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/MealTypesController.java
  15. 52 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/TabletController.java
  16. 61 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/Factory.java
  17. 134 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/MealApplications.java
  18. 74 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/MealTypes.java
  19. 16 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/FactoryMapper.java
  20. 16 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/MealApplicationsMapper.java
  21. 16 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/MealTypesMapper.java
  22. 16 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/FactoryService.java
  23. 22 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/MealApplicationsService.java
  24. 16 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/MealTypesService.java
  25. 20 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/FactoryServiceImpl.java
  26. 164 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/MealApplicationsServiceImpl.java
  27. 20 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/MealTypesServiceImpl.java
  28. 1 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/resources/application.yml
  29. 20 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/FactoryMapper.xml
  30. 28 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/MealApplicationsMapper.xml
  31. 22 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/MealTypesMapper.xml
  32. BIN
      fhKeeper/formulahousekeeper/management-workshop/workshop_print.2025-11-11.log.gz
  33. 20 3
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/weeklyCustomization.vue

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

@@ -596,6 +596,55 @@ public class UserCorpwxTimeController {
         return msg;
     }
 
+    @RequestMapping("/refreshWeeklyCardTime")
+    public HttpRespMsg refreshWeeklyCardTime(String dateArray, String userId){
+        HttpRespMsg msg=new HttpRespMsg();
+        User user = null;
+        if (StringUtils.isEmpty(userId)) {
+            user = userMapper.selectById(request.getHeader("token"));
+        } else {
+            user = userMapper.selectById(userId);
+        }
+
+        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        JSONArray array = JSONArray.parseArray(dateArray);
+        List<String> dateList = new ArrayList<>();
+        for (int i=0;i<array.size(); i++) {
+            String date = array.getString(i);
+            dateList.add(date);
+            LocalDate localDate = LocalDate.parse(date, df);
+            //如果是今天,取日打卡记录接口,如果是过往其他日期,取考勤记录接口
+            if (localDate.isEqual(LocalDate.now())) {
+                LocalDateTime start = LocalDateTime.of(localDate, LocalTime.MIN);
+                LocalDateTime end = LocalDateTime.of(localDate, LocalTime.MAX).withSecond(0).withNano(0);
+                wxCorpInfoService.getUserPunchRecord(user.getCompanyId(),user.getId(),start,end,false);
+            } else if (localDate.isBefore(LocalDate.now())) {
+                LocalDateTime start = localDate.atTime(0,0,0);
+                LocalDateTime end = localDate.atTime(0,0,0);
+                wxCorpInfoService.getUserCheckInDayData(user.getCompanyId(),user.getId(),start, end, true);
+                List<UserCorpwxTime> changedCorpwxTimes = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>()
+                        .eq("corpwx_userid", user.getCorpwxUserid()).eq("create_date", date));
+
+                if (changedCorpwxTimes.size() > 0) {
+                    UserCorpwxTime time = changedCorpwxTimes.get(0);
+                    //如果没有考勤,获取当日打卡记录
+                    boolean hasTimeRecord = time.getWorkHours() > 0 || time.getCardTime() >= 1.0 || time.getAskLeaveTime() > 0 || time.getOutdoorTime() > 0;
+                    if (!hasTimeRecord) {
+                        LocalDateTime start1 = LocalDateTime.of(localDate, LocalTime.MIN);
+                        LocalDateTime end1 = LocalDateTime.of(localDate, LocalTime.MAX).withSecond(0).withNano(0);
+                        wxCorpInfoService.getUserPunchRecord(user.getCompanyId(),user.getId(),start1,end1,false);
+                    }
+                }
+            }
+        }
+        if (dateList.size() > 0) {
+            List<UserCorpwxTime> changedCorpwxTimes = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>()
+                    .eq("corpwx_userid", user.getCorpwxUserid()).in("create_date", dateList));
+            msg.data=changedCorpwxTimes;
+        }
+        return msg;
+    }
+
     @RequestMapping("/importCardTime")
     public HttpRespMsg importCardTime(Integer companyId, MultipartFile multipartFile, HttpServletRequest request){
         HttpRespMsg msg=new HttpRespMsg();

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

@@ -14,6 +14,7 @@ import com.management.platform.mapper.*;
 import com.management.platform.service.ContractBonusDetailService;
 import com.management.platform.service.ContractBonusSummaryService;
 import com.management.platform.service.WxCorpInfoService;
+import com.management.platform.util.DateTimeUtil;
 import com.management.platform.util.ExcelUtil;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MessageUtils;
@@ -321,7 +322,8 @@ public class ContractBonusDetailServiceImpl extends ServiceImpl<ContractBonusDet
             List<String> userIds = importDataList.stream().map(ImportBonusTemplateVO::getUserId).collect(Collectors.toList());
             BonusDataBO bonusDataBO = new BonusDataBO();
             bonusDataBO.setStartDate(startYM+"-01");
-            bonusDataBO.setEndDate(endYM+"-31");
+            //获取startYM的最后一天的日期, startYM为2025-05格式
+            bonusDataBO.setEndDate(DateTimeUtil.getLastDayOfYearMonth(endYM));
             bonusDataBO.setBonusType(bonusType);
             bonusDataBO.setUserIds(userIds);
             bonusDataBO.setCompanyId(user.getCompanyId());

+ 3 - 6
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceImportServiceImpl.java

@@ -6,10 +6,7 @@ import com.management.platform.entity.*;
 import com.management.platform.mapper.*;
 import com.management.platform.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.management.platform.util.ExcelUtil;
-import com.management.platform.util.HttpRespMsg;
-import com.management.platform.util.MessageUtils;
-import com.management.platform.util.UserNotFoundException;
+import com.management.platform.util.*;
 import org.apache.commons.io.FileUtils;
 import org.apache.poi.ss.usermodel.*;
 import org.springframework.beans.factory.annotation.Value;
@@ -118,7 +115,7 @@ public class FinanceImportServiceImpl extends ServiceImpl<FinanceImportMapper, F
             List<User> updateUserList = new ArrayList<>();
 
             String startStr = yearMonth + "-01";
-            String endStr = yearMonth + "-31";
+            String endStr = DateTimeUtil.getLastDayOfYearMonth(yearMonth);;
             //由于第一行需要指明列对应的标题
             int rowNum = sheet.getLastRowNum();
             for (int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++) {
@@ -303,7 +300,7 @@ public class FinanceImportServiceImpl extends ServiceImpl<FinanceImportMapper, F
                 List<User> updateUserList = new ArrayList<>();
 
                 String startStr = yearMonth + "-01";
-                String endStr = yearMonth + "-31";
+                String endStr = DateTimeUtil.getLastDayOfYearMonth(yearMonth);;
                 //获取人员该月份填写的日报的总时长
                 List<Map<String, Object>> userTimeList = null;
                 if (financeImport.getRecoverMonthcost()==1 || financeImport.getRecoverReport()==1) {

+ 3 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceServiceImpl.java

@@ -9,6 +9,7 @@ import com.management.platform.entity.*;
 import com.management.platform.entity.excel.SpecialContractMonthSalary;
 import com.management.platform.mapper.*;
 import com.management.platform.service.*;
+import com.management.platform.util.DateTimeUtil;
 import com.management.platform.util.ExcelUtil;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MessageUtils;
@@ -116,7 +117,7 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
         List<Finance> financeList = financeMapper.selectListByDept(companyId, yearMonth,deptIds);
         TimeType timeType = timeTypeMapper.selectById(companyId);
         //当前月是否有项目日报数据
-        List<Map<String, Object>> userList = reportMapper.selectFillReportUserList(companyId, yearMonth+"-01", yearMonth+"-31");
+        List<Map<String, Object>> userList = reportMapper.selectFillReportUserList(companyId, yearMonth+"-01", DateTimeUtil.getLastDayOfYearMonth(yearMonth));
         if (timeType.getIsSecretSalary() == 1) {
             //秘薪处理
             financeList.forEach(finance->{
@@ -192,7 +193,7 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
             //需要更新成本的人员数据
             List<User> updateUserList = new ArrayList<>();
             String startStr = yearMonth + "-01";
-            String endStr = yearMonth + "-31";
+            String endStr = DateTimeUtil.getLastDayOfYearMonth(yearMonth);
             //获取人员该月份填写的日报的总时长
             List<Map<String, Object>> userTimeList = null;
             if (syncUserCost || syncHistoryReport) {

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

@@ -10985,7 +10985,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             TimeType timeType = timeTypeMapper.selectById(companyId);
             if (timeType.getFixMonthcost() == 1) {
                 //每月固定月薪的方式计算,平摊到各个项目中
-                List<Map<String, Object>> list = projectMapper.getTimeCostReport(companyId, startDate+"-01", endDate+"-31", null,deptIds);
+                List<Map<String, Object>> list = projectMapper.getTimeCostReport(companyId, startDate+"-01", DateTimeUtil.getLastDayOfYearMonth(endDate), null,deptIds);
                 //检查财务表中是否已经导入成本
                 List<Finance> financeList = financeMapper.selectList(new QueryWrapper<Finance>().eq("ymonth", startDate).eq("company_id", companyId));
                 List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));

+ 15 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -55,6 +55,7 @@ import java.text.SimpleDateFormat;
 import java.time.*;
 import java.time.chrono.ChronoLocalDate;
 import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeFormatterBuilder;
 import java.time.format.DateTimeParseException;
 import java.time.temporal.ChronoUnit;
 import java.time.temporal.TemporalAdjusters;
@@ -7402,7 +7403,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             } else {
                 //按月
                 startDate = date + "-01";
-                endDate = date + "-31";
+                endDate = DateTimeUtil.getLastDayOfYearMonth(date);
             }
             //pageIndex从1开始
             Integer startIndex = (pageIndex -1) * pageSize;
@@ -9591,6 +9592,18 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 dateList = new ArrayList<>();
             }
             reportMap.put("dateList", dateList);
+            //查询考勤请假状态
+            WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+            if (wxCorpInfo != null && dateList.size() > 0) {
+                List<UserCorpwxTime> userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("corpwx_userid", user.getCorpwxUserid()).in("create_date", dateList.stream().map(r -> (String) r.get("date")).collect(Collectors.toList())));
+                for (HashMap item : dateList) {
+                    String curDate = (String) item.get("date");
+                    UserCorpwxTime userCorpwxTime = userCorpwxTimeList.stream().filter(r -> r.getCreateDate().isEqual(LocalDate.parse(curDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")))).findFirst().orElse(null);
+                    if (userCorpwxTime != null) {
+                        item.put("time", userCorpwxTime);
+                    }
+                }
+            }
             reportMap.put("summary", summary);
             reportMap.put("weeklyAttachment", attachment);
         } else {
@@ -12188,7 +12201,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         Integer leaveProjectId = 80333;//请假项目,排除在外
         Integer publicProjectId = 77651;//公共项目
         String startDate = ymonth + "-01";
-        String endDate = ymonth + "-31";
+        String endDate = DateTimeUtil.getLastDayOfYearMonth(ymonth);
         QueryWrapper<Report> wrapper = new QueryWrapper<Report>().select("id, create_date, creator_id, project_id,dept_id, working_time, group_id, extra_field4").eq("company_id", companyId).ne("project_id", leaveProjectId)
                 .eq("state", 1).between("create_date", startDate, endDate);
         if (projectId != null) {

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

@@ -8,6 +8,7 @@ import com.management.platform.service.ExcelExportService;
 import com.management.platform.service.SimpleFinanceService;
 import com.management.platform.service.SimpleProjectimeService;
 import com.management.platform.service.SimpleReportService;
+import com.management.platform.util.DateTimeUtil;
 import com.management.platform.util.ExcelUtil;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MessageUtils;
@@ -129,7 +130,7 @@ public class SimpleReportServiceImpl extends ServiceImpl<SimpleReportMapper, Sim
                 List<User> updateUserList = new ArrayList<>();
                 LocalDate now = LocalDate.now();
                 String startStr = yearMonth + "-01";
-                String endStr = yearMonth + "-31";
+                String endStr = DateTimeUtil.getLastDayOfYearMonth(yearMonth);;
                 //获取人员该月份填写的日报的总时长
                 List<Map<String, Object>> userTimeList = null;
 

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

@@ -380,7 +380,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
             //需要更新成本的人员数据
             List<User> updateUserList = new ArrayList<>();
             String startStr = yearMonth + "-01";
-            String endStr = yearMonth + "-31";
+            String endStr = DateTimeUtil.getLastDayOfYearMonth(yearMonth);;
             BigDecimal monthTotalHours = timeType.getMonthDays().multiply(new BigDecimal(timeType.getAllday()));
             //由于第一行需要指明列对应的标题
             for (int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++) {

+ 3 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/DataCollectTask.java

@@ -47,6 +47,8 @@ public class DataCollectTask {
     private FinanceMonthlyWorktimeMapper financeMonthlyWorktimeMapper;
     @Autowired
     private UserFvTimeService userFvTimeService;
+    @Autowired
+    private ProjectService projectService;
 
     @Scheduled(cron = "30 10 8,12,20 * * ?")
 //    @Scheduled(cron = "30 08 21 * * ?")
@@ -94,7 +96,7 @@ public class DataCollectTask {
     public void sqlServerProjectTask() {
         if(isDev){return;}
         if(isPrivateDeploy) return;
-
+        projectService.syncHongHuData(HONGHU_COMP_ID);
 
     }
 

+ 8 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/DateTimeUtil.java

@@ -84,9 +84,16 @@ public class DateTimeUtil {
 
     public static void main(String[] args) {
         LocalDate localDate = LocalDate.now();
-        System.out.println(localDate);
+        System.out.println(getLastDayOfYearMonth("2025-08"));
         System.out.println(localDate.getDayOfWeek().getValue());
         localDate = localDate.with(DayOfWeek.SUNDAY);
         System.out.println(localDate);
     }
+
+    public static String getLastDayOfYearMonth(String yearMonth) {
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDate localDate = LocalDate.parse(yearMonth + "-01", dateTimeFormatter);
+        LocalDate lastDay = localDate.withDayOfMonth(localDate.getMonth().length(localDate.isLeapYear()));
+        return dateTimeFormatter.format(lastDay);
+    }
 }

BIN
fhKeeper/formulahousekeeper/management-platform/workTime.2025-11-08.log.gz


+ 21 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/FactoryController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-11-11
+ */
+@RestController
+@RequestMapping("/factory")
+public class FactoryController {
+
+}
+

+ 21 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/MealApplicationsController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-11-11
+ */
+@RestController
+@RequestMapping("/meal-applications")
+public class MealApplicationsController {
+
+}
+

+ 21 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/MealTypesController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-11-11
+ */
+@RestController
+@RequestMapping("/meal-types")
+public class MealTypesController {
+
+}
+

+ 52 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/TabletController.java

@@ -0,0 +1,52 @@
+package com.management.platform.controller;
+
+import com.management.platform.mapper.DepartmentMapper;
+import com.management.platform.mapper.UserCustomMapper;
+import com.management.platform.service.FeishuInfoService;
+import com.management.platform.service.MealApplicationsService;
+import com.management.platform.service.UserService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+@RestController
+@RequestMapping("/tablet")
+//商米收银机接口服务
+public class TabletController {
+    @Autowired
+    private UserService userService;
+
+    @Resource
+    private MealApplicationsService mealApplicationsService;
+    /**
+     * 登录
+     * username 用户名
+     * password 密码
+     */
+    @RequestMapping("/login")
+    public HttpRespMsg login(String username, String password) {
+        return userService.loginAdmin(username, password);
+    }
+
+    @RequestMapping("/getDinnerBokingList")
+    public HttpRespMsg getDinnerBookingList(String date, @RequestParam(required = false, defaultValue = "-1" ) Integer status) {
+        return mealApplicationsService.getDinnerBookingList(date, status);
+    }
+
+    @RequestMapping("/writeOffCode")
+    public HttpRespMsg writeOffCode(String code) {
+        return mealApplicationsService.writeOffCode(code);
+    }
+
+    @RequestMapping("/getTodayStatistics")
+    public HttpRespMsg getTodayStatistics() {
+        return mealApplicationsService.getTodayStatistics();
+    }
+
+
+}

+ 61 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/Factory.java

@@ -0,0 +1,61 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-11-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class Factory extends Model<Factory> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 厂区名称
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 厂区编码
+     */
+    @TableField("code")
+    private String code;
+
+    /**
+     * 是否启用 0:没启用 ;1:启用;
+     */
+    @TableField("is_active")
+    private String isActive;
+
+    @TableField("create_at")
+    private LocalDateTime createAt;
+
+    @TableField("update_at")
+    private LocalDateTime updateAt;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 134 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/MealApplications.java

@@ -0,0 +1,134 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+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>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-11-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class MealApplications extends Model<MealApplications> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 员工ID
+     */
+    @TableField("user_id")
+    private String userId;
+
+    /**
+     * 申请日期
+     */
+    @TableField("application_date")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate applicationDate;
+
+    /**
+     * 用餐类型ID
+     */
+    @TableField("meal_type_id")
+    private String mealTypeId;
+
+    /**
+     * 厂区ID
+     */
+    @TableField("factory_id")
+    private Integer factoryId;
+
+    /**
+     * 状态: 0:已申请,1:已使用,2:已取消,3:已过期
+     */
+    @TableField("status")
+    private Integer status;
+
+    /**
+     * 二维码
+     */
+    @TableField("qr_code")
+    private String qrCode;
+
+    /**
+     * 申请时间
+     */
+    @TableField("applied_at")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime appliedAt;
+
+    /**
+     * 使用时间
+     */
+    @TableField("used_at")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime usedAt;
+
+    /**
+     * 取消时间
+     */
+    @TableField("cancelled_at")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime cancelledAt;
+
+    /**
+     * 取消原因
+     */
+    @TableField("cancel_reason")
+    private String cancelReason;
+
+    @TableField("created_at")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createdAt;
+
+    @TableField("updated_at")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updatedAt;
+
+    /**
+     * 预定码
+     */
+    @TableField("code")
+    private String code;
+
+    @TableField(exist = false)
+    private String userName;
+    @TableField(exist = false)
+    private String jobNumber;
+    @TableField(exist = false)
+    private String factoryName;
+    @TableField(exist = false)
+    private String mealTypeName;
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+
+}

+ 74 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/MealTypes.java

@@ -0,0 +1,74 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-11-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class MealTypes extends Model<MealTypes> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId("id")
+    private String id;
+
+    /**
+     * 用餐类型名称
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 类型编码
+     */
+    @TableField("code")
+    private String code;
+
+    /**
+     * 开始时间
+     */
+    @TableField("start_time")
+    private LocalDateTime startTime;
+
+    /**
+     * 结束时间
+     */
+    @TableField("end_time")
+    private LocalDateTime endTime;
+
+    /**
+     * 是否启用,1:启用,0:关闭
+     */
+    @TableField("is_active")
+    private String isActive;
+
+    @TableField("create_at")
+    private LocalDateTime createAt;
+
+    @TableField("update_at")
+    private LocalDateTime updateAt;
+
+    @TableField(exist = false)
+    private int count;
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/FactoryMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.Factory;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-11-11
+ */
+public interface FactoryMapper extends BaseMapper<Factory> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/MealApplicationsMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.MealApplications;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-11-11
+ */
+public interface MealApplicationsMapper extends BaseMapper<MealApplications> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/MealTypesMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.MealTypes;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-11-11
+ */
+public interface MealTypesMapper extends BaseMapper<MealTypes> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/FactoryService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.Factory;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-11-11
+ */
+public interface FactoryService extends IService<Factory> {
+
+}

+ 22 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/MealApplicationsService.java

@@ -0,0 +1,22 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.MealApplications;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.util.HttpRespMsg;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-11-11
+ */
+public interface MealApplicationsService extends IService<MealApplications> {
+
+    HttpRespMsg getDinnerBookingList(String date, Integer status);
+
+    HttpRespMsg writeOffCode(String code);
+
+    HttpRespMsg getTodayStatistics();
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/MealTypesService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.MealTypes;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-11-11
+ */
+public interface MealTypesService extends IService<MealTypes> {
+
+}

+ 20 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/FactoryServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.Factory;
+import com.management.platform.mapper.FactoryMapper;
+import com.management.platform.service.FactoryService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-11-11
+ */
+@Service
+public class FactoryServiceImpl extends ServiceImpl<FactoryMapper, Factory> implements FactoryService {
+
+}

+ 164 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/MealApplicationsServiceImpl.java

@@ -0,0 +1,164 @@
+package com.management.platform.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.MealApplications;
+import com.management.platform.entity.MealTypes;
+import com.management.platform.entity.User;
+import com.management.platform.entity.Factory;
+import com.management.platform.mapper.FactoryMapper;
+import com.management.platform.mapper.MealApplicationsMapper;
+import com.management.platform.mapper.MealTypesMapper;
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.MealApplicationsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-11-11
+ */
+@Service
+public class MealApplicationsServiceImpl extends ServiceImpl<MealApplicationsMapper, MealApplications> implements MealApplicationsService {
+
+    @Autowired
+    private HttpServletRequest request;
+    @Resource
+    private MealApplicationsMapper mealApplicationsMapper;
+    @Resource
+    private MealTypesMapper mealTypesMapper;
+
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private FactoryMapper factoryMapper;
+
+    //获取当天订餐列表
+    @Override
+    public HttpRespMsg getDinnerBookingList(String date, Integer status) {
+        HttpRespMsg msg = new HttpRespMsg();
+        String factoryCode = request.getHeader("factoryCode");
+        if (factoryCode == null) {
+            msg.setError("factoryCode is null");
+            return msg;
+        }
+        Factory factoryItem = factoryMapper.selectOne(new QueryWrapper<Factory>().eq("code", factoryCode));
+        if (factoryItem == null) {
+            msg.setError("factory code not exists");
+            return msg;
+        }
+        List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("is_active", 1));
+        List<MealTypes> mealTypesList = mealTypesMapper.selectList(new QueryWrapper<MealTypes>());
+        //按收银机所在厂区查看
+        QueryWrapper<MealApplications> queryWrapper = new QueryWrapper<MealApplications>()
+                .eq("factory_id", factoryItem.getId()).eq("application_date", date).orderByDesc("id");
+        if (status != null && status != -1) {
+            queryWrapper.eq("status", status);
+        }
+        List<MealApplications> mealApplicationsList = mealApplicationsMapper.selectList(queryWrapper);
+        //绑定数据
+        for (MealApplications mealApplications : mealApplicationsList) {
+            for (User user : userList) {
+                if (user.getId().equals(mealApplications.getUserId())) {
+                    mealApplications.setUserName(user.getName());
+                    mealApplications.setJobNumber(user.getJobNumber());
+                }
+            }
+            mealTypesList.stream().filter(mealTypes -> mealTypes.getId().equals(mealApplications.getMealTypeId())).forEach(mealTypes -> mealApplications.setMealTypeName(mealTypes.getName()));
+        }
+        msg.setData(mealApplicationsList);
+        return msg;
+    }
+
+    /**
+     * 核销预定码
+     * @param code
+     * @return
+     */
+    @Override
+    public HttpRespMsg writeOffCode(String code) {
+        HttpRespMsg msg = new HttpRespMsg();
+        String factoryCode = request.getHeader("factoryCode");
+        if (factoryCode == null) {
+            msg.setError("factory is null");
+            return msg;
+        }
+        Factory factoryItem = factoryMapper.selectOne(new QueryWrapper<Factory>().eq("code", factoryCode));
+        if (factoryItem == null) {
+            msg.setError("factory not exists");
+            return msg;
+        }
+        MealApplications mealApplications = mealApplicationsMapper.selectOne(new QueryWrapper<MealApplications>().eq("code", code));
+        if (mealApplications == null) {
+            msg.setError("预定码不存在,无法核销");
+            return msg;
+        } else if (mealApplications.getFactoryId().equals(factoryItem.getId())) {
+            msg.setError("预定码不属于当前厂区,无法核销");
+            return msg;
+        } else if (!mealApplications.getStatus().equals(0)) {
+            if (mealApplications.getStatus().equals(1)) {
+                msg.setError("预定码已核销");
+                return msg;
+            } else if (mealApplications.getStatus().equals(2)) {
+                msg.setError("预定码已取消");
+                return msg;
+            } else if (mealApplications.getStatus().equals(3)) {
+                msg.setError("预定码已过期");
+                return msg;
+            }
+        } else {
+            //预约码可用
+            mealApplications.setUsedAt(LocalDateTime.now());
+            mealApplications.setStatus(1);
+            mealApplicationsMapper.updateById(mealApplications);
+            return msg;
+        }
+
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg getTodayStatistics() {
+        HttpRespMsg msg = new HttpRespMsg();
+        String factoryCode = request.getHeader("factoryCode");
+        System.out.println("getTodayStatistics, factoryCode:"+factoryCode);
+        if (factoryCode == null) {
+            msg.setError("factory is null");
+            return msg;
+        }
+        Factory factoryItem = factoryMapper.selectOne(new QueryWrapper<Factory>().eq("code", factoryCode));
+        if (factoryItem == null) {
+            msg.setError("factory not exists");
+            return msg;
+        }
+        //取今天的
+        String date = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+
+        QueryWrapper<MealApplications> queryWrapper = new QueryWrapper<MealApplications>().eq("factory_id", factoryItem.getId()).eq("application_date", date).ne("status", 2);
+        List<MealApplications> mealApplicationsList = mealApplicationsMapper.selectList(queryWrapper);
+        //按用餐类型统计人数
+        List<MealTypes> mealTypesList = mealTypesMapper.selectList(new QueryWrapper<MealTypes>());
+        for (MealTypes mealTypes : mealTypesList) {
+            int count = 0;
+            for (MealApplications mealApplications : mealApplicationsList) {
+                if (mealTypes.getId().equals(mealApplications.getMealTypeId())) {
+                    count++;
+                }
+            }
+            mealTypes.setCount(count);
+        }
+        msg.setData(mealTypesList);
+        return msg;
+    }
+}

+ 20 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/MealTypesServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.MealTypes;
+import com.management.platform.mapper.MealTypesMapper;
+import com.management.platform.service.MealTypesService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-11-11
+ */
+@Service
+public class MealTypesServiceImpl extends ServiceImpl<MealTypesMapper, MealTypes> implements MealTypesService {
+
+}

+ 1 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/application.yml

@@ -128,7 +128,7 @@ referer:
     - mobdevworkshop.ttkuaiban.com
     - devworkshop.ttkuaiban.com
     - 47.101.180.183
-excludeUrls: /wxcorp/*,/wxcorp/*/*,/dingding/*,/feishu-info/*,/error,/testClient,/corpWXAuth,/corpWXScanningAuth,/corpInsideWXAuth,/wx-corp-info/*,/clean/*,/innerRoles/*,/report/getReportListByToken,/report/getProcessErrorData,/project/synchronizationProject,/user/updateUserDeptHierarchy
+excludeUrls: /tablet/*, /wxcorp/*,/wxcorp/*/*,/dingding/*,/feishu-info/*,/error,/testClient,/corpWXAuth,/corpWXScanningAuth,/corpInsideWXAuth,/wx-corp-info/*,/clean/*,/innerRoles/*,/report/getReportListByToken,/report/getProcessErrorData,/project/synchronizationProject,/user/updateUserDeptHierarchy
 
 #企业微信相关参数
 suitId: ww4e237fd6abb635af

+ 20 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/FactoryMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.FactoryMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.Factory">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="code" property="code" />
+        <result column="is_active" property="isActive" />
+        <result column="create_at" property="createAt" />
+        <result column="update_at" property="updateAt" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, name, code, is_active, create_at, update_at
+    </sql>
+
+</mapper>

+ 28 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/MealApplicationsMapper.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.MealApplicationsMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.MealApplications">
+        <id column="id" property="id" />
+        <result column="user_id" property="userId" />
+        <result column="application_date" property="applicationDate" />
+        <result column="meal_type_id" property="mealTypeId" />
+        <result column="factory_id" property="factoryId" />
+        <result column="status" property="status" />
+        <result column="qr_code" property="qrCode" />
+        <result column="applied_at" property="appliedAt" />
+        <result column="used_at" property="usedAt" />
+        <result column="cancelled_at" property="cancelledAt" />
+        <result column="cancel_reason" property="cancelReason" />
+        <result column="created_at" property="createdAt" />
+        <result column="updated_at" property="updatedAt" />
+        <result column="code" property="code" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, user_id, application_date, meal_type_id, factory_id, status, qr_code, applied_at, used_at, cancelled_at, cancel_reason, created_at, updated_at, code
+    </sql>
+
+</mapper>

+ 22 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/MealTypesMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.MealTypesMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.MealTypes">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="code" property="code" />
+        <result column="start_time" property="startTime" />
+        <result column="end_time" property="endTime" />
+        <result column="is_active" property="isActive" />
+        <result column="create_at" property="createAt" />
+        <result column="update_at" property="updateAt" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, name, code, start_time, end_time, is_active, create_at, update_at
+    </sql>
+
+</mapper>

BIN
fhKeeper/formulahousekeeper/management-workshop/workshop_print.2025-11-11.log.gz


+ 20 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/weeklyCustomization.vue

@@ -4,6 +4,7 @@
             <el-button @click="getCurrentWeek(-7)" size="small">&lt;&lt;</el-button>
             <el-button @click="getCurrentWeek(0)" size="small">{{ $t('time.thisWeek') }}</el-button>
             <el-button @click="getCurrentWeek(7)" size="small">&gt;&gt;</el-button>
+            <el-button @click="refreshCardTime()" size="small" style="margin-left:20px;" v-if="user.roleName == '超级管理员'" :loading="isRefreshing">刷新考勤</el-button>
         </div>
         <div class="weekcen flexColumn" v-loading="submitLoading">
             <div class="flexColumnAuto flex1">
@@ -12,6 +13,7 @@
                         <template slot-scope="scope">
                             <span>{{ scope.row.dateTime }}</span>
                             (<span>{{ scope.row.weekDayTxt }}</span>)
+                            <span v-if="scope.row.time && scope.row.time.askLeaveTime > 0" style="color:green;">请假{{scope.row.time.askLeaveTime}}h</span>
                         </template>
                     </el-table-column>
                     <el-table-column :label="$t('other.project')" width="220">
@@ -130,6 +132,7 @@ export default {
     },
     data() {
         return {
+            isRefreshing: false,
             serverFileList:[],
             upLoading: false,
             fileList:[],
@@ -152,6 +155,20 @@ export default {
         this.getProjectList()
     },
     methods: {
+        async refreshCardTime() {
+            this.isRefreshing = true;
+            var dateArray = this.weekTableData.map(item=>item.dateTime);
+            console.log(dateArray);
+            let { data } = await this.getData('/user-corpwx-time/refreshWeeklyCardTime',  {dateArray: JSON.stringify(dateArray)})
+            this.isRefreshing = false;
+            for (var i=0;i<this.weekTableData.length; i++) {
+                for (var j=0;j<data.length; j++) {
+                    if (data[j].createDate == this.weekTableData[i].dateTime) {
+                        this.weekTableData[i].time = data[j]
+                    }
+                }
+            }
+        },
         handleRemove(file, fileList) {
             console.log(file, fileList);
             console.log('删除的文件名=='+file.name);
@@ -413,10 +430,10 @@ export default {
             console.log(data, '<===== 处理之后的')
             const { dateList, projectList, sumTimeList, cardTimeList } = data;
             const weekTableData = dateList.flatMap(date => {
-                const { weekDayTxt, date: dateTime, reportList, canFill } = date;
-                const reports = reportList.map(report => ({ ...report, weekDayTxt, dateTime, canFill,projectName:projectList.filter(p=>p.id == report.projectId)[0].projectName }));
+                const { weekDayTxt, date: dateTime, reportList, canFill, time } = date;
+                const reports = reportList.map(report => ({ ...report, weekDayTxt, dateTime,time, canFill,projectName:projectList.filter(p=>p.id == report.projectId)[0].projectName }));
 
-                return reports.length > 0 ? reports : [{ weekDayTxt, dateTime, canFill }];
+                return reports.length > 0 ? reports : [{ weekDayTxt, dateTime,time, canFill }];
             });
             let sumSet = new Set();
             weekTableData.forEach(obj => {