Lijy 5 ماه پیش
والد
کامیت
e9219bf77c
29فایلهای تغییر یافته به همراه565 افزوده شده و 107 حذف شده
  1. 11 5
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/ContactsController.java
  2. 6 12
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/UserCommonModuleController.java
  3. 27 27
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/VisitPlanController.java
  4. 6 0
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/VisitPlan.java
  5. 9 0
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/dto/QueryVisitPlanDTO.java
  6. 9 0
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/vo/UserCommonModuleVO.java
  7. 33 0
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/vo/VisitPlanVO.java
  8. 3 0
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/mapper/UserCommonModuleMapper.java
  9. 9 0
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/mapper/VisitPlanMapper.java
  10. 2 0
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/ContactsService.java
  11. 1 1
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/UserCommonModuleService.java
  12. 1 1
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/VisitPlanService.java
  13. 21 0
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ContactsServiceImpl.java
  14. 34 16
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/UserCommonModuleServiceImpl.java
  15. 12 9
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/VisitPlanServiceImpl.java
  16. 6 0
      fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/UserCommonModuleMapper.xml
  17. 34 0
      fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/VisitPlanMapper.xml
  18. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/LeaveSheetController.java
  19. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/LeaveSheetMapper.java
  20. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java
  21. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/LeaveSheetService.java
  22. 6 6
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/LeaveSheetServiceImpl.java
  23. 3 3
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/LeaveSheetMapper.xml
  24. 12 6
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  25. 6 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/AlertTimeController.java
  26. 286 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/task/TimingTask.java
  27. 3 0
      fhKeeper/formulahousekeeper/timesheet/src/i18n/en.json
  28. 3 1
      fhKeeper/formulahousekeeper/timesheet/src/i18n/zh.json
  29. 17 15
      fhKeeper/formulahousekeeper/timesheet/src/views/leave/list.vue

+ 11 - 5
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/ContactsController.java

@@ -12,11 +12,7 @@ import com.management.platform.service.ContactsService;
 import com.management.platform.util.HttpRespMsg;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
@@ -47,6 +43,16 @@ public class ContactsController {
     @Autowired
     private ContactsMapper contactsMapper;
 
+    /***
+     * 获取常用联系人
+     * @param request
+     * @return
+     */
+    @PostMapping("/getFrequentContacts")
+    public HttpRespMsg getFrequentContacts(HttpServletRequest request) {
+        return contactsService.getFrequentContacts(request);
+    }
+
     /**
      * 添加联系人
      * @param contacts

+ 6 - 12
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/UserCommonModuleController.java

@@ -19,23 +19,17 @@ public class UserCommonModuleController {
 
     @PostMapping("/getCommonModules")
     private HttpRespMsg getCommonModules(HttpServletRequest request) {
-        HttpRespMsg httpRespMsg = new HttpRespMsg();
-        httpRespMsg = userCommonModuleService.getCommonModules(request);
-        return httpRespMsg;
+        return userCommonModuleService.getCommonModules(request);
     }
 
-    @PostMapping("/addCommonModule")
-    private HttpRespMsg addCommonModule(@RequestParam("moduleId")Integer moduleId,HttpServletRequest request) {
-        HttpRespMsg httpRespMsg = new HttpRespMsg();
-        httpRespMsg = userCommonModuleService.addCommonModule(moduleId,request);
-        return httpRespMsg;
+    @PostMapping("/addCommonModules")
+    private HttpRespMsg addCommonModules(@RequestParam("moduleIds")String moduleIds,HttpServletRequest request) {
+        return userCommonModuleService.addCommonModules(moduleIds,request);
     }
 
     @PostMapping("/delCommonModules")
-    private HttpRespMsg delCommonModules(@RequestParam("moduleId")String moduleIds,HttpServletRequest request) {
-        HttpRespMsg httpRespMsg = new HttpRespMsg();
-        httpRespMsg = userCommonModuleService.delCommonModules(moduleIds,request);
-        return httpRespMsg;
+    private HttpRespMsg delCommonModules(@RequestParam("moduleIds")String moduleIds,HttpServletRequest request) {
+        return userCommonModuleService.delCommonModules(moduleIds,request);
     }
 
 

+ 27 - 27
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/VisitPlanController.java

@@ -2,16 +2,16 @@ package com.management.platform.controller;
 
 import com.management.platform.entity.VisitPlan;
 import com.management.platform.service.VisitPlanService;
-import com.management.platform.time.VisitPlanDelayHandler;
-import com.management.platform.time.VisitPlanDelayItem;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.format.annotation.DateTimeFormat;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+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;
 import java.util.Date;
-import java.util.concurrent.TimeUnit;
 
 @RestController
 @RequestMapping("/visitPlan")
@@ -35,13 +35,13 @@ public class VisitPlanController {
      * @return
      */
     @PostMapping("/addVisitPlan")
-    public HttpRespMsg testTask(
+    public HttpRespMsg addVisitPlan(
             @RequestParam("planName") String planName,
             @RequestParam("customId") Integer customId,
             @RequestParam("customName") String customName,
             @RequestParam("inchargerId") String inchargerId,
             @RequestParam("visitGoal") Integer visitGoal,
-            @RequestParam("visitTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")Date visitTime,
+            @RequestParam("visitTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")Date visitTime,
             @RequestParam("remark") String remark,
             @RequestParam("remindType") Integer remindType,
             @RequestParam(value = "remindTime",required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")Date remindTime
@@ -85,7 +85,7 @@ public class VisitPlanController {
      */
     @PostMapping("/delayVisitPlan")
     public HttpRespMsg delayVisitPlan(@RequestParam("planId") Long planId
-            ,@RequestParam("visitTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")Date visitTime
+            ,@RequestParam("visitTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")Date visitTime
             , HttpServletRequest request){
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         httpRespMsg=visitPlanService.delayVisitPlan(planId,visitTime,request);
@@ -115,30 +115,30 @@ public class VisitPlanController {
      * @return
      */
     @PostMapping("/getPageVisitPlan")
-    public HttpRespMsg getPageVisitPlan(@RequestParam Integer pageIndex
-            , @RequestParam Integer pageSize
-            ,@RequestParam("calenderTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")Date calenderTime
+    public HttpRespMsg getPageVisitPlan(@RequestParam(value = "pageIndex",required = false) Integer pageIndex
+            , @RequestParam(value = "pageSize",required = false) Integer pageSize
+            ,@RequestParam("calenderDate")String calenderDate
             ,HttpServletRequest request){
         HttpRespMsg httpRespMsg = new HttpRespMsg();
-        httpRespMsg = visitPlanService.getPageVisitPlan(pageIndex,pageSize,calenderTime,request);
+        httpRespMsg = visitPlanService.getPageVisitPlan(pageIndex,pageSize,calenderDate,request);
         return httpRespMsg;
     }
 
 
-    @GetMapping("/getDelayQueue")
-    public HttpRespMsg getDelayQueue(HttpServletRequest request) {
-        HttpRespMsg httpRespMsg = new HttpRespMsg();
-        VisitPlanDelayHandler tool = new VisitPlanDelayHandler();
-        httpRespMsg.setData(tool.getAll());
-        Object[] all =  tool.getAll();
-        for (Object obj : all) {
-            VisitPlanDelayItem item = (VisitPlanDelayItem) obj;
-            long delay = item.getDelay(TimeUnit.SECONDS);
-            System.out.println("item== "+item.getVisitPlan().getPlanName()
-                    +",delayTime=== "+item.getDelayTime()
-            +",delay=== "+delay
-            );
-        }
-        return httpRespMsg;
-    }
+//    @GetMapping("/getDelayQueue")
+//    public HttpRespMsg getDelayQueue(HttpServletRequest request) {
+//        HttpRespMsg httpRespMsg = new HttpRespMsg();
+//        VisitPlanDelayHandler tool = new VisitPlanDelayHandler();
+//        httpRespMsg.setData(tool.getAll());
+//        Object[] all =  tool.getAll();
+//        for (Object obj : all) {
+//            VisitPlanDelayItem item = (VisitPlanDelayItem) obj;
+//            long delay = item.getDelay(TimeUnit.SECONDS);
+//            System.out.println("item== "+item.getVisitPlan().getPlanName()
+//                    +",delayTime=== "+item.getDelayTime()
+//            +",delay=== "+delay
+//            );
+//        }
+//        return httpRespMsg;
+//    }
 }

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

@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 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.util.Date;
 
@@ -35,6 +37,8 @@ public class VisitPlan extends Model<VisitPlan> {
     private Integer visitGoal;
     /**拜访时间*/
     @TableField(value = "visit_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
     private Date visitTime;
     /**备注*/
     @TableField(value = "remark")
@@ -44,6 +48,8 @@ public class VisitPlan extends Model<VisitPlan> {
     private Integer remindType;
     /**提醒时间[自定义时间时再填充]*/
     @TableField(value = "remind_time")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date remindTime;
 
     /**是否达到提醒时间 0未到 1已到 2不需要提醒*/

+ 9 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/dto/QueryVisitPlanDTO.java

@@ -0,0 +1,9 @@
+package com.management.platform.entity.dto;
+
+import lombok.Data;
+
+@Data
+public class QueryVisitPlanDTO {
+    private String calenderDate;
+    private String userId;
+}

+ 9 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/vo/UserCommonModuleVO.java

@@ -0,0 +1,9 @@
+package com.management.platform.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class UserCommonModuleVO {
+    private Integer moduleId;
+    private String moduleName;
+}

+ 33 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/vo/VisitPlanVO.java

@@ -0,0 +1,33 @@
+package com.management.platform.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+public class VisitPlanVO {
+    private String planName;
+    private String customName;
+    /**负责人名称(user表)*/
+    private String inchargerName;
+    /**拜访目的 字典表id*/
+    private Integer visitGoal;
+//    private String visitGoalText;
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    private Date visitTime;
+    /**备注*/
+    private String remark;
+    /**提醒类型 字典表id,对应字典项name类型名称 ex1时间[秒]*/
+    private Integer remindType;
+    /**提醒时间[自定义时间时再填充]*/
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date remindTime;
+    /**是否达到提醒时间 0未到 1已到 2不需要提醒*/
+    private Integer remindState;
+    /**完成状态 0未完成 1已完成*/
+    private Integer finishState;
+}

+ 3 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/mapper/UserCommonModuleMapper.java

@@ -2,10 +2,13 @@ package com.management.platform.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.management.platform.entity.UserCommonModule;
+import com.management.platform.entity.vo.UserCommonModuleVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
 public interface UserCommonModuleMapper extends BaseMapper<UserCommonModule> {
     void insertBatch(@Param("toAddList") List<UserCommonModule> toAddList);
+
+    List<UserCommonModuleVO> getCommonModules(@Param("userId") String userId, @Param("companyId") Integer companyId);
 }

+ 9 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/mapper/VisitPlanMapper.java

@@ -1,7 +1,16 @@
 package com.management.platform.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.management.platform.entity.VisitPlan;
+import com.management.platform.entity.dto.QueryVisitPlanDTO;
+import com.management.platform.entity.vo.VisitPlanVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface VisitPlanMapper extends BaseMapper<VisitPlan> {
+    IPage<VisitPlanVO> getPageVisitPlan(IPage<VisitPlan> page, @Param("query") QueryVisitPlanDTO query);
+
+    List<VisitPlanVO> getListVisitPlan(@Param("query")QueryVisitPlanDTO query);
 }

+ 2 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/ContactsService.java

@@ -49,4 +49,6 @@ public interface ContactsService extends IService<Contacts> {
     int claimContacts(Contacts contactsGet, User user);
 
     HttpRespMsg getAll(HttpServletRequest request);
+
+    HttpRespMsg getFrequentContacts(HttpServletRequest request);
 }

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

@@ -9,7 +9,7 @@ import javax.servlet.http.HttpServletRequest;
 public interface UserCommonModuleService extends IService<UserCommonModule> {
     HttpRespMsg getCommonModules(HttpServletRequest request);
 
-    HttpRespMsg addCommonModule(Integer moduleId,HttpServletRequest request);
+    HttpRespMsg addCommonModules(String moduleIds,HttpServletRequest request);
 
     HttpRespMsg delCommonModules(String moduleIds, HttpServletRequest request);
 }

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

@@ -16,5 +16,5 @@ public interface VisitPlanService extends IService<VisitPlan> {
 
     HttpRespMsg delVisitPlan(Long planId, HttpServletRequest request);
 
-    HttpRespMsg getPageVisitPlan(Integer pageIndex, Integer pageSize, Date calenderTime, HttpServletRequest request);
+    HttpRespMsg getPageVisitPlan(Integer pageIndex, Integer pageSize, String calenderDate, HttpServletRequest request);
 }

+ 21 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ContactsServiceImpl.java

@@ -822,5 +822,26 @@ public class ContactsServiceImpl extends ServiceImpl<ContactsMapper, Contacts> i
         return httpRespMsg;
     }
 
+    @Override
+    public HttpRespMsg getFrequentContacts(HttpServletRequest request) {
+        HttpRespMsg msg = new HttpRespMsg();
+        String token = String.valueOf(request.getHeader("Token"));
+        User user = userMapper.selectById(token);
+        if(null == user){
+            msg.setError("用户不存在");
+            return msg;
+        }
+        List<Contacts> contactsList = contactsMapper.selectList(new LambdaQueryWrapper<Contacts>()
+                .select(Contacts::getCustomId,Contacts::getName,Contacts::getPhone,Contacts::getEmail)
+                .eq(Contacts::getCreatorId, user.getId())
+                .eq(Contacts::getCompanyId, user.getCompanyId())
+                .eq(Contacts::getIsDelete, 0)
+                .eq(Contacts::getIsFrequent,1)
+                .orderByDesc(Contacts::getCreateTime)
+        );
+        msg.setData(contactsList);
+        return msg;
+    }
+
 
 }

+ 34 - 16
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/UserCommonModuleServiceImpl.java

@@ -7,6 +7,7 @@ import com.management.platform.entity.SysModule;
 import com.management.platform.entity.SysRoleModule;
 import com.management.platform.entity.User;
 import com.management.platform.entity.UserCommonModule;
+import com.management.platform.entity.vo.UserCommonModuleVO;
 import com.management.platform.mapper.SysModuleMapper;
 import com.management.platform.mapper.SysRoleModuleMapper;
 import com.management.platform.mapper.UserCommonModuleMapper;
@@ -14,6 +15,7 @@ import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.UserCommonModuleService;
 import com.management.platform.util.HttpRespMsg;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -52,9 +54,14 @@ public class UserCommonModuleServiceImpl extends ServiceImpl<UserCommonModuleMap
             httpRespMsg.setError("用户不存在");
             return httpRespMsg;
         }
-        List<UserCommonModule> commonModules = userCommonModuleMapper.selectList(new LambdaQueryWrapper<UserCommonModule>()
-                .eq(UserCommonModule::getUserId, user.getId()).orderByAsc(UserCommonModule::getSeq)
-        );
+
+        List<UserCommonModuleVO> commonModules = userCommonModuleMapper.getCommonModules(user.getId(),user.getCompanyId());
+
+//        List<UserCommonModule> commonModules = userCommonModuleMapper
+//                .selectList(new LambdaQueryWrapper<UserCommonModule>()
+//                        .select(UserCommonModule::getModuleId)
+//                .eq(UserCommonModule::getUserId, user.getId()).orderByAsc(UserCommonModule::getSeq)
+//        );
         if(CollectionUtils.isEmpty(commonModules)){
             List<String> list = defaultCommonModuleConfig.getPath();
             List<SysModule> sysModules = sysModuleMapper.getModuleByRole(user.getRoleId());
@@ -85,29 +92,34 @@ public class UserCommonModuleServiceImpl extends ServiceImpl<UserCommonModuleMap
 
     @Override
     @Transactional
-    public HttpRespMsg addCommonModule(Integer moduleId,HttpServletRequest request) {
+    public HttpRespMsg addCommonModules(String moduleIds,HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         User user= userMapper.selectById(request.getHeader("token"));
         if(null == user){
             httpRespMsg.setError("用户不存在");
             return httpRespMsg;
         }
+        if(StringUtils.isBlank(moduleIds)){
+            httpRespMsg.setError("模块id不能为空");
+            return httpRespMsg;
+        }
+        List<Integer> moduleIdList = Arrays.stream(moduleIds.split(",")).map(Integer::parseInt).collect(Collectors.toList());
         //是否已存在
         Integer count = userCommonModuleMapper.selectCount(new LambdaQueryWrapper<UserCommonModule>()
-                .eq(UserCommonModule::getModuleId, moduleId)
+                .in(UserCommonModule::getModuleId, moduleIdList)
                 .eq(UserCommonModule::getUserId, user.getId())
         );
         if(count > 0){
-            httpRespMsg.setError("已有该常用模块");
+            httpRespMsg.setError("已存在选中的常用模块");
             return httpRespMsg;
         }
         //是否有权限
         Integer roleModuleCount = sysRoleModuleMapper.selectCount(new LambdaQueryWrapper<SysRoleModule>()
-                .eq(SysRoleModule::getModuleId, moduleId)
-                .eq(SysRoleModule::getRoleId, user.getRole())
+                .in(SysRoleModule::getModuleId, moduleIdList)
+                .eq(SysRoleModule::getRoleId, user.getRoleId())
         );
-        if(roleModuleCount <= 0){
-            httpRespMsg.setError("无模块权限");
+        if(roleModuleCount <= moduleIdList.size()){
+            httpRespMsg.setError("无模块权限");
             return httpRespMsg;
         }
         //计算seq
@@ -116,12 +128,18 @@ public class UserCommonModuleServiceImpl extends ServiceImpl<UserCommonModuleMap
                 .orderByDesc(UserCommonModule::getSeq)
                 .last("limit 1")
         );
-        UserCommonModule entity = new UserCommonModule();
-        entity.setModuleId(moduleId);
-        entity.setUserId(user.getId());
-        entity.setCompanyId(user.getCompanyId());
-        entity.setSeq(null==lastModule?1:lastModule.getSeq()+1);
-        userCommonModuleMapper.insert(entity);
+        int index = null==lastModule?1:lastModule.getSeq()+1;
+        List<UserCommonModule> toAddList = new ArrayList<>();
+        for (Integer moduleId : moduleIdList) {
+            UserCommonModule entity = new UserCommonModule();
+            entity.setModuleId(moduleId);
+            entity.setUserId(user.getId());
+            entity.setCompanyId(user.getCompanyId());
+            entity.setSeq(index);
+            toAddList.add(entity);
+            index++;
+        }
+        userCommonModuleMapper.insertBatch(toAddList);
         return httpRespMsg;
     }
 

+ 12 - 9
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/VisitPlanServiceImpl.java

@@ -2,12 +2,12 @@ package com.management.platform.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.entity.SysDict;
 import com.management.platform.entity.User;
 import com.management.platform.entity.VisitPlan;
+import com.management.platform.entity.dto.QueryVisitPlanDTO;
+import com.management.platform.entity.vo.VisitPlanVO;
 import com.management.platform.mapper.SysDictMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.mapper.VisitPlanMapper;
@@ -224,19 +224,22 @@ public class VisitPlanServiceImpl extends ServiceImpl<VisitPlanMapper, VisitPlan
     }
 
     @Override
-    public HttpRespMsg getPageVisitPlan(Integer pageIndex, Integer pageSize, Date calenderTime, HttpServletRequest request) {
+    public HttpRespMsg getPageVisitPlan(Integer pageIndex, Integer pageSize, String calenderDate, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         User user= userMapper.selectById(request.getHeader("token"));
         if(null == user){
             httpRespMsg.setError("用户不存在");
             return httpRespMsg;
         }
-        IPage<VisitPlan> page = new Page<>(pageIndex,pageSize);
-        page = visitPlanMapper.selectPage(page, new LambdaQueryWrapper<VisitPlan>()
-                .eq(VisitPlan::getVisitTime, calenderTime)
-                .eq(VisitPlan::getCreateBy, user.getId())
-        );
-        httpRespMsg.setData(page);
+//        Page<VisitPlan> page = new Page<>(pageIndex,pageSize);
+        QueryVisitPlanDTO query = new QueryVisitPlanDTO();
+        query.setCalenderDate(calenderDate);
+        query.setUserId(user.getId());
+
+//        IPage<VisitPlanVO> resPage = visitPlanMapper.getPageVisitPlan(page,query);
+        List<VisitPlanVO> resPage = visitPlanMapper.getListVisitPlan(query);
+
+        httpRespMsg.setData(resPage);
         return httpRespMsg;
     }
 }

+ 6 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/UserCommonModuleMapper.xml

@@ -9,4 +9,10 @@
             (#{toAdd.userId},#{toAdd.companyId},#{toAdd.moduleId},#{toAdd.seq},now())
         </foreach>
     </insert>
+    <select id="getCommonModules" resultType="com.management.platform.entity.vo.UserCommonModuleVO">
+        select ucm.module_id,sm.name as moduleName
+        from user_common_module ucm
+                 left join sys_module sm on ucm.module_id = sm.id
+        where user_id = #{userId} and company_id = #{companyId}
+    </select>
 </mapper>

+ 34 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/VisitPlanMapper.xml

@@ -0,0 +1,34 @@
+<?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.VisitPlanMapper">
+
+    <select id="getPageVisitPlan" resultType="com.management.platform.entity.vo.VisitPlanVO">
+        select vs.id, vs.plan_name, vs.custom_id, vs.custom_name
+             , vs.incharger_id, u.name as inchargerName
+             , vs.visit_goal,sd1.name as visitGoalText
+             , vs.visit_time, vs.remark
+             , vs.remind_type, sd2.name as remindTypeText
+             ,vs.remind_time, vs.remind_state, vs.finish_state
+             , vs.create_by
+        from visit_plan vs
+                 left join user u on vs.incharger_id = u.id
+                 left join (select * from sys_dict where code = 'VisitGoal') sd1 on vs.visit_goal = sd1.id
+                 left join (select * from sys_dict where code = 'RemindType') sd2 on vs.remind_type = sd2.id
+        where vs.create_by = #{query.userId} and date_format(vs.visit_time,'%Y-%m-%d') = #{query.calenderDate}
+    </select>
+    <select id="getListVisitPlan" resultType="com.management.platform.entity.vo.VisitPlanVO">
+        select vs.id, vs.plan_name, vs.custom_id, vs.custom_name
+             , vs.incharger_id, u.name as inchargerName
+             , vs.visit_goal,sd1.name as visitGoalText
+             , vs.visit_time, vs.remark
+             , vs.remind_type, sd2.name as remindTypeText
+             ,vs.remind_time, vs.remind_state, vs.finish_state
+             , vs.create_by
+        from visit_plan vs
+                 left join user u on vs.incharger_id = u.id
+                 left join (select * from sys_dict where code = 'VisitGoal') sd1 on vs.visit_goal = sd1.id
+                 left join (select * from sys_dict where code = 'RemindType') sd2 on vs.remind_type = sd2.id
+        where vs.create_by = #{query.userId} and date_format(vs.visit_time,'%Y-%m-%d') = #{query.calenderDate}
+    </select>
+</mapper>

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

@@ -65,9 +65,9 @@ public class LeaveSheetController {
      * @return
      */
     @PostMapping("/getCompanyUserTime")
-    public HttpRespMsg getCompanyUserTime(@RequestParam(value = "userName",required = false) String userName,HttpServletRequest request) {
+    public HttpRespMsg getCompanyUserTime(@RequestParam(value = "userId",required = false) String userId,HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
-        httpRespMsg = leaveSheetService.getCompanyUserTime(userName,request);
+        httpRespMsg = leaveSheetService.getCompanyUserTime(userId,request);
         return httpRespMsg;
     }
     /**

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/LeaveSheetMapper.java

@@ -26,5 +26,5 @@ public interface LeaveSheetMapper extends BaseMapper<LeaveSheet> {
 
     List<Map<String,Object>> selectLeaveAll(Integer companyId, String startDate, String endDate,List<Integer> branchDepartment,List<Integer> deptIds);
 
-    List<UserRestTimeVO> getCompanyUserRestTimeHours(@Param("companyId") Integer companyId,@Param("userName")String userName);
+    List<UserRestTimeVO> getCompanyUserRestTimeHours(@Param("companyId") Integer companyId,@Param("userId")String userId);
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java

@@ -253,5 +253,5 @@ public interface ReportMapper extends BaseMapper<Report> {
 
     List<UserProjectBonusTimeVO> getUserProjectsByBonusBO(BonusDataBO bonusDataBO);
 
-    List<UserRestTimeVO> getCompanyUserOverTimeHours(@Param("companyId") Integer companyId,@Param("userName") String userName);
+    List<UserRestTimeVO> getCompanyUserOverTimeHours(@Param("companyId") Integer companyId,@Param("userId") String userId);
 }

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

@@ -41,5 +41,5 @@ public interface LeaveSheetService extends IService<LeaveSheet> {
 
     HttpRespMsg leaveDays(String startDate, String endDate);
 
-    HttpRespMsg getCompanyUserTime(String userName, HttpServletRequest request);
+    HttpRespMsg getCompanyUserTime(String userId, HttpServletRequest request);
 }

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

@@ -831,7 +831,7 @@ public class LeaveSheetServiceImpl extends ServiceImpl<LeaveSheetMapper, LeaveSh
     }
 
     @Override
-    public HttpRespMsg getCompanyUserTime(String userName,HttpServletRequest request) {
+    public HttpRespMsg getCompanyUserTime(String userId,HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         User user= userMapper.selectById(request.getHeader("token"));
         if(null == user){
@@ -854,22 +854,22 @@ public class LeaveSheetServiceImpl extends ServiceImpl<LeaveSheetMapper, LeaveSh
         }
 
         //获取加班时长 creatorId overTimeHours
-        List<UserRestTimeVO> overTimeHourList = reportMapper.getCompanyUserOverTimeHours(user.getCompanyId(),userName);
+        List<UserRestTimeVO> overTimeHourList = reportMapper.getCompanyUserOverTimeHours(user.getCompanyId(),userId);
 
         //获取已经休息的时长
-        List<UserRestTimeVO> restTimeHourList = leaveSheetMapper.getCompanyUserRestTimeHours(user.getCompanyId(),userName);
+        List<UserRestTimeVO> restTimeHourList = leaveSheetMapper.getCompanyUserRestTimeHours(user.getCompanyId(),userId);
 
         if(!CollectionUtils.isEmpty(overTimeHourList)){
             Map<String, UserRestTimeVO> overTimeHourMap = overTimeHourList.stream().collect(Collectors.toMap(UserRestTimeVO::getUserId, t -> t));
             Map<String, UserRestTimeVO> restTimeHourMap = new HashMap<>();
-            if(!CollectionUtils.isEmpty(restTimeHourMap)){
+            if(!CollectionUtils.isEmpty(restTimeHourList)){
                 restTimeHourMap = restTimeHourList.stream().collect(Collectors.toMap(UserRestTimeVO::getUserId, t -> t));
             }
 
             for (Map.Entry<String, UserRestTimeVO> entry : overTimeHourMap.entrySet()) {
-                String userId = entry.getKey();
+                String tmpUserId = entry.getKey();
                 UserRestTimeVO tmpUserTimeVO = entry.getValue();
-                UserRestTimeVO restTimeUserVO = restTimeHourMap.get(userId);
+                UserRestTimeVO restTimeUserVO = restTimeHourMap.get(tmpUserId);
                 if(null != restTimeUserVO){
                     BigDecimal leftTimeHour = tmpUserTimeVO.getOverTimeHour().subtract(restTimeUserVO.getRestTimeHour());
                     if(0 > leftTimeHour.compareTo(new BigDecimal(0))){

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

@@ -83,9 +83,9 @@
                 select id,name
                 from user
                 <where>
-                    company_id = #{companyId}
-                    <if test="userName != null and userName !='' ">
-                        and name like concat('%',#{userName},'%')
+                    company_id = #{companyId} and is_active = 1
+                    <if test="userId != null and userId !='' ">
+                        and id = #{userId}
                     </if>
                 </where>
             )tmp1

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

@@ -1576,17 +1576,23 @@
                 select id,name
                 from user
                 <where>
-                    company_id = #{companyId}
-                <if test="userName != null and userName !='' ">
-                    and name like concat('%',#{userName},'%')
+                    company_id = #{companyId} and is_active = 1
+                <if test="userId != null and userId !='' ">
+                    and id = #{userId}
                 </if>
                 </where>
             )tmp1
                 left join (
-                select creator_id userId,IFNULL(sum(overtime_hours),0) as overTimeHour
+                select report.creator_id userId,IFNULL(sum(overtime_hours),0) as overTimeHour
                 from report
-                where company_id = #{companyId}
-                group by creator_id
+                LEFT JOIN report_write_off rwo ON rwo.`report_id`=report.id
+                <where>
+                    company_id = #{companyId} AND (rwo.`write_off` IS NULL OR rwo.`write_off`=0)
+                    <if test="userId != null and userId !='' ">
+                        and report.creator_id=#{userId}
+                    </if>
+                </where>
+                group by report.creator_id
             ) tmp2 on tmp1.id = tmp2.userId
     </select>
 

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

@@ -24,6 +24,12 @@ public class AlertTimeController {
     @Autowired
     private TimingTask timingTask;
 
+    @RequestMapping("/temporarilyTask")
+    public HttpRespMsg temporarilyTask(String endDate,String startDate) throws Exception {
+        timingTask.getTemporaryJobApplicationNewWithDate(endDate,startDate);
+        return new HttpRespMsg();
+    }
+
     @RequestMapping("/test")
     public HttpRespMsg test() throws Exception {
         timingTask.getTemporaryJobApplicationNew();

+ 286 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/task/TimingTask.java

@@ -864,4 +864,290 @@ public class TimingTask {
         }
     }
 
+
+    public void getTemporaryJobApplicationNewWithDate(String endDate,String startDate) throws Exception {
+        if(isDev){
+            return;
+        }
+        DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
+//        LocalDate start=LocalDate.now().minusDays(7);
+//        LocalDate end=LocalDate.now();
+        JSONArray jsonArrayFilter = new JSONArray();
+        JSONObject filter1 = new JSONObject();
+        WxCorpTemplate template = wxCorpTemplateService.getOne(new QueryWrapper<WxCorpTemplate>().eq("company_id",7).eq("type",2));//类型设置为2
+        filter1.put("key","template_id");
+        filter1.put("value",template.getTemplateId());
+        jsonArrayFilter.add(filter1);
+        JSONObject filter2 = new JSONObject();
+        filter2.put("key","sp_status");
+        filter2.put("value","2");
+        jsonArrayFilter.add(filter2);
+        List<String> approvalInfo = wxCorpInfoService.getApprovalInfo(7, startDate, endDate, "", jsonArrayFilter);
+        List<Department> departmentList = departmentService.list(new LambdaQueryWrapper<Department>().eq(Department::getCompanyId, 7));
+        List<TaskType> taskTypeList = taskTypeService.list(new LambdaQueryWrapper<TaskType>().eq(TaskType::getCompanyId, 7));
+        List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId,7));
+        if(approvalInfo!=null){
+            for (int i = 0; i < approvalInfo.size(); i++) {
+                String codeNum = approvalInfo.get(i);
+                String approvalInfoDetailResp = wxCorpInfoService.getApprovalInfoDetail(7, codeNum);
+                JSONObject approvalInfoDetail = JSONObject.parseObject(approvalInfoDetailResp);
+                JSONObject info = approvalInfoDetail.getJSONObject("info");
+                JSONObject applyer = info.getJSONObject("applyer");
+                String userid = applyer.getString("userid");
+                //过滤审核状态只需要审核通过的数据
+                int sp_status = info.getIntValue("sp_status");
+                if(sp_status!=2){
+                    continue;
+                }
+                Optional<User> first = userList.stream().filter(u ->u.getCorpwxRealUserid()!=null&&u.getCorpwxRealUserid().equals(userid)).findFirst();
+                if(!first.isPresent()){
+                    continue;
+                }
+                JSONObject apply_data = info.getJSONObject("apply_data");
+                System.out.println("获取到的单据信息===========>"+apply_data);
+                JSONArray contents = apply_data.getJSONArray("contents");
+                //生成 车间插单计划
+                int count = planService.count(new LambdaQueryWrapper<Plan>().eq(Plan::getTaskChangeNoticeNum, info.getString("sp_no")));
+                if(count>0){
+                    continue;
+                }
+                Plan plan=new Plan();
+                plan.setCompanyId(7);
+                plan.setCreateTime(LocalDateTime.now());
+                plan.setPlanType(1);
+                plan.setCreateId(first.get().getId());
+                plan.setTaskChangeNoticeNum(info.getString("sp_no"));
+                //参与人员列表
+                List<String> userTeams=new ArrayList<>();
+                //初始化 单价(元/小时)
+                BigDecimal price=new BigDecimal(0);
+                //初始化 工作时长
+                double workTime=0;
+
+                long apply_time = info.getLongValue("apply_time");
+                LocalDate createDate;
+                if(apply_time>0){
+                    createDate=  DateTimeUtil.getLocalDateFromUnix(apply_time);
+                }else {
+                    createDate  =LocalDate.now();
+                }
+                //初始化工位
+                Integer deptId=0;
+                long startTime=0;
+                long endTime=0;
+                String steelNumArray="";
+                String operationName="";
+                String partName="";
+                for (int i1 = 0; i1 < contents.size(); i1++) {
+                    JSONObject map = contents.getJSONObject(i1);
+                    JSONArray title = map.getJSONArray("title");
+                    JSONObject value = map.getJSONObject("value");
+                    String control = map.getString("control");
+                    /*if(title.getJSONObject(0).getString("text").equals("临时报工分类")){
+                        if(control.equals("Selector")){
+                            JSONObject selector = value.getJSONObject("selector");
+                            JSONArray options = selector.getJSONArray("options");
+                            JSONObject object = options.getJSONObject(0);
+                            JSONArray value1 = object.getJSONArray("value");
+                            JSONObject jsonObject = value1.getJSONObject(0);
+                            String text = jsonObject.getString("text");
+                            Optional<TaskType> first1 = taskTypeList.stream().filter(t -> t.getTaskTypeName().equals(text)).findFirst();
+                            if(first1.isPresent()){
+                                plan.setTaskTypeId(first1.get().getId());
+                                plan.setTaskTypeName(first1.get().getTaskTypeName());
+                            }
+                        }
+                    }*/
+                    if(title.getJSONObject(0).getString("text").equals("项目名称")){
+                        if(control.equals("Text")||control.equals("Textarea")){
+                            String text = value.getString("text");
+                            plan.setProjectName(text);
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").contains("包名称")){
+                        if(control.equals("Text")||control.equals("Textarea")){
+                            String text = value.getString("text");
+                            plan.setProductSchedulingNum(text);
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").equals("生产订单号")){
+                        if(control.equals("Text")||control.equals("Textarea")){
+                            String text = value.getString("text");
+                            plan.setProductOrderNum(text);
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").equals("工序名称")){
+                        if(control.equals("Text")||control.equals("Textarea")){
+                            String text = value.getString("text");
+                            operationName=text;//工序名称
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").equals("零件编码")){
+                        if(control.equals("Text")||control.equals("Textarea")){
+                            String text = value.getString("text");
+                            steelNumArray=text;//零件编码
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").equals("零件名称")){
+                        if(control.equals("Text")||control.equals("Textarea")){
+                            String text = value.getString("text");
+                            partName=text;//零件名称
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").equals("生产数量")){
+                        if(control.equals("Number")){
+                            int new_number= value.get("new_number")!=null?value.getIntValue("new_number"):0;
+                            plan.setNum(new_number);
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").equals("作业单位")){
+                        if(control.equals("Contact")){
+                            JSONArray departments = value.getJSONArray("departments");
+                            String openapi_id = departments.getJSONObject(0).getString("openapi_id");
+                            Optional<Department> first1 = departmentList.stream().filter(d -> d.getCorpwxDeptid().equals(Integer.valueOf(openapi_id))).findFirst();
+                            if(first1.isPresent()){
+                                plan.setStationId(first1.get().getDepartmentId());
+                                plan.setStationName(first1.get().getDepartmentName());
+                                plan.setForemanId(first1.get().getManagerId());
+                                Optional<User> first2 = userList.stream().filter(u -> u.getId().equals(first1.get().getManagerId())).findFirst();
+                                if(first2.isPresent()){
+                                    plan.setForemanName(first2.get().getName());
+                                }
+                                deptId=first1.get().getDepartmentId();
+                            }
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").contains("单价")){
+                        if(control.equals("Number")){
+                            if(!value.getString("new_number").equals("")){
+                                Double new_money = value.getDouble("new_number");
+                                plan.setMoneyOfJob(new BigDecimal(new_money==null?0:new_money));
+                                price=new BigDecimal(new_money);
+                            }
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").contains("结算总额")){
+                        if(control.equals("Formula")){
+                            JSONObject formula = value.getJSONObject("formula");
+                            if(!formula.getString("value").equals("")){
+                                double formulaDoubleValue = formula.getDoubleValue("value");
+                                BigDecimal bigDecimal = new BigDecimal(formulaDoubleValue);
+                                if(workTime>0){
+                                    BigDecimal divide = bigDecimal.divide(new BigDecimal(workTime), 3, RoundingMode.HALF_UP);
+                                    plan.setMoneyOfJob(divide);
+                                }
+                                plan.setSettlementAmount(bigDecimal);
+                            }
+                        }
+                    }
+                    //先处理多个人员 公用此单据非工时部分内容
+                    if(title.getJSONObject(0).getString("text").equals("作业人员")){
+                        if(control.equals("Contact")){
+                            JSONArray members = value.getJSONArray("members");
+                            plan.setPlanManNum(members.size());
+                            for (int i2 = 0; i2 < members.size(); i2++) {
+                                JSONObject jsonObject = members.getJSONObject(i2);
+                                String userid1 = jsonObject.getString("userid");
+                                userTeams.add(userid1);
+                            }
+
+                        }
+                    }
+
+
+                    if(title.getJSONObject(0).getString("text").equals("作业开始日期")){
+                        if(control.equals("Date")){
+                            JSONObject date = value.getJSONObject("date");
+                            long s_timestamp = date.getLongValue("s_timestamp");
+                            startTime=s_timestamp;
+                            LocalDate localDateFromUnix = DateTimeUtil.getLocalDateFromUnix(s_timestamp);
+                            plan.setStartDate(localDateFromUnix);
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").equals("作业结束日期")){
+                        if(control.equals("Date")){
+                            long s_timestamp=0;
+                            JSONObject date = value.getJSONObject("date");
+                            if (!StringUtils.isEmpty(date.getString("s_timestamp"))){
+                                s_timestamp= date.getLongValue("s_timestamp");
+                                LocalDate localDateFromUnix = DateTimeUtil.getLocalDateFromUnix(s_timestamp);
+                                plan.setEndDate(localDateFromUnix);
+                            }
+                            if (s_timestamp!=0){
+                                endTime=s_timestamp;
+                            }
+                        }
+                    }
+                    if (endTime>0){
+                        long l = endTime - startTime;//工作时长
+                        workTime=l/3600.0;
+                        plan.setPlanWorkHour(workTime);//小时
+
+                        startTime=0;
+                        endTime=0;
+                    }
+                    if(title.getJSONObject(0).getString("text").equals("所属工位长")){
+                        if(control.equals("Contact")){
+                            JSONArray members = value.getJSONArray("members");
+                            String userid2 = members.getJSONObject(0).getString("userid");
+                            User user = userMapper.selectOne(new QueryWrapper<User>().eq("corpwx_real_userid", userid2));
+                            Department department = departmentService.getById(user.getDepartmentId());
+                            if (user != null) {
+                                plan.setForemanId(user.getId());
+                                plan.setForemanName(user.getName());
+                                if (department != null) {
+                                    plan.setStationId(department.getDepartmentId());
+                                    plan.setStationName(department.getDepartmentName());
+                                }
+                            }
+                        }
+                    }
+                    if(title.getJSONObject(0).getString("text").equals("备注")){
+                        if(control.equals("Text")||control.equals("Textarea")){
+                            String text = value.getString("text");
+                            plan.setDescribtion(text);
+                        }
+                    }
+                }
+                planService.save(plan);
+                List<Report> reportList=new ArrayList<>();
+                List<PlanExtraInfo> planExtraInfoList=new ArrayList<>();
+
+                //处理人员日报数据
+                for (String userTeam : userTeams) {
+                    Optional<User> user = userList.stream().filter(u -> u.getCorpwxRealUserid() != null && u.getCorpwxRealUserid().equals(userTeam)).findFirst();
+                    if(user.isPresent()){
+                        Report report=new Report();
+                        report.setCreateDate(createDate);
+                        report.setCreatorId(user.get().getId());
+                        report.setCreateTime(LocalDateTime.now());
+                        BigDecimal bigDecimal = new BigDecimal(workTime);
+                        report.setWorkingTime(bigDecimal.doubleValue());
+                        report.setCost(plan.getSettlementAmount().divide(BigDecimal.valueOf(userTeams.size())).setScale(2, RoundingMode.HALF_UP));
+                        report.setStatus(2);
+                        report.setPlanId(plan.getId());
+                        report.setCompanyId(7);
+                        report.setDeptId(user.get().getDepartmentId());
+                        report.setSteelNumArray(steelNumArray);
+                        reportList.add(report);
+                    }
+                }
+                if(reportList.size()>0){
+                    reportService.saveBatch(reportList);
+                    for (Report report : reportList) {
+                        PlanExtraInfo planExtraInfo = new PlanExtraInfo();
+                        planExtraInfo.setPlanId(plan.getId());
+                        planExtraInfo.setReportId(report.getId());
+                        planExtraInfo.setOperationName(operationName);
+                        planExtraInfo.setPartName(partName);
+                        planExtraInfoList.add(planExtraInfo);
+                    }
+                    if(planExtraInfoList.size()>0){
+                        extraInfoService.saveBatch(planExtraInfoList);
+                    }
+                }
+            }
+        }
+    }
+
 }

+ 3 - 0
fhKeeper/formulahousekeeper/timesheet/src/i18n/en.json

@@ -770,6 +770,7 @@
   "annualleavemanagement": "Annual leave management",
   "for": "leave statistics",
   "leaveApprovalProcess": "Leave approval process",
+  "restTime":"Rest time list",
   "myleaveform": "my leave form",
   "scheduleofremainingLeave": "Holiday Remaining Table",
   "singlelistofleave": "List of leave requests",
@@ -796,6 +797,8 @@
   "Nstatisticpresent": "No leave statistics",
   "totaldaysleave": "Total number of days off",
   "totallengthofleave": "Total time off",
+  "remaindaysRest": "Remain number of days off",
+  "remainlengthofRest": "Remain time off",
   "approvalprocessforleaveofdirect staff": "Immediate staff leave approval process",
   "pleaseselectapprover": "Please select an approver",
   "selectdepartmentsdesignatepersonnel": "Select a department/designate",

+ 3 - 1
fhKeeper/formulahousekeeper/timesheet/src/i18n/zh.json

@@ -773,7 +773,7 @@
   "myleaveform": "我的请假单",
   "for": "请假统计",
   "leaveApprovalProcess": "请假审批流程",
-  "restTime":"调休统计",
+  "restTime":"调休额度列表",
   "annualleavemanagement": "年假管理",
   "scheduleofremainingLeave": "假期剩余表",
   "aketimeoffto": "请假填报",
@@ -801,6 +801,8 @@
   "totallengthofleave": "请假总时长",
   "totaldaysRest": "调休总天数",
   "totallengthofRest": "调休总时长",
+  "remaindaysRest": "剩余调休天数",
+  "remainlengthofRest": "剩余调休时长",
   "approvalprocessforleaveofdirect staff": "直属人员请假审批流程",
   "pleaseselectapprover": "请选择审批人",
   "selectdepartmentsdesignatepersonnel": "选择部门/指定人员",

+ 17 - 15
fhKeeper/formulahousekeeper/timesheet/src/views/leave/list.vue

@@ -49,6 +49,13 @@
               </template>
           </el-menu-item>
 
+          <el-menu-item index="9" v-if="permissions.leaveStatistical">
+              <template slot="title">
+                <i class="iconfont firerock-icongongshitongji"></i>
+                <span slot="title">{{ $t('restTime') }}</span>
+              </template>
+          </el-menu-item>
+
           <el-menu-item index="5" v-if="permissions.leaveProcess">
               <template slot="title">
                 <i class="iconfont firerock-iconliucheng"></i>
@@ -80,14 +87,6 @@
             </el-menu-item>
           </template>
 
-          <el-menu-item index="9" v-if="permissions.leaveStatistical">
-              <template slot="title">
-                <i class="iconfont firerock-icongongshitongji"></i>
-                <span slot="title">{{ $t('restTime') }}</span>
-              </template>
-          </el-menu-item>
-
-
           </el-menu>
       </el-col>
     </div>
@@ -407,10 +406,11 @@
         <div class="ctons" style="width: 98%;">
           <div style="display: flex;align-items: center;padding-bottom: 20px;border-bottom: 1px solid #f2f2f2">
             <div style="display: inline-block;width: 350px">
-              <el-input style="float:left;" v-if="user.userNameNeedTranslate != 1" v-model="userName" class="input-with-select" @keyup.enter.native="restTime()" :placeholder="$t('pleaseenterstaffsearch')" clearable="true" size="small">
+              <!-- <el-input style="float:left;" v-if="user.userNameNeedTranslate != 1" v-model="userName" class="input-with-select" @keyup.enter.native="restTime()" :placeholder="$t('pleaseenterstaffsearch')" clearable="true" size="small">
                   <el-button slot="append" @click="restTime()" icon="el-icon-search"></el-button>
               </el-input>
-              <selectCat v-if="user.userNameNeedTranslate == 1" :size="'small'" :widthStr="'240'" :subject="users" :distinction="'11'" :disabled="false" @selectCal="selectCal" :clearable="true"></selectCat>
+              <selectCat v-if="user.userNameNeedTranslate == 1" :size="'small'" :widthStr="'240'" :subject="users" :distinction="'11'" :disabled="false" @selectCal="selectCal" :clearable="true"></selectCat> -->
+              <selectPersonnel v-model="userId" @change="restTime" />
             </div>
           </div>
           <!-- <div style="margin-top: 30px"> -->
@@ -427,12 +427,12 @@
                     </div>
                   </template>
               </el-table-column>
-              <el-table-column prop="restTimeDayStr" :label="$t('totaldaysRest')" width="300">
+              <el-table-column prop="restTimeDayStr" :label="$t('remaindaysRest')" width="300">
                 <template slot-scope="scope">
                     {{scope.row.restTimeDayStr}} / {{ $t('time.day') }}
                   </template>
               </el-table-column>
-              <el-table-column prop="restTimeHourStr" :label="$t('totallengthofRest')">
+              <el-table-column prop="restTimeHourStr" :label="$t('remainlengthofRest')">
                 <template slot-scope="scope">
                     {{scope.row.restTimeHourStr}}/{{ $t('time.hour') }}
                   </template>
@@ -805,6 +805,7 @@ import { config, error } from 'dingtalk-jsapi';
 // 自定义select组件
 import selectCat from "@/components/select.vue"
 import Select from '../../components/select.vue';
+import selectPersonnel from '../../components/selectPersonnel.vue';
 
  // 引入自定义级联组件
 import vueCascader from "@/components/cascader.vue"
@@ -814,7 +815,8 @@ export default {
   components: {
     selectCat,
     Select,
-    vueCascader
+    vueCascader,
+    selectPersonnel
   },
   props: {},
   data() {
@@ -894,7 +896,7 @@ export default {
       total:0,
       apk: false,
       keyword: '',
-      userName:'',
+      userId:'',
       statData: this.getCurrentTimes(),
       endData: this.getCurrentTime(),
       statisticalList: [],
@@ -2141,7 +2143,7 @@ export default {
     restTime() {
       this.loading = true
       this.http.post('/leave-sheet/getCompanyUserTime', {
-        userName: this.userName,
+        userId: this.userId,
       },
         res => {
             if (res.code == "ok") {