Ver código fonte

工时填报 未填报 信息修改
入职时间添加

yurk 3 anos atrás
pai
commit
38c8e6f552

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserController.java

@@ -129,9 +129,9 @@ public class UserController {
     public HttpRespMsg insertUser(String id, @RequestParam String name, String phone,
                                   @RequestParam Integer roleId, Double monthCost, Double cost,
                                   Integer departmentId, Integer salaryType, String costApplyDate,
-                                    String position, String certJson) {
+                                    String position, String certJson,String inductionDate) {
         return userService.insertUser(id, name, phone, roleId, monthCost, cost, departmentId, salaryType, costApplyDate,
-                    position, certJson, request);
+                    position, certJson, request,inductionDate);
     }
 
     /**

+ 16 - 8
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/User.java

@@ -1,20 +1,20 @@
 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 java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
-import java.util.List;
-
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
 /**
  * <p>
  * 
@@ -178,6 +178,14 @@ public class User extends Model<User> {
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     private LocalDate inactiveDate;
 
+    /**
+     * 入职日期
+     */
+    @TableField("induction_date")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate inductionDate;
+
 
     @TableField(exist = false)
     private double totalHours;

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/UserDailyWorkItem.java

@@ -5,4 +5,5 @@ public class UserDailyWorkItem {
     public String createDate;
     public String department;
     public String name;
+    private String inactiveDate;
 }

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

@@ -30,7 +30,7 @@ public interface UserService extends IService<User> {
 
     HttpRespMsg insertUser(String id, String name, String phone, Integer roleId, Double monthCost, Double cost, Integer departmentId,
                            Integer salaryType, String costApplyDate, String position, String certJson,
-                           HttpServletRequest request);
+                           HttpServletRequest request,String inductionDate);
 
     HttpRespMsg importUser(MultipartFile multipartFile, HttpServletRequest request);
 

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

@@ -2,16 +2,13 @@ package com.management.platform.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.management.platform.controller.WeiXinCorpController;
 import com.management.platform.entity.*;
 import com.management.platform.entity.vo.*;
 import com.management.platform.mapper.*;
 import com.management.platform.service.*;
 import com.management.platform.util.ExcelUtil;
-import com.management.platform.util.FileUtil;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.ListUtil;
 import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
@@ -22,14 +19,7 @@ import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
 import org.apache.commons.io.FileUtils;
 import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.ss.usermodel.*;
-import org.apache.poi.xssf.usermodel.XSSFCell;
-import org.apache.poi.xssf.usermodel.XSSFRow;
-import org.apache.poi.xssf.usermodel.XSSFSheet;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.task.AsyncTaskExecutor;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
@@ -41,11 +31,8 @@ import javax.servlet.http.HttpServletRequest;
 import java.io.*;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.sql.Timestamp;
 import java.text.DecimalFormat;
-import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.DayOfWeek;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -2816,23 +2803,31 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         LocalDate localEnd = LocalDate.parse(endDate, dtf);
         long cnt = localStart.until(localEnd, ChronoUnit.DAYS);
         //按人员过滤
