Browse Source

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper into master

seyason 9 months ago
parent
commit
96287fd7dd
26 changed files with 633 additions and 73 deletions
  1. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/DeviceController.java
  2. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/DeviceCostController.java
  3. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/DeviceLogController.java
  4. 4 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java
  5. 22 8
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  6. 100 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Device.java
  7. 57 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/DeviceCost.java
  8. 87 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/DeviceLog.java
  9. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/DeviceCostMapper.java
  10. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/DeviceLogMapper.java
  11. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/DeviceMapper.java
  12. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/DeviceCostService.java
  13. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/DeviceLogService.java
  14. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/DeviceService.java
  15. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java
  16. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DeviceCostServiceImpl.java
  17. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DeviceLogServiceImpl.java
  18. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DeviceServiceImpl.java
  19. 11 5
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  20. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  21. 18 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/DeviceCostMapper.xml
  22. 22 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/DeviceLogMapper.xml
  23. 27 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/DeviceMapper.xml
  24. 50 14
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue
  25. 12 38
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue
  26. 1 1
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/login/index.vue

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/DeviceController.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 2024-10-08
+ */
+@RestController
+@RequestMapping("/device")
+public class DeviceController {
+
+}
+

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/DeviceCostController.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 2024-10-08
+ */
+@RestController
+@RequestMapping("/device-cost")
+public class DeviceCostController {
+
+}
+

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/DeviceLogController.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 2024-10-08
+ */
+@RestController
+@RequestMapping("/device-log")
+public class DeviceLogController {
+
+}
+

+ 4 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -99,8 +99,8 @@ public class ProjectController {
      * 获取项目列表
      * 获取项目列表
      */
      */
     @RequestMapping("/getProjectList")
     @RequestMapping("/getProjectList")
-    public HttpRespMsg getProjectList(@RequestParam(required = false, defaultValue = "0") Integer forReport) {
-        return projectService.getProjectList(forReport, request);
+    public HttpRespMsg getProjectList(@RequestParam(required = false, defaultValue = "0") Integer forReport, String userId) {
+        return projectService.getProjectList(forReport, userId, request);
     }
     }
 
 
     /**
     /**
@@ -1276,8 +1276,8 @@ public class ProjectController {
      * @return
      * @return
      */
      */
     @RequestMapping("/nearProject")
     @RequestMapping("/nearProject")
-    public HttpRespMsg nearProject(HttpServletRequest request){
-        return projectService.nearProject(request);
+    public HttpRespMsg nearProject(HttpServletRequest request, String userId){
+        return projectService.nearProject(request, userId);
     }
     }
 
 
     //FTE报表
     //FTE报表

+ 22 - 8
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -922,12 +922,21 @@ public class ReportController {
                     }
                     }
 
 
                     List<LocalDate> workDaysListInRange = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, comTimeType.getIncludeWeekends());
                     List<LocalDate> workDaysListInRange = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, comTimeType.getIncludeWeekends());
-                    if (workDaysListInRange.size() == 0) {
-                        HttpRespMsg msg = new HttpRespMsg();
-                        //msg.setError("工作日天数为0,无法提交。(批量填报会自动跳过节假日,请尝试填写日报或者重新选择日期范围)");
-                        msg.setError(MessageUtils.message("profession.SubmitErrorByDay"));
-                        return msg;
+                    if (targetUids==null || targetUids.length == 0) {
+                        if (workDaysListInRange.size() == 0) {//批量填报要按照工作日来计算
+                            HttpRespMsg msg = new HttpRespMsg();
+                            //msg.setError("工作日天数为0,无法提交。(批量填报会自动跳过节假日,请尝试填写日报或者重新选择日期范围)");
+                            msg.setError(MessageUtils.message("profession.SubmitErrorByDay"));
+                            return msg;
+                        }
+                    } else {
+                        //代填的情况,如果是指定日期,直接使用该日期
+                        if (startDate.equals(endDate)) {
+                            workDaysListInRange = new ArrayList<>();
+                            workDaysListInRange.add(LocalDate.parse(startDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+                        }
                     }
                     }
+
                     //获取当前填报人所在部门的自定义审核流程
                     //获取当前填报人所在部门的自定义审核流程
                     for (LocalDate localStartDate : workDaysListInRange) {
                     for (LocalDate localStartDate : workDaysListInRange) {
                         if (targetUserList == null) {
                         if (targetUserList == null) {
@@ -1785,9 +1794,9 @@ public class ReportController {
         }
         }
 
 
 
 
-        if (createDate[0].contains("@") && targetUserList == null) {
+        if (createDate[0].contains("@")) {
             //个人批量填报,判断是否需要考勤校验
             //个人批量填报,判断是否需要考勤校验
-            if (comTimeType.getSyncCorpwxTime() == 1) {
+            if (comTimeType.getSyncCorpwxTime() == 1 && targetUids == null) {
                 String[] dateArr = createDate[0].split("@");
                 String[] dateArr = createDate[0].split("@");
                 List<UserCorpwxTime> cardTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("corpwx_userid", user.getCorpwxUserid()).between("create_date", dateArr[0], dateArr[1]));
                 List<UserCorpwxTime> cardTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("corpwx_userid", user.getCorpwxUserid()).between("create_date", dateArr[0], dateArr[1]));
                 if (company.getId() == 3918 || company.getId() == 4281) {
                 if (company.getId() == 3918 || company.getId() == 4281) {
@@ -2431,7 +2440,12 @@ public class ReportController {
                             }
                             }
                         }
                         }
                     }
                     }
-                    msg.data = WorkDayCalculateUtils.getWorkDaysCountInRange(startDate, endDate, timeType.getIncludeWeekends());
+                    if (startDate.equals(endDate)) {
+                        //指定某一天,就不用计算是否是非工作日了
+                        msg.data = 1;
+                    } else {
+                        msg.data = WorkDayCalculateUtils.getWorkDaysCountInRange(startDate, endDate, timeType.getIncludeWeekends());
+                    }
                 }
                 }
             }
             }
         }
         }

+ 100 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Device.java

@@ -0,0 +1,100 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+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>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-10-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class Device extends Model<Device> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键
+     */
+    @TableId("id")
+    private Integer id;
+
+    /**
+     * 设备编号
+     */
+    @TableField("device_code")
+    private String deviceCode;
+
+    /**
+     * 设备名称
+     */
+    @TableField("device_name")
+    private String deviceName;
+
+    /**
+     * 设备型号
+     */
+    @TableField("device_model")
+    private String deviceModel;
+
+    /**
+     * 制造商
+     */
+    @TableField("manufacturer")
+    private String manufacturer;
+
+    /**
+     * 购置日期
+     */
+    @TableField("purchase_date")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate purchaseDate;
+
+    /**
+     * 维保日期
+     */
+    @TableField(" maintenance_date")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate maintenanceDate;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 使用状态 0 未使用 ,1 使用中
+     */
+    @TableField("usage_status")
+    private Boolean usageStatus;
+
+    /**
+     * 使用人id
+     */
+    @TableField("usage_user_id")
+    private String usageUserId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 57 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/DeviceCost.java

@@ -0,0 +1,57 @@
+package com.management.platform.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+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 2024-10-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class DeviceCost extends Model<DeviceCost> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键id
+     */
+    @TableId("id")
+    private Integer id;
+
+    /**
+     * 设备id
+     */
+    @TableField("device_id")
+    private Integer deviceId;
+
+    /**
+     * 月成本
+     */
+    @TableField("month_cost")
+    private BigDecimal monthCost;
+
+    /**
+     * 年月
+     */
+    @TableField("ymonth")
+    private String ymonth;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 87 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/DeviceLog.java

@@ -0,0 +1,87 @@
+package com.management.platform.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+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>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-10-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class DeviceLog extends Model<DeviceLog> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键
+     */
+    @TableId("id")
+    private Integer id;
+
+    /**
+     * 设备id
+     */
+    @TableField("device_id")
+    private Integer deviceId;
+
+    /**
+     * 项目id
+     */
+    @TableField("project_id")
+    private Integer projectId;
+
+    /**
+     * 开始使用时间
+     */
+    @TableField("start_time")
+    private String startTime;
+
+    /**
+     * 结束使用时间
+     */
+    @TableField("end_time")
+    private String endTime;
+
+    /**
+     * 使用日期
+     */
+    @TableField("create_date")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate createDate;
+
+    /**
+     * 使用者id
+     */
+    @TableField("usage_user_id")
+    private String usageUserId;
+
+    /**
+     * 使用成本
+     */
+    @TableField("usage_cost")
+    private BigDecimal usageCost;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

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

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

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

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

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

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

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

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

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

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

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

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

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

@@ -22,7 +22,7 @@ import java.time.LocalDate;
  * @since 2020-01-03
  * @since 2020-01-03
  */
  */
 public interface ProjectService extends IService<Project> {
 public interface ProjectService extends IService<Project> {
-    HttpRespMsg getProjectList(Integer forReport, HttpServletRequest request);
+    HttpRespMsg getProjectList(Integer forReport, String userId, HttpServletRequest request);
 
 
     HttpRespMsg getProjectPage(Integer pageIndex, Integer pageSize, String keyword, Integer searchField,
     HttpRespMsg getProjectPage(Integer pageIndex, Integer pageSize, String keyword, Integer searchField,
                                Integer status, Integer category, Integer projectId,Integer projectMainId,Integer deptId, String sortProp, Integer sortOrder,String inchagerId,String participation,String startDate,String endDate, HttpServletRequest request);
                                Integer status, Integer category, Integer projectId,Integer projectMainId,Integer deptId, String sortProp, Integer sortOrder,String inchagerId,String participation,String startDate,String endDate, HttpServletRequest request);
@@ -246,7 +246,7 @@ public interface ProjectService extends IService<Project> {
 
 
     HttpRespMsg timeCostAndExpenseByProject(HttpServletRequest request, String startDate, String endDate, Integer projectId);
     HttpRespMsg timeCostAndExpenseByProject(HttpServletRequest request, String startDate, String endDate, Integer projectId);
 
 
-    HttpRespMsg nearProject(HttpServletRequest request);
+    HttpRespMsg nearProject(HttpServletRequest request, String userId);
 
 
     HttpRespMsg getFTEData(Integer pageIndex, Integer pageSize,String monthStart,String monthEnd, String area,String userId,String sortProp, Integer sortOrder,Integer departmentId,HttpServletRequest request);
     HttpRespMsg getFTEData(Integer pageIndex, Integer pageSize,String monthStart,String monthEnd, String area,String userId,String sortProp, Integer sortOrder,Integer departmentId,HttpServletRequest request);
 
 

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

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.DeviceCost;
+import com.management.platform.mapper.DeviceCostMapper;
+import com.management.platform.service.DeviceCostService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-10-08
+ */
+@Service
+public class DeviceCostServiceImpl extends ServiceImpl<DeviceCostMapper, DeviceCost> implements DeviceCostService {
+
+}

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

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.DeviceLog;
+import com.management.platform.mapper.DeviceLogMapper;
+import com.management.platform.service.DeviceLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-10-08
+ */
+@Service
+public class DeviceLogServiceImpl extends ServiceImpl<DeviceLogMapper, DeviceLog> implements DeviceLogService {
+
+}

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

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.Device;
+import com.management.platform.mapper.DeviceMapper;
+import com.management.platform.service.DeviceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-10-08
+ */
+@Service
+public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> implements DeviceService {
+
+}

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

@@ -682,10 +682,14 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
 
     //获取项目列表
     //获取项目列表
     @Override
     @Override
-    public HttpRespMsg getProjectList(Integer forReport, HttpServletRequest request) {
+    public HttpRespMsg getProjectList(Integer forReport, String userId, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
         try {
-            User user = userMapper.selectById(request.getHeader("Token"));
+            System.out.println("userId===="+userId);
+            if (userId == null) {
+                userId = request.getHeader("Token");
+            }
+            User user = userMapper.selectById(userId);
             if (forReport == 1) {
             if (forReport == 1) {
                 if (!sysFunctionService.hasPriviledge(user.getRoleId(), "可填报全部项目")) {
                 if (!sysFunctionService.hasPriviledge(user.getRoleId(), "可填报全部项目")) {
                     //只能看本人参与的项目
                     //只能看本人参与的项目
@@ -12592,10 +12596,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
      * @return
      * @return
      */
      */
     @Override
     @Override
-    public HttpRespMsg nearProject(HttpServletRequest request) {
+    public HttpRespMsg nearProject(HttpServletRequest request, String userId) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         HttpRespMsg httpRespMsg = new HttpRespMsg();
-        User user = userMapper.selectById(request.getHeader("token"));
-        List<Project> projects = projectMapper.selectNearProject(user.getId());
+        if (userId == null) {
+            userId = request.getHeader("token");
+        }
+        List<Project> projects = projectMapper.selectNearProject(userId);
         httpRespMsg.data = projects;
         httpRespMsg.data = projects;
         return httpRespMsg;
         return httpRespMsg;
     }
     }

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

@@ -4744,7 +4744,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         for (UserMonthWork userMonthWork : userMonthWorks) {
         for (UserMonthWork userMonthWork : userMonthWorks) {
             List<Map<String, Object>> worktimeList = userMonthWork.worktimeList;
             List<Map<String, Object>> worktimeList = userMonthWork.worktimeList;
             //获取到该员工请假的数据
             //获取到该员工请假的数据
-            List<UserCorpwxTime> curUserCorpTime = userCorpwxTimeList.stream().filter(s->s.getCorpwxUserid().equals(userMonthWork.corpwxUserId)).collect(Collectors.toList());
+            List<UserCorpwxTime> curUserCorpTime = userCorpwxTimeList.stream().filter(s->s.getCorpwxUserid() != null && s.getCorpwxUserid().equals(userMonthWork.corpwxUserId)).collect(Collectors.toList());
 //            for (Map<String, Object> corpWx : userCorpwxTimeMapList) {
 //            for (Map<String, Object> corpWx : userCorpwxTimeMapList) {
 //                if (((String)corpWx.get("corpwx_userid")).equals(userMonthWork.corpwxUserId)) {
 //                if (((String)corpWx.get("corpwx_userid")).equals(userMonthWork.corpwxUserId)) {
 //                    curUserCorpTime.add(corpWx);
 //                    curUserCorpTime.add(corpWx);

+ 18 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/DeviceCostMapper.xml

@@ -0,0 +1,18 @@
+<?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.DeviceCostMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.DeviceCost">
+        <id column="id" property="id" />
+        <result column="device_id" property="deviceId" />
+        <result column="month_cost" property="monthCost" />
+        <result column="ymonth" property="ymonth" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, device_id, month_cost, ymonth
+    </sql>
+
+</mapper>

+ 22 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/DeviceLogMapper.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.DeviceLogMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.DeviceLog">
+        <id column="id" property="id" />
+        <result column="device_id" property="deviceId" />
+        <result column="project_id" property="projectId" />
+        <result column="start_time" property="startTime" />
+        <result column="end_time" property="endTime" />
+        <result column="create_date" property="createDate" />
+        <result column="usage_user_id" property="usageUserId" />
+        <result column="usage_cost" property="usageCost" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, device_id, project_id, start_time, end_time, create_date, usage_user_id, usage_cost
+    </sql>
+
+</mapper>

+ 27 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/DeviceMapper.xml

@@ -0,0 +1,27 @@
+<?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.DeviceMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.Device">
+        <id column="id" property="id" />
+        <result column="device_code" property="deviceCode" />
+        <result column="device_name" property="deviceName" />
+        <result column="device_model" property="deviceModel" />
+        <result column="manufacturer" property="manufacturer" />
+        <result column="purchase_date" property="purchaseDate" />
+        <result column="
+maintenance_date" property="
+maintenanceDate" />
+        <result column="company_id" property="companyId" />
+        <result column="usage_status" property="usageStatus" />
+        <result column="usage_user_id" property="usageUserId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, device_code, device_name, device_model, manufacturer, purchase_date, 
+maintenance_date, company_id, usage_status, usage_user_id
+    </sql>
+
+</mapper>

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

@@ -2228,6 +2228,7 @@
         },
         },
         data() {
         data() {
             return {
             return {
+                subFillProjectList:[],
                 curAuditNode: 1,
                 curAuditNode: 1,
                 refreshingTime: false,
                 refreshingTime: false,
                 substitudeStep: 1,
                 substitudeStep: 1,
@@ -2991,19 +2992,20 @@
                     );
                     );
                 }).catch(() => {this.startDeleting = false});
                 }).catch(() => {this.startDeleting = false});
             },
             },
-            getRecentlyProject() {
-                this.http.post('/project/nearProject',{},res => {
+            getRecentlyProject(userId) {
+                this.http.post('/project/nearProject',{userId: userId},res => {
                     if(res.code == 'ok'){
                     if(res.code == 'ok'){
+                        var bottomList = userId == null?this.fillProjectList:this.subFillProjectList;
                         let topObj = {
                         let topObj = {
                             label: this.$t('zuiJinXuanZeXiangMu'),
                             label: this.$t('zuiJinXuanZeXiangMu'),
                             peojectList: res.data 
                             peojectList: res.data 
                         }
                         }
                         let botomObj = {
                         let botomObj = {
                             label: this.$t('other.allProject'),
                             label: this.$t('other.allProject'),
-                            peojectList: this.fillProjectList
+                            peojectList: bottomList
                         }
                         }
                         //最近项目如果在fillProjectList中不存在,需要移除
                         //最近项目如果在fillProjectList中不存在,需要移除
-                        topObj.peojectList = topObj.peojectList.filter(top=>this.fillProjectList.find(fp=>fp.id==top.id) != null);
+                        topObj.peojectList = topObj.peojectList.filter(top=>bottomList.find(fp=>fp.id==top.id) != null);
                         this.integrationProjectList = [topObj, botomObj]
                         this.integrationProjectList = [topObj, botomObj]
                     }else {
                     }else {
                         this.$message({
                         this.$message({
@@ -4519,15 +4521,13 @@
             chooseParticip() {
             chooseParticip() {
                 var chosenList = this.$refs.chooseMembTree.getCheckedNodes();
                 var chosenList = this.$refs.chooseMembTree.getCheckedNodes();
                 this.chosenMembList = chosenList.filter(item=>item.isUser == 1);
                 this.chosenMembList = chosenList.filter(item=>item.isUser == 1);
-                //针对专业版,只能选择一个人进行代填,防止任务有问题
-                if (this.user.company.packageProject == 1) {
-                    if (this.chosenMembList.length > 1) {
-                        this.$message({
-                            message: this.$t('meiCiJinZhiChiDaiTianYiGeRen'),
-                            type: "error",
-                        });
-                        return;
-                    }
+                //只能选择一个人进行代填,防止任务有问题
+                if (this.chosenMembList.length > 1) {
+                    this.$message({
+                        message: this.$t('meiCiJinZhiChiDaiTianYiGeRen'),
+                        type: "error",
+                    });
+                    return;
                 }
                 }
                 this.chooseParticipVisible = false;
                 this.chooseParticipVisible = false;
                 this.workForm.userNames = '';
                 this.workForm.userNames = '';
@@ -4548,7 +4548,10 @@
                         this.workForm.userNames = this.workForm.userNames.split(',')
                         this.workForm.userNames = this.workForm.userNames.split(',')
                     }
                     }
                 }
                 }
-                
+                //加载该人员的可填报项目
+                if (this.workForm.userId.length > 0) {
+                    this.getSubUsersFillProjectList(this.workForm.userId[0]);
+                }
             },
             },
 
 
             notifySel(sel){
             notifySel(sel){
@@ -6077,6 +6080,33 @@
                     });
                     });
                 });
                 });
             },
             },
+            getSubUsersFillProjectList(userId) {
+                this.http.post( this.port.project.list, {
+                    forReport: 1,
+                    userId: userId
+                },res => {
+                    if (res.code == "ok") {
+                        for(var i in res.data) {
+                            if(res.data[i].projectCode == null || res.data[i].projectCode == 'null') {
+                                res.data[i].projectCode = ''
+                            }
+                        }
+                        this.subFillProjectList = res.data;
+                        this.getRecentlyProject(userId) 
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: "error"
+                        });
+                    }
+                },
+                error => {
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                });
+            },
             // 获取填报日报的项目下拉列表
             // 获取填报日报的项目下拉列表
             getFillProjectList() {
             getFillProjectList() {
                 this.http.post( this.port.project.list, {
                 this.http.post( this.port.project.list, {
@@ -6104,6 +6134,10 @@
                     });
                     });
                 });
                 });
             },
             },
+            //自己填写日报时,刷新到自己的可填报日报列表
+            refreshToMyReportProjectList() {
+                this.getRecentlyProject();
+            },
             getBasecostItemList() {
             getBasecostItemList() {
                 this.http.post('/project-basecost-setting/getReportBasecostList', {
                 this.http.post('/project-basecost-setting/getReportBasecostList', {
                     companyId: this.user.companyId
                     companyId: this.user.companyId
@@ -6396,6 +6430,8 @@
                 }
                 }
                 if (this.isSubstitude) {
                 if (this.isSubstitude) {
                     this.getSubstitudeUserDeptList();
                     this.getSubstitudeUserDeptList();
+                } else {
+                    this.refreshToMyReportProjectList();
                 }
                 }
                 if(i == -1 || this.isSubstitude) {
                 if(i == -1 || this.isSubstitude) {
                     this.isDisable = false;
                     this.isDisable = false;

+ 12 - 38
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -20,7 +20,7 @@
                     </van-field>
                     </van-field>
                     <template #right-icon>
                     <template #right-icon>
                         <!--先开放几家,试一下-->
                         <!--先开放几家,试一下-->
-                        <span style="color:#20a0ff;" @click="getAIReport()" v-if="!hasWrittenReport && (user.companyId==10||user.companyId==7||user.companyId==7030)">智能填报</span>
+                        <span style="color:#20a0ff;" @click="getAIReport()" v-if="!substitute && !hasWrittenReport && (user.companyId==10||user.companyId==7||user.companyId==7030)">智能填报</span>
                     </template>
                     </template>
                 </van-cell>
                 </van-cell>
                 
                 
@@ -806,8 +806,8 @@ export default {
                 }).catch(err => { })
                 }).catch(err => { })
         },
         },
 
 
-        getRecentlyProject() {
-            this.$axios.post('/project/nearProject', {})
+        getRecentlyProject(userId) {
+            this.$axios.post('/project/nearProject', {userId: userId})
                 .then(res => {
                 .then(res => {
                     if (res.code == 'ok') {
                     if (res.code == 'ok') {
                         this.integrationProjectList = res.data;
                         this.integrationProjectList = res.data;
@@ -901,12 +901,12 @@ export default {
             if(!this.substitute) {
             if(!this.substitute) {
                 this.form.domains[this.auditor.index][this.auditor.auditorIndex] = this.auditor.item
                 this.form.domains[this.auditor.index][this.auditor.auditorIndex] = this.auditor.item
             }
             }
+            this.auditorShow = false
             if(this.substitute) {
             if(this.substitute) {
                 const { id, name } = this.auditor.item
                 const { id, name } = this.auditor.item
                 this.fillingAgent = { id, name }
                 this.fillingAgent = { id, name }
+                this.getProject(this.fillingAgent.id);
             }
             }
-            this.auditorShow = false
-            console.log('searchAuditor');
         },
         },
         getAllUsersList() {
         getAllUsersList() {
             this.$axios.post('/user/getSimpleActiveUserList', {})
             this.$axios.post('/user/getSimpleActiveUserList', {})
@@ -958,8 +958,8 @@ export default {
             this.$forceUpdate();
             this.$forceUpdate();
         },
         },
         // 获取项目
         // 获取项目
-        getPeoject() {
-            this.$axios.post("/project/getProjectList", { forReport: 1 })
+        getProject(userId) {
+            this.$axios.post("/project/getProjectList", { forReport: 1, userId: userId})
                 .then(res => {
                 .then(res => {
                     if (res.code == "ok") {
                     if (res.code == "ok") {
                         for (var i in res.data) {
                         for (var i in res.data) {
@@ -971,7 +971,7 @@ export default {
                         this.project = res.data;
                         this.project = res.data;
                         this.projectss = this.projectss.filter(p => p.status == 1 || p.status == 4);
                         this.projectss = this.projectss.filter(p => p.status == 1 || p.status == 4);
                         this.proads = res.data
                         this.proads = res.data
-                        this.getRecentlyProject()
+                        this.getRecentlyProject(userId)
                     } else {
                     } else {
                         this.$toast.fail('获取失败:' + res.msg);
                         this.$toast.fail('获取失败:' + res.msg);
                     }
                     }
@@ -1485,29 +1485,6 @@ export default {
             for (var i = 0; i < len; i++) { s = '0' + s; }
             for (var i = 0; i < len; i++) { s = '0' + s; }
             return s;
             return s;
         },
         },
-
-        // 获取项目
-        getProject() {
-            const toast = this.$toast.loading({
-                forbidClick: true,
-                duration: 0
-            });
-            this.$axios.post("/project/getProjectList", {})
-                .then(res => {
-                    if (res.code == "ok") {
-                        this.$toast.clear();
-
-
-                        // if (this.project.length > 0) {
-                        //     console.log('this.project[0].id=='+this.project[0].id);
-                        //     this.getTaskList(this.project[0].id);
-                        // }
-                    } else {
-                        this.$toast.clear();
-                        this.$toast.fail('获取失败:' + res.msg);
-                    }
-                }).catch(err => { this.$toast.clear(); });
-        },
         getAIReport(createDate) {
         getAIReport(createDate) {
             const toast = this.$toast.loading({
             const toast = this.$toast.loading({
                 forbidClick: true,
                 forbidClick: true,
@@ -2306,8 +2283,6 @@ export default {
                 }
                 }
             }
             }
             this.dateAr = alp
             this.dateAr = alp
-            console.log(this.reportTimeType, this.dateAr, '<=== this.reportTimeType')
-
             const { timeCanOverlap } = this.reportTimeType // timeCanOverlap 为零时校验不允许重叠
             const { timeCanOverlap } = this.reportTimeType // timeCanOverlap 为零时校验不允许重叠
             if (this.dateAr.length > 0 && timeCanOverlap == 0) {
             if (this.dateAr.length > 0 && timeCanOverlap == 0) {
                 let trus = this.fns()
                 let trus = this.fns()
@@ -2397,7 +2372,8 @@ export default {
                     return;
                     return;
                 }
                 }
             }
             }
-            if (this.user.timeType.notAllowedNoAttendance == 1 && this.isDraft == 0) {
+            //非代填情况下要校验考勤
+            if (!this.substitute && this.user.timeType.notAllowedNoAttendance == 1 && this.isDraft == 0) {
                 if (this.report.time) {
                 if (this.report.time) {
                     if (this.report.time.workHours == 0) {
                     if (this.report.time.workHours == 0) {
                         this.$toast.fail('无考勤记录不可填报')
                         this.$toast.fail('无考勤记录不可填报')
@@ -2409,7 +2385,7 @@ export default {
                 }
                 }
             }
             }
             //针对凡己,不校验考勤时长
             //针对凡己,不校验考勤时长
-            if (this.user.companyId != 3918 && this.user.companyId != 5978 && this.user.companyId != 4281 && this.reportTimeType.type == 1 && this.report.time) {
+            if (!this.substitute && this.user.companyId != 3918 && this.user.companyId != 5978 && this.user.companyId != 4281 && this.reportTimeType.type == 1 && this.report.time) {
                 var totalTime = 0;
                 var totalTime = 0;
                 for (var t = 0; t < this.form.domains.length; t++) {
                 for (var t = 0; t < this.form.domains.length; t++) {
                     totalTime += parseFloat(this.form.domains[t].workingTime);
                     totalTime += parseFloat(this.form.domains[t].workingTime);
@@ -2797,8 +2773,7 @@ export default {
         } else if (ua.indexOf("micromessenger") > 0) {
         } else if (ua.indexOf("micromessenger") > 0) {
             this.isWX = true;
             this.isWX = true;
         }
         }
-        this.getPeoject() // 获取项目
-        // console.log('mounted');
+        this.getProject() //获取项目
         this.getReportBasecostList()
         this.getReportBasecostList()
         //获取传递过来的日期
         //获取传递过来的日期
         var passDate = this.$route.query.date;
         var passDate = this.$route.query.date;
@@ -2806,7 +2781,6 @@ export default {
             this.form.createDate = this.$route.query.date;
             this.form.createDate = this.$route.query.date;
         }
         }
 
 
-        // this.getProject();
         this.getReport();
         this.getReport();
         this.getAllUsersList()
         this.getAllUsersList()
         this.getTimeType();
         this.getTimeType();

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet_h5/src/views/login/index.vue

@@ -266,7 +266,7 @@
             }
             }
             let href = window.location.href;
             let href = window.location.href;
             //优先处理企业微信工作台点击进入,后台已经处理过,有userId传过来了
             //优先处理企业微信工作台点击进入,后台已经处理过,有userId传过来了
-            if (this.isCorpWX && href.indexOf("userId") > 0) {
+            if (href.indexOf("userId") > 0) {
                 //判断企业微信,是否存在授权
                 //判断企业微信,是否存在授权
                 var loginUserId = href.substring(href.indexOf("userId=")+"userId=".length);
                 var loginUserId = href.substring(href.indexOf("userId=")+"userId=".length);
                 if (loginUserId.includes('#/')) {
                 if (loginUserId.includes('#/')) {