Lijy 6 месяцев назад
Родитель
Сommit
694a8025c7

+ 5 - 4
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/TaskController.java

@@ -24,6 +24,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
@@ -180,7 +181,7 @@ public class TaskController {
                         saveInformationListWithCount(task, taskInformation, between, executorIdList);
                     }else if (task.getRepeatEndDate()!=null){
                         TaskInformation taskInformation = selectTaskInformation(task);
-                        if (LocalDateTime.now().isAfter(task.getRepeatEndDate())){
+                        if (LocalDate.now().isAfter(task.getRepeatEndDate())){
                             continue;
                         }
                         int between = (int) ChronoUnit.DAYS.between(LocalDateTime.now(), task.getRepeatEndDate());
@@ -200,7 +201,7 @@ public class TaskController {
                             saveInformationListWithCount(task, taskInformation, between, executorIdList);
                         }else if (task.getRepeatEndDate()!=null){
                             TaskInformation taskInformation = selectTaskInformation(task);
-                            if (LocalDateTime.now().isAfter(task.getRepeatEndDate())){
+                            if (LocalDate.now().isAfter(task.getRepeatEndDate())){
                                 continue;
                             }
                             int between = (int) ChronoUnit.DAYS.between(LocalDateTime.now(), task.getRepeatEndDate());
@@ -224,7 +225,7 @@ public class TaskController {
                             saveInformationListWithCount(task, taskInformation, between, executorIdList);
                         }else if (task.getRepeatEndDate()!=null){
                             TaskInformation taskInformation = selectTaskInformation(task);
-                            if (LocalDateTime.now().isAfter(task.getRepeatEndDate())){
+                            if (LocalDate.now().isAfter(task.getRepeatEndDate())){
                                 continue;
                             }
                             int between = (int) ChronoUnit.DAYS.between(LocalDateTime.now(), task.getRepeatEndDate());
@@ -249,7 +250,7 @@ public class TaskController {
                             saveInformationListWithCount(task, taskInformation, between, executorIdList);
                         }else if (task.getRepeatEndDate()!=null){
                             TaskInformation taskInformation = selectTaskInformation(task);
-                            if (LocalDateTime.now().isAfter(task.getRepeatEndDate())){
+                            if (LocalDate.now().isAfter(task.getRepeatEndDate())){
                                 continue;
                             }
                             int between = (int) ChronoUnit.DAYS.between(LocalDateTime.now(), task.getRepeatEndDate());

+ 6 - 6
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/Task.java

@@ -135,10 +135,10 @@ public class Task extends Model<Task> {
     /**
      * 重复结束 在  ? 日期YYYY-MM-DD之后
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     @TableField("repeat_end_date")
-    private LocalDateTime repeatEndDate;
+    private LocalDate repeatEndDate;
 
     /**
      * 自定义日期: 每 ? 天一次,保存为 x1,x2,x3,x4
@@ -197,10 +197,10 @@ public class Task extends Model<Task> {
     /**
      * 完成日期
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     @TableField("finish_date")
-    private LocalDateTime finishDate;
+    private LocalDate finishDate;
 
 
     /**

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

@@ -114,7 +114,7 @@ public class UserCorpwxTimeController {
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
         List<Map> list = new ArrayList<Map>();
-        int onlyWorkDays = 1;//只要工作日
+//        int onlyWorkDays = 0;//只要工作日
         List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部企微考勤");
         if (functionList.size() > 0) {
             //查看全部人员的
@@ -135,17 +135,17 @@ public class UserCorpwxTimeController {
         }
 
         //工作日处理,排除常规周末和法定节假日
-        if (onlyWorkDays == 1) {
-            DateTimeFormatter dtf =  DateTimeFormatter.ofPattern("yyyy/MM/dd");
-            list = list.stream().filter(time->{
-                String date = (String)time.get("createDate");
-                if (WorkDayCalculateUtils.isWorkDay(LocalDate.parse(date, dtf))) {
-                    return true;
-                } else {
-                    return false;
-                }
-            }).collect(Collectors.toList());
-        }
+//        if (onlyWorkDays == 1) {
+//            DateTimeFormatter dtf =  DateTimeFormatter.ofPattern("yyyy/MM/dd");
+//            list = list.stream().filter(time->{
+//                String date = (String)time.get("createDate");
+//                if (WorkDayCalculateUtils.isWorkDay(LocalDate.parse(date, dtf))) {
+//                    return true;
+//                } else {
+//                    return false;
+//                }
+//            }).collect(Collectors.toList());
+//        }
         DateTimeFormatter standFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         HashMap item = new HashMap();
         item.put("list", list);
@@ -465,7 +465,7 @@ public class UserCorpwxTimeController {
         CompanyDingding dingding = companyDingdingMapper.selectOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
         Integer manageDeptId = user.getManageDeptId();
 
-        List<Map> list = new ArrayList<Map>();
+        List<Map> list;
         List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部企微考勤");
         //只取当月中工作日的数据
         DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");

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

@@ -5207,9 +5207,19 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     Optional<User> any;
                     if((wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1)||(dingding!=null&&dingding.getContactNeedTranslate()==1)){
                         Optional<User> optional = targetUserList.stream().filter(tl -> tl.getName().equals(username)).findFirst();
-                        any = allUserList.stream().filter(u -> u.getName().equals(username)||(u.getJobNumber()!=null&&u.getJobNumber().equals(username))||(optional.isPresent()&&((u.getCorpwxUserid()!=null&&u.getCorpwxUserid().equals(optional.get().getCorpwxUserid()))||(u.getDingdingUserid()!=null&&u.getDingdingUserid().equals(optional.get().getCorpwxUserid()))))).findAny();
+                        any = allUserList.stream().filter(u -> u.getName().equals(username)||(u.getJobNumber()!=null&&u.getJobNumber().equals(username))||(optional.isPresent()&&((u.getCorpwxUserid()!=null&&u.getCorpwxUserid().equals(optional.get().getCorpwxUserid()))||(u.getDingdingUserid()!=null&&u.getDingdingUserid().equals(optional.get().getCorpwxUserid()))))).sorted(new Comparator<User>() {
+                            @Override
+                            public int compare(User o1, User o2) {
+                                return o1.getIsActive() > o2.getIsActive() ? -1 : 1;
+                            }
+                        }).findAny();
                     }else {
-                        any = allUserList.stream().filter(u -> u.getName().equals(username)||(u.getJobNumber()!=null&&u.getJobNumber().equals(username))).findAny();
+                        any = allUserList.stream().filter(u -> u.getName().equals(username)||(u.getJobNumber()!=null&&u.getJobNumber().equals(username))).sorted(new Comparator<User>() {
+                            @Override
+                            public int compare(User o1, User o2) {
+                                return o1.getIsActive() > o2.getIsActive() ? -1 : 1;
+                            }
+                        }).findAny();
                     }
                     if (!any.isPresent()) {
                         //msg.setError("人员["+username+"]不存在,请先在组织结构中添加或者通过钉钉同步导入");
@@ -5568,9 +5578,19 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     Optional<User> any;
                     if((wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1)||(dingding!=null&&dingding.getContactNeedTranslate()==1)){
                         Optional<User> optional = targetUserList.stream().filter(tl -> tl.getName().equals(username)).findFirst();
-                        any = allUserList.stream().filter(u -> u.getName().equals(username)||(u.getJobNumber()!=null&&u.getJobNumber().equals(username))||(optional.isPresent()&&((u.getCorpwxUserid()!=null&&u.getCorpwxUserid().equals(optional.get().getCorpwxUserid()))||(u.getDingdingUserid()!=null&&u.getDingdingUserid().equals(optional.get().getCorpwxUserid()))))).findAny();
+                        any = allUserList.stream().filter(u -> u.getName().equals(username)||(u.getJobNumber()!=null&&u.getJobNumber().equals(username))||(optional.isPresent()&&((u.getCorpwxUserid()!=null&&u.getCorpwxUserid().equals(optional.get().getCorpwxUserid()))||(u.getDingdingUserid()!=null&&u.getDingdingUserid().equals(optional.get().getCorpwxUserid()))))).sorted(new Comparator<User>() {
+                            @Override
+                            public int compare(User o1, User o2) {
+                                return o1.getIsActive() > o2.getIsActive() ? -1 : 1;
+                            }
+                        }).findAny();
                     }else {
-                        any = allUserList.stream().filter(u -> u.getName().equals(username)||(u.getJobNumber()!=null&&u.getJobNumber().equals(username))).findAny();
+                        any = allUserList.stream().filter(u -> u.getName().equals(username)||(u.getJobNumber()!=null&&u.getJobNumber().equals(username))).sorted(new Comparator<User>() {
+                            @Override
+                            public int compare(User o1, User o2) {
+                                return o1.getIsActive() > o2.getIsActive() ? -1 : 1;
+                            }
+                        }).findAny();
                     }
                     if (!any.isPresent()) {
                         //msg.setError("人员["+username+"]不存在,请先在组织结构中添加或者通过钉钉同步导入");
@@ -5578,8 +5598,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         return msg;
                     }
                     User reportCreator = any.get();
-
-
                     String pCode = row.getCell(3)==null?null:row.getCell(3).getStringCellValue();
                     String pName = row.getCell(4)==null?null:row.getCell(4).getStringCellValue();
                     Project project = null;

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

@@ -1350,6 +1350,7 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
                     ct.setOutdoorTime(0.0);
                     if (isCrossDay) {
                         //直接用cardTime作为工作时长
+                        ct.setName(name);
                         ct.setWorkHours(DateTimeUtil.getHoursFromDouble(ct.getCardTime()));
                     }
                     //工作日或者非工作日有打卡,需要校正请假,外出的时长数据

+ 3 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserCorpwxTimeMapper.xml

@@ -50,14 +50,14 @@
         user left join department on department.department_id = user.department_id
         LEFT JOIN
         (SELECT a.corpwx_userid,a.name, SUM(a.work_hours) AS workHours FROM user_corpwx_time a, user b WHERE a.company_id = #{companyId}
-        AND (a.`corpwx_userid` = b.`corpwx_userid` OR (a.corpwx_userid IS NULL AND a.name = b.name))
+        AND ((b.`corpwx_userid` is not null and a.`corpwx_userid` = b.`corpwx_userid`) OR (b.corpwx_userid IS NULL AND a.name = b.name))
         AND (a.`create_date` &gt;= b.`induction_date` OR b.`induction_date` IS NULL)
         AND  a.create_date in
         <foreach collection="dateList" item="date" open="(" separator="," close=")">
             #{date}
         </foreach>
-        GROUP BY a.`corpwx_userid`,a.name ) card_time
-        ON user.name = card_time.name
+        GROUP BY a.`corpwx_userid`,IFNULL(a.`corpwx_userid`,a.name)) card_time
+        ON ((user.corpwx_userid is not null and user.corpwx_userid=card_time.corpwx_userid) or (user.corpwx_userid is null and  user.name = card_time.name))
         LEFT JOIN (SELECT r.creator_id, SUM(r.working_time) AS projectTime FROM report r WHERE r.company_id = #{companyId} and r.state &lt;= 1 AND  r.create_date in
         <foreach collection="dateList" item="date" open="(" separator="," close=")">
             #{date}

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

@@ -261,6 +261,7 @@
                     <el-form-item><el-checkbox v-model="dialogData.userWithMultiDept">是否开启人员设置可填报部门</el-checkbox></el-form-item>
                     <el-form-item><el-checkbox v-model="dialogData.importReportAuditNormal">导入的日报正常审批</el-checkbox></el-form-item>
                     <el-form-item><el-checkbox v-model="dialogData.onlyShowPercent">工时报告页面,工时仅显示比例</el-checkbox></el-form-item>
+                    <el-form-item><el-checkbox v-model="dialogData.taskFileCharge">任务文件支持审核</el-checkbox></el-form-item>
                     
                 </el-form>
             </div>
@@ -488,6 +489,7 @@ import App from '../../App.vue';
                             this.$set(this.dialogData,'enableNewWeeklyfill',res.data.enableNewWeeklyfill ? true : false)
                             this.$set(this.dialogData,'hideSubproject',res.data.hideSubproject ? true : false)
                             this.$set(this.dialogData,'userWithMultiDept',res.data.userWithMultiDept ? true : false)
+                            this.$set(this.dialogData,'taskFileCharge',res.data.taskFileCharge ? true : false)
                         }else{
                             this.$message({
                                 message: res.msg,
@@ -832,6 +834,7 @@ import App from '../../App.vue';
                     enableNewWeeklyfill: this.dialogData.enableNewWeeklyfill ? 1 : 0,
                     hideSubproject:this.dialogData.hideSubproject ? 1: 0, 
                     userWithMultiDept:this.dialogData.userWithMultiDept ? 1: 0, 
+                    taskFileCharge:this.dialogData.taskFileCharge ? 1: 0, 
                 },res => {
                     if(res.code == 'ok'){
                         this.editDialogG = false

+ 13 - 1
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/TimeType.java

@@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2024-09-28
+ * @since 2025-01-02
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -612,6 +612,18 @@ public class TimeType extends Model<TimeType> {
     @TableField("verify_card_overtime")
     private Integer verifyCardOvertime;
 
+    /**
+     * 驳回日报原因是否必填
+     */
+    @TableField("force_reject_reason")
+    private Integer forceRejectReason;
+
+    /**
+     * 任务文件审核 0不启用 1启用
+     */
+    @TableField("task_file_charge")
+    private Integer taskFileCharge;
+
 
     @Override
     protected Serializable pkVal() {

Разница между файлами не показана из-за своего большого размера
+ 3 - 1
fhKeeper/formulahousekeeper/ops-platform/src/main/resources/mapper/TimeTypeMapper.xml