-        for (User curUser: allRangeUserList) {
-            for (int i=0;i<=cnt; i++) {
-                LocalDate date = localStart.plusDays(i);
-                final String dateStr = dtf.format(date);
-                if (!list.stream().anyMatch(item->item.get("id").equals(curUser.getId())&&sdf.format((java.sql.Date)item.get("createDate")).equals(dateStr))) {
-                    UserDailyWorkItem noRecord = new UserDailyWorkItem();
-                    noRecord.userId = curUser.getId();
-                    noRecord.createDate = dtf.format(date);
-                    if (curUser.getDepartmentId() != null && curUser.getDepartmentId() != 0) {
-                        noRecord.department = departmentList.stream().filter(d->d.getDepartmentId().equals(curUser.getDepartmentId())).findFirst().get().getDepartmentName();
-                    } else {
-                        noRecord.department = "无";
+        for (User curUser: allRangeUserList){
+                for (int i=0;i<=cnt; i++) {
+                    LocalDate date = localStart.plusDays(i);
+                    //入职日期以前 不需要添加 跳出
+                    if(curUser.getInductionDate()!=null&&date.isBefore(curUser.getInductionDate())){
+                        continue;
+                    }
+                    //当前日期在离职日期之后 不需要再添加 跳出
+                    if((curUser.getIsActive()==0&&date.isAfter(curUser.getInactiveDate()))) {
+                        continue;
+                    }
+                    final String dateStr = dtf.format(date);
+                    if (!list.stream().anyMatch(item->item.get("id").equals(curUser.getId())&&sdf.format((java.sql.Date)item.get("createDate")).equals(dateStr))) {
+                        UserDailyWorkItem noRecord = new UserDailyWorkItem();
+                        noRecord.userId = curUser.getId();
+                        noRecord.createDate = dtf.format(date);
+                        if (curUser.getDepartmentId() != null && curUser.getDepartmentId() != 0) {
+                            noRecord.department = departmentList.stream().filter(d->d.getDepartmentId().equals(curUser.getDepartmentId())).findFirst().get().getDepartmentName();
+                        } else {
+                            noRecord.department = "无";
+                        }
+                        noRecord.name = curUser.getName();
+                        noReportDataList.add(noRecord);
                     }
-                    noRecord.name = curUser.getName();
-                    noReportDataList.add(noRecord);
                 }
-            }
         }
         //排序
         noReportDataList.sort(new Comparator<UserDailyWorkItem>() {

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

@@ -30,18 +30,15 @@ import org.springframework.http.HttpMethod;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
-import org.springframework.util.NumberUtils;
 import org.springframework.util.StringUtils;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
-import sun.util.calendar.ZoneInfoFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.io.*;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
@@ -562,8 +559,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     //新增或修改用户
     @Override
     public HttpRespMsg insertUser(String targetId, String name, String phone, Integer roleId, Double monthCost, Double cost,
-                                  Integer departmentId, Integer salaryType, String costApplyDate, String position, String certJson, HttpServletRequest request) {
+                                  Integer departmentId, Integer salaryType, String costApplyDate, String position, String certJson, HttpServletRequest request,String inductionDate) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
+        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         try {
             User creator = userMapper.selectById(request.getHeader("Token"));
             //处理时薪
@@ -599,7 +597,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                                 .setDepartmentId(departmentId == null ? 0 : departmentId)
                                 .setDepartmentCascade(departmentId == null ?
                                         convertDepartmentIdToCascade(0) :
-                                        convertDepartmentIdToCascade(departmentId));
+                                        convertDepartmentIdToCascade(departmentId))
+                                .setInductionDate(LocalDate.parse(inductionDate,dtf));
                         if (userMapper.insert(user) == 0) {
                             httpRespMsg.setError("操作失败");
                         } else {
@@ -646,7 +645,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                         .setDepartmentId(departmentId == null ? 0 : departmentId)
                         .setDepartmentCascade(departmentId == null ?
                                 convertDepartmentIdToCascade(0) :
-                                convertDepartmentIdToCascade(departmentId)));
+                                convertDepartmentIdToCascade(departmentId))
+                        .setInductionDate(LocalDate.parse(inductionDate,dtf)));
                 if (salaryChange) {
                     UserSalary userSalary = UserSalary.copyFromUser(oldUser);
                     userSalaryMapper.insert(userSalary);

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -458,12 +458,12 @@
         WHERE create_date BETWEEN #{startDate} AND #{endDate} AND creator_id = #{userId} GROUP BY create_date
     </select>
     <select id="getUserDailyWorkTime" resultType="java.util.Map">
-        SELECT user.id, user.name, department.department_name as departmentName, report.create_date as createDate, sum(working_time) as workingTime
+        SELECT user.id, user.name, department.department_name as departmentName, report.create_date as createDate, sum(working_time) as workingTime,user.inactive_date as inactiveDate
         FROM user
         left join report on user.id = report.creator_id
         left join department on department.department_id = user.department_id
         WHERE (report.state = 0 or report.state = 1)
-        and user.company_id = #{companyId}
+        and user.company_id = #{companyId} and (user.is_active=1 or(user.is_active=0 and user.inactive_date>=#{startDate}))
         <if test="deptIds != null">
             AND user.department_id in <foreach collection="deptIds" separator="," index="index" item="item" close=")" open="(">
             #{item}