소스 검색

出差同步处理,八爪鱼接口

seyason 2 년 전
부모
커밋
729de1bb95
24개의 변경된 파일538개의 추가작업 그리고 125개의 파일을 삭제
  1. 12 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/CustomerInfoController.java
  2. 48 24
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProviderInfoController.java
  3. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java
  4. 64 33
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java
  5. 7 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/BusinessTrip.java
  6. 8 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Department.java
  7. 8 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/LeaveSheet.java
  8. 24 23
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java
  9. 12 6
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  10. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/BusinessTripMapper.xml
  11. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/DepartmentMapper.xml
  12. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/LeaveSheetMapper.xml
  13. 5 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/controller/CompanyController.java
  14. 37 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/controller/TimeTypeController.java
  15. 8 1
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/Company.java
  16. 122 2
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/TimeType.java
  17. 3 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/CompanyService.java
  18. 16 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/TimeTypeService.java
  19. 110 23
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/impl/CompanyServiceImpl.java
  20. 20 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/impl/TimeTypeServiceImpl.java
  21. 1 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/resources/application.yml
  22. 2 1
      fhKeeper/formulahousekeeper/ops-platform/src/main/resources/mapper/CompanyMapper.xml
  23. 21 1
      fhKeeper/formulahousekeeper/ops-platform/src/main/resources/mapper/TimeTypeMapper.xml
  24. 2 2
      fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue

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

@@ -131,14 +131,24 @@ public class CustomerInfoController {
 
 
     @RequestMapping("/list")
-    public HttpRespMsg list(@RequestParam Integer pageIndex, @RequestParam Integer pageSize, String keyword) {
+    public HttpRespMsg list(@RequestParam Integer pageIndex, @RequestParam Integer pageSize, String keyword, String sortProp, Integer sortOrder) {
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
-        QueryWrapper<CustomerInfo> queryWrapper = new QueryWrapper<CustomerInfo>().eq("company_id", user.getCompanyId()).orderByDesc("id");
+        QueryWrapper<CustomerInfo> queryWrapper = new QueryWrapper<CustomerInfo>().eq("company_id", user.getCompanyId());
         if (!StringUtils.isEmpty(keyword)) {
             queryWrapper.like("customer_name", keyword);
         }
+        if (!StringUtils.isEmpty(sortProp)) {
+            if (sortOrder == 0) {
+                //降序
+                queryWrapper.orderByDesc(sortProp);
+            } else {
+                queryWrapper.orderByAsc(sortProp);
+            }
+        } else {
+            queryWrapper.orderByDesc("id");
+        }
         IPage<CustomerInfo> projectIPage = customerInfoMapper.selectPage(new Page<>(pageIndex, pageSize),
                 queryWrapper);
         List<CustomerInfo> list = projectIPage.getRecords();

+ 48 - 24
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProviderInfoController.java

@@ -50,38 +50,62 @@ public class ProviderInfoController {
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
-        List<ProviderInfo> providerInfoMapperAll = providerInfoMapper.selectList(new QueryWrapper<ProviderInfo>().select("id, provider_name,provider_code").eq("company_id", user.getCompanyId()).orderByDesc("id"));
-        List<String> nameList=new ArrayList<>();
-        List<String> codeList=new ArrayList<>();
-        providerInfoMapperAll.forEach(cu->{
-            nameList.add(cu.getProviderName());
-            if(cu.getProviderCode()!=null){
-                codeList.add(cu.getProviderCode());
-            }
-        });
+
         if (info.getId() == null) {
-            if(nameList.contains(info.getProviderName())){
-                msg.setError("供货商名称已存在");
-                return msg;
+            if (!StringUtils.isEmpty(info.getProviderCode())) {
+                int cnt = providerInfoMapper.selectCount(new QueryWrapper<ProviderInfo>().eq("company_id", user.getCompanyId()).eq("provider_code", info.getProviderCode()));
+                if (cnt > 0) {
+                    msg.setError("供货商编号已存在");
+                    return msg;
+                }
             }
-            if(codeList.contains(info.getProviderCode())){
-                msg.setError("供货商编号已存在");
-                return msg;
+            if (!StringUtils.isEmpty(info.getProviderName())) {
+                if (info.getProviderCategoryId() != null) {
+                    int cnt = providerInfoMapper.selectCount(new QueryWrapper<ProviderInfo>().eq("company_id", user.getCompanyId()).eq("provider_name", info.getProviderName()).eq("provider_category_id", info.getProviderCategoryId()));
+                    if (cnt > 0) {
+                        msg.setError("该分类下供货商名称已存在");
+                        return msg;
+                    }
+                } else {
+                    int cnt = providerInfoMapper.selectCount(new QueryWrapper<ProviderInfo>().eq("company_id", user.getCompanyId()).eq("provider_name", info.getProviderName()));
+                    if (cnt > 0) {
+                        msg.setError("该供货商名称已存在");
+                        return msg;
+                    }
+                }
+
             }
             info.setCompanyId(user.getCompanyId());
             providerInfoMapper.insert(info);
         } else {
-            ProviderInfo customerInfo = providerInfoMapper.selectById(info.getId());
-            nameList.remove(customerInfo.getProviderName());
-            codeList.remove(customerInfo.getProviderCode());
-            if(nameList.contains(info.getProviderName())){
-                msg.setError("供货商名称已存在");
-                return msg;
+            if (!StringUtils.isEmpty(info.getProviderCode())) {
+                int cnt = providerInfoMapper.selectCount(new QueryWrapper<ProviderInfo>()
+                        .eq("company_id", user.getCompanyId()).eq("provider_code", info.getProviderCode()).ne("id", info.getId()));
+                if (cnt > 0) {
+                    msg.setError("供货商编号已存在");
+                    return msg;
+                }
             }
-            if(codeList.contains(info.getProviderCode())){
-                msg.setError("供货商编号已存在");
-                return msg;
+            if (!StringUtils.isEmpty(info.getProviderName())) {
+                if (info.getProviderCategoryId() != null) {
+                    int cnt = providerInfoMapper.selectCount(new QueryWrapper<ProviderInfo>()
+                            .eq("company_id", user.getCompanyId()).eq("provider_name", info.getProviderName()).eq("provider_category_id", info.getProviderCategoryId()).ne("id", info.getId()));
+                    if (cnt > 0) {
+                        msg.setError("该分类下供货商名称已存在");
+                        return msg;
+                    }
+                } else {
+                    int cnt = providerInfoMapper.selectCount(new QueryWrapper<ProviderInfo>()
+                            .eq("company_id", user.getCompanyId()).eq("provider_name", info.getProviderName()).ne("id", info.getId()));
+                    if (cnt > 0) {
+                        msg.setError("该分类下供货商名称已存在");
+                        return msg;
+                    }
+                }
+
+
             }
+
             if(StringUtils.isEmpty(info.getProviderCategoryName())){
                 info.setProviderCategoryId(0);
             }

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

@@ -99,6 +99,8 @@ public class TaskController {
                 User exeUser = allUsers.stream().filter(al->al.getId().equals(ex.getExecutorId())).findFirst().get();
                 ex.setExecutorName(exeUser.getName());
                 ex.setExecutorColor(exeUser.getColor());
+            });
+            executorList.stream().forEach(ex->{
                 ex.setProjectId(task.getProjectId());
             });
             String ids = executorList.stream().filter(f->!StringUtils.isEmpty(f.getExecutorId())).map(TaskExecutor::getExecutorId).collect(Collectors.joining(","));

+ 64 - 33
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -1386,11 +1386,6 @@ public class WeiXinCorpController {
                     oldUser.setName(user.getName());
                     userMapper.updateById(oldUser);
                 }
-//                //判断部门是否要更新
-//                if (oldUser.getDepartmentId() != 0) {
-//                    oldUser.setDepartmentId(0);
-//                    userMapper.updateById(oldUser);
-//                }
             }
         }
 
@@ -1398,14 +1393,15 @@ public class WeiXinCorpController {
         JSONObject deptObj = getAllDepartments(curCorpAccessToken);
         JSONArray deptObjJSONArray = deptObj.getJSONArray("department");
 
-        List<Department> sysDeptList = new ArrayList<>();
+//        List<Department> sysDeptList = new ArrayList<>();
         for (int i=0;i<deptObjJSONArray.size(); i++) {
             int deptId = deptObjJSONArray.getJSONObject(i).getIntValue("id");
             Department department = new Department();
-//            department.setDepartmentName(deptObjJSONArray.getJSONObject(i).getString("name"));
             department.setCompanyId(companyId);
             //设置企业微信的部门id
-            department.setCorpwxDeptid(deptObjJSONArray.getJSONObject(i).getInteger("id"));
+            JSONObject cutDeptJson = deptObjJSONArray.getJSONObject(i);
+            department.setCorpwxDeptid(cutDeptJson.getInteger("id"));
+            department.setCorpwxDeptpid(cutDeptJson.getInteger("parentid"));
             System.out.println("开始远程获取部门详情=====");
             String url = TRANSMIT_SERVER_GET_DEPTDETAIL.replace("ACCESS_TOKEN", corpContactAccessToken).replace("DEPTID", ""+deptId);
             String result = restTemplate.getForObject(url, String.class);
@@ -1424,21 +1420,22 @@ public class WeiXinCorpController {
             if (oldDept == null) {
                 if (deptId != 1) {
                     //忽略根,根是公司名称
+                    departmentMapper.insert(department);
                     //按名称比对
-                    oldDept = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", companyId).eq("department_name", department.getDepartmentName()).last("limit 1"));
-                    if (oldDept == null) {
-                        departmentMapper.insert(department);
-                    } else {
-                        //按照企业微信部门id进行更新
-                        oldDept.setCorpwxDeptid(department.getCorpwxDeptid());
-                        departmentMapper.updateById(oldDept);
-                    }
+//                    oldDept = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", companyId).eq("department_name", department.getDepartmentName()).last("limit 1"));
+//                    if (oldDept == null) {
+//                        departmentMapper.insert(department);
+//                    } else {
+//                        //按照企业微信部门id进行更新
+//                        oldDept.setCorpwxDeptid(department.getCorpwxDeptid());
+//                        departmentMapper.updateById(oldDept);
+//                    }
                 }
             } else {
                 department = oldDept;
             }
 
-            sysDeptList.add(department);
+//            sysDeptList.add(department);
             deptObjJSONArray.getJSONObject(i).put("sys_dept_id", department.getDepartmentId());
             Integer departmentId = department.getDepartmentId();
             JSONArray userList = getDeptUserInfo(curCorpAccessToken, deptId);
@@ -1541,26 +1538,28 @@ public class WeiXinCorpController {
 
         //再来更新部门的层级关系
         List<Department> needUpdateDepts = new ArrayList<>();
-        for (int i=0;i<deptObjJSONArray.size(); i++) {
-            JSONObject deptJson = deptObjJSONArray.getJSONObject(i);
-            int pid = deptJson.getInteger("parentid");
-            if (pid != 1) {
-                //根部门Id = 1
-                Integer sysDeptId = deptJson.getInteger("sys_dept_id");
-                if (sysDeptId != null) {
-                    Department department = sysDeptList.stream().filter(d -> d.getDepartmentId() != null && d.getDepartmentId().equals(sysDeptId)).findFirst().get();
-                    //从deptjson数组中寻找parent item
-                    for (int m=0;m<deptObjJSONArray.size(); m++) {
-                        JSONObject item = deptObjJSONArray.getJSONObject(m);
-                        if (item.getInteger("id").equals(pid)) {
-                            department.setSuperiorId(item.getInteger("sys_dept_id"));
-                            break;
-                        }
+        List<Department> allDbDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
+        for (Department department : allDbDeptList) {
+            int corpwxpid = department.getCorpwxDeptpid();
+            if (corpwxpid == 1) {
+                //父部门是根部门
+//                if (department.getSuperiorId() != null) {
+//                    department.setSuperiorId(0);
+//                    needUpdateDepts.add(department);
+//                }
+            } else {
+                Optional<Department> first = allDbDeptList.stream().filter(all -> all.getCorpwxDeptid().intValue() == corpwxpid).findFirst();
+                if (first.isPresent()) {
+                    //按照企业微信的部门父部门找到了
+                    Integer sysPid = first.get().getDepartmentId();
+                    if (!sysPid.equals(department.getSuperiorId())) {
+                        department.setSuperiorId(sysPid);
+                        needUpdateDepts.add(department);
                     }
-                    needUpdateDepts.add(department);
                 }
             }
         }
+
         if (needUpdateDepts.size() > 0) {
             departmentService.updateBatchById(needUpdateDepts);
         }
@@ -1601,6 +1600,38 @@ public class WeiXinCorpController {
     }
 
 
+    @RequestMapping("/updateDeptHierachyByCorpWx")
+    public HttpRespMsg updateDeptHierachyByCorpWx(Integer companyId) {
+        //再来更新部门的层级关系
+        List<Department> needUpdateDepts = new ArrayList<>();
+        List<Department> allDbDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
+        for (Department department : allDbDeptList) {
+            int corpwxpid = department.getCorpwxDeptpid();
+            if (corpwxpid == 1) {
+                //父部门是根部门
+//                if (department.getSuperiorId() != null) {
+//                    department.setSuperiorId(0);
+//                    needUpdateDepts.add(department);
+//                }
+            } else {
+                Optional<Department> first = allDbDeptList.stream().filter(all -> all.getCorpwxDeptid().intValue() == corpwxpid).findFirst();
+                if (first.isPresent()) {
+                    //按照企业微信的部门父部门找到了
+                    Integer sysPid = first.get().getDepartmentId();
+                    if (!sysPid.equals(department.getSuperiorId())) {
+                        department.setSuperiorId(sysPid);
+                        needUpdateDepts.add(department);
+                    }
+                }
+            }
+        }
+
+        if (needUpdateDepts.size() > 0) {
+            departmentService.updateBatchById(needUpdateDepts);
+        }
+        return new HttpRespMsg();
+    }
+
 
     //直接通过企业的通讯录secret获取到组织架构,但是如果调用的服务器是第三方服务商会被腾讯识别并拦截
     @RequestMapping("/getCorpMembsWithContactSEC")

+ 7 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/BusinessTrip.java

@@ -21,7 +21,7 @@ import org.springframework.format.annotation.DateTimeFormat;
  * </p>
  *
  * @author Seyason
- * @since 2022-07-03
+ * @since 2022-07-15
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -145,6 +145,12 @@ public class BusinessTrip extends Model<BusinessTrip> {
     @TableField("procinst_id")
     private String procinstId;
 
+    /**
+     * 钉钉审批实例的审批通过时间
+     */
+    @TableField("gmt_finished")
+    private String gmtFinished;
+
 
     @Override
     protected Serializable pkVal() {

+ 8 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Department.java

@@ -16,7 +16,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2022-07-05
+ * @since 2022-07-14
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -69,6 +69,13 @@ public class Department extends Model<Department> {
     private Integer corpwxDeptid;
 
 
+    /**
+     * 企业微信部门的父部门id
+     */
+    @TableField("corpwx_deptpid")
+    private Integer corpwxDeptpid;
+
+
     @Override
     protected Serializable pkVal() {
         return this.departmentId;

+ 8 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/LeaveSheet.java

@@ -20,13 +20,12 @@ import org.springframework.format.annotation.DateTimeFormat;
  * </p>
  *
  * @author Seyason
- * @since 2022-07-03
+ * @since 2022-07-15
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 public class LeaveSheet extends Model<LeaveSheet> {
-
     private static final long serialVersionUID=1L;
 
     @TableId(value = "id", type = IdType.AUTO)
@@ -159,6 +158,13 @@ public class LeaveSheet extends Model<LeaveSheet> {
     private String procinstId;
 
 
+    /**
+     * 钉钉审批实例的审批通过时间
+     */
+    @TableField("gmt_finished")
+    private String gmtFinished;
+
+
     @Override
     protected Serializable pkVal() {
         return this.id;

+ 24 - 23
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java

@@ -1118,6 +1118,7 @@ public class DingDingServiceImpl implements DingDingService {
                     rsp = client.execute(req, accessToken);
                     if (showLog)System.out.println(user.getName()+":"+rsp.getBody());
                     JSONObject json = JSONObject.parseObject(rsp.getBody());
+                    if (json.getInteger("errcode") != 0) continue;
                     JSONObject result = json.getJSONObject("result");
                     //考勤数据
                     JSONArray attendanceList = result.getJSONArray("attendance_result_list");
@@ -1178,18 +1179,18 @@ public class DingDingServiceImpl implements DingDingService {
                             trip.setDayCount(Integer.parseInt(cha.toString()));
                             trip.setStatus(0);
                             trip.setProcinstId(item.getString("procInst_id"));
-                            //检查是否已经存在同一个审批单,有的话就是更新出差记录
-                            BusinessTrip oldTrip = businessTripMapper.selectOne(new QueryWrapper<BusinessTrip>().eq("company_id", trip.getCompanyId()).eq("procinst_id", trip.getProcinstId()));
-                            if (oldTrip != null) {
-                                trip.setId(oldTrip.getId());
-                                businessTripMapper.updateById(trip);
-                            } else {
-                                int cnt = businessTripMapper.selectCount(new QueryWrapper<BusinessTrip>().eq("owner_id", user.getId())
-                                        .eq("start_date", trip.getStartDate())
-                                        .eq("end_date", trip.getEndDate()));
-                                if (cnt == 0) {
-                                    businessTripMapper.insert(trip);
-                                }
+                            trip.setGmtFinished(item.getString("gmt_finished"));
+                            //检查是否已经存在老的同一个审批单,如果有的话,需要删除
+                            QueryWrapper<BusinessTrip> queryWrapper = new QueryWrapper<BusinessTrip>().eq("company_id", trip.getCompanyId()).eq("procinst_id", trip.getProcinstId()).ne("gmt_finished", trip.getGmtFinished());
+                            int oldProIns = businessTripMapper.selectCount(queryWrapper);
+                            if (oldProIns > 0) {
+                                businessTripMapper.delete(queryWrapper);
+                            }
+                            int cnt = businessTripMapper.selectCount(new QueryWrapper<BusinessTrip>().eq("owner_id", user.getId())
+                                    .eq("start_date", trip.getStartDate())
+                                    .eq("end_date", trip.getEndDate()));
+                            if (cnt == 0) {
+                                businessTripMapper.insert(trip);
                             }
                         } else if ("请假".equals(tagName)) {
                             LeaveSheet sheet = new LeaveSheet();
@@ -1197,6 +1198,7 @@ public class DingDingServiceImpl implements DingDingService {
                             sheet.setOwnerName(user.getName());
                             sheet.setStartDate(LocalDateTime.parse(item.getString("begin_time"), timeDtf).toLocalDate());
                             sheet.setEndDate(LocalDateTime.parse(item.getString("end_time"), timeDtf).toLocalDate());
+                            sheet.setGmtFinished(item.getString("gmt_finished"));
                             Long cha = sheet.getEndDate().toEpochDay() - sheet.getStartDate().toEpochDay() + 1;
                             sheet.setTimeDays((float)cha);
                             sheet.setCompanyId(dingding.getCompanyId());
@@ -1216,17 +1218,16 @@ public class DingDingServiceImpl implements DingDingService {
                             }
                             sheet.setLeaveType(leaveTypeIndex);
                             //检查是否已经有同一个请假申请,有的话就是更新
-                            LeaveSheet oldSheet = leaveSheetMapper.selectOne(new QueryWrapper<LeaveSheet>().eq("company_id", sheet.getCompanyId()).eq("procinst_id", sheet.getProcinstId()));
-                            if (oldSheet != null) {
-                                sheet.setId(oldSheet.getId());
-                                leaveSheetMapper.updateById(sheet);
-                            } else {
-                                int cnt = leaveSheetMapper.selectCount(new QueryWrapper<LeaveSheet>().eq("owner_id", user.getId())
-                                        .eq("start_date", sheet.getStartDate())
-                                        .eq("end_date", sheet.getEndDate()));
-                                if (cnt == 0) {
-                                    leaveSheetMapper.insert(sheet);
-                                }
+                            QueryWrapper<LeaveSheet> queryWrapper = new QueryWrapper<LeaveSheet>().eq("company_id", sheet.getCompanyId()).eq("procinst_id", sheet.getProcinstId()).ne("gmt_finished", sheet.getGmtFinished());
+                            int oldProIns = leaveSheetMapper.selectCount(queryWrapper);
+                            if (oldProIns > 0) {
+                                leaveSheetMapper.delete(queryWrapper);
+                            }
+                            int cnt = leaveSheetMapper.selectCount(new QueryWrapper<LeaveSheet>().eq("owner_id", user.getId())
+                                    .eq("start_date", sheet.getStartDate())
+                                    .eq("end_date", sheet.getEndDate()));
+                            if (cnt == 0) {
+                                leaveSheetMapper.insert(sheet);
                             }
                         }
                     }

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

@@ -2976,7 +2976,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
                 allReportByDate = dealDataList;
             }
-            System.out.println(allReportByDate);
             DecimalFormat df = new DecimalFormat("#0.0");
             for (Map<String, Object> map : allReportByDate) {
                 HSSFRow row = sheet.createRow(rowNum);
@@ -3063,13 +3062,20 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     index++;
                 }
                 if(timeType.getSyncCorpwxTime()==1){
-                    for (UserCorpwxTime userCorpwxTime : userCorpwxTimeList) {
-                        String s = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(userCorpwxTime.getCreateDate());
-                        String s1 = timeDf.format(map.get("createDate"));
-                        if(map.get("corpwxUserId").equals(userCorpwxTime.getCorpwxUserid())&&s.equals(s1)){
-                            row.createCell(index).setCellValue(userCorpwxTime.getStartTime()+"-"+userCorpwxTime.getEndTime()+",工作时长"+userCorpwxTime.getWorkHours());
+                    String cellValue = "";
+                    if (map.get("corpwxUserId") != null) {
+                        for (UserCorpwxTime userCorpwxTime : userCorpwxTimeList) {
+                            String s = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(userCorpwxTime.getCreateDate());
+                            String s1 = timeDf.format(map.get("createDate"));
+                            if(map.get("corpwxUserId").equals(userCorpwxTime.getCorpwxUserid())&&s.equals(s1)){
+                                cellValue = userCorpwxTime.getStartTime()+"-"+userCorpwxTime.getEndTime()+",工作时长"+userCorpwxTime.getWorkHours();
+                                break;
+                            }
                         }
+                    } else {
+
                     }
+                    row.createCell(index).setCellValue(cellValue);
                 }
                 rowNum++;
             }

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

@@ -22,6 +22,7 @@
         <result column="indate" property="indate" />
         <result column="is_linked" property="isLinked" />
         <result column="procinst_id" property="procinstId" />
+        <result column="gmt_finished" property="gmtFinished" />
     </resultMap>
     <resultMap id="BaseResultMap1" type="com.management.platform.entity.BusinessTrip">
         <result column="owner_id" property="ownerId" />
@@ -31,7 +32,7 @@
     </resultMap>
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, company_id, owner_id, owner_name, reason, start_date, end_date, way, city_from, city_to, go_back, day_count, remark, status, deny_reason, indate, is_linked, procinst_id
+        id, company_id, owner_id, owner_name, reason, start_date, end_date, way, city_from, city_to, go_back, day_count, remark, status, deny_reason, indate, is_linked, procinst_id, gmt_finished
     </sql>
     <select id="summaryData"  resultMap="BaseResultMap1">
         select owner_id, owner_name, sum(day_count) as day_count, department.department_name as department_name from business_trip

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

@@ -11,11 +11,12 @@
         <result column="manager_id" property="managerId" />
         <result column="report_audit_userid" property="reportAuditUserid" />
         <result column="corpwx_deptid" property="corpwxDeptid" />
+        <result column="corpwx_deptpid" property="corpwxDeptpid" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        department_id, department_name, superior_id, company_id, manager_id, report_audit_userid, corpwx_deptid
+        department_id, department_name, superior_id, company_id, manager_id, report_audit_userid, corpwx_deptid, corpwx_deptpid
     </sql>
 
     <!--根据部门获取成本-->

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

@@ -25,11 +25,12 @@
         <result column="is_final_audit" property="isFinalAudit" />
         <result column="auditor_type" property="auditorType" />
         <result column="procinst_id" property="procinstId" />
+        <result column="gmt_finished" property="gmtFinished" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, company_id, owner_id, owner_name, start_date, end_date, leave_type, status, remark, operator_id, time_hours, time_days, indate, time_type, tel, auditor_id, auditor_name, audit_deptid, is_final_audit, auditor_type, procinst_id
+        id, company_id, owner_id, owner_name, start_date, end_date, leave_type, status, remark, operator_id, time_hours, time_days, indate, time_type, tel, auditor_id, auditor_name, audit_deptid, is_final_audit, auditor_type, procinst_id, gmt_finished
     </sql>
     <select id="summaryData"  resultMap="BaseResultMap">
         select owner_id, owner_name, sum(time_hours) as time_hours, sum(time_days) as time_days from leave_sheet

+ 5 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/controller/CompanyController.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.management.platform.entity.Company;
 import com.management.platform.entity.CompanyDingding;
+import com.management.platform.entity.TimeType;
 import com.management.platform.entity.WxCorpInfo;
 import com.management.platform.mapper.CompanyDingdingMapper;
 import com.management.platform.mapper.CompanyMapper;
@@ -131,6 +132,10 @@ public class CompanyController {
     public HttpRespMsg setPackageList(Company company) {
         return companyService.setPackageList(company);
     }
+    @RequestMapping("/setTimeTypeSetting")
+    public HttpRespMsg setTimeTypeSetting(TimeType timeType) {
+        return companyService.setTimeTypeSetting(timeType);
+    }
 
     @RequestMapping("/syncDindDingMembs")
     public HttpRespMsg syncDingDingMembs(String corpid) {

+ 37 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/controller/TimeTypeController.java

@@ -0,0 +1,37 @@
+package com.management.platform.controller;
+
+
+import com.management.platform.mapper.TimeTypeMapper;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-15
+ */
+@RestController
+@RequestMapping("/time-type")
+public class TimeTypeController {
+    @Resource
+    TimeTypeMapper timeTypeMapper;
+
+    /**
+     * 获取企业列表,显示到期时间
+     * @return
+     */
+    @RequestMapping("get")
+    public HttpRespMsg get(Integer companyId) {
+        HttpRespMsg msg = new HttpRespMsg();
+        msg.data = timeTypeMapper.selectById(companyId);
+        return msg;
+    }
+}
+

+ 8 - 1
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/Company.java

@@ -19,7 +19,7 @@ import org.springframework.format.annotation.DateTimeFormat;
  * </p>
  *
  * @author Seyason
- * @since 2022-04-01
+ * @since 2022-07-15
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -127,6 +127,13 @@ public class Company extends Model<Company> {
     @TableField(exist = false)
     private String dingdingCorpid;
 
+    /**
+     * 供应商模块
+     */
+    @TableField("package_provider")
+    private Integer packageProvider;
+
+
     @Override
     protected Serializable pkVal() {
         return this.id;

+ 122 - 2
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 2022-03-22
+ * @since 2022-07-15
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -91,7 +91,7 @@ public class TimeType extends Model<TimeType> {
     private Integer fixMonthcost;
 
     /**
-     * 可补填几个月的, 0-不限制,1-本月,2-上个月,3-上上月
+     * 可补填几个月的, 0-不限制,1-本月,2-上个月,3-上上月,4- 7天内 ,5- 前一天
      */
     @TableField("fill_months")
     private Integer fillMonths;
@@ -108,6 +108,12 @@ public class TimeType extends Model<TimeType> {
     @TableField("custom_degree_name")
     private String customDegreeName;
 
+    /**
+     * 工时填报自定义维度是否必填 0-否 1-是
+     */
+    @TableField("custom_degree_status")
+    private Integer customDegreeStatus;
+
     /**
      * 提醒内容
      */
@@ -144,12 +150,126 @@ public class TimeType extends Model<TimeType> {
     @TableField("custom_data_name")
     private String customDataName;
 
+    /**
+     * 工时填报数值收集字段是否必填 0-否 1-是
+     */
+    @TableField("custom_data_status")
+    private Integer customDataStatus;
+
     /**
      * 财务成本导入是否需要审核
      */
     @TableField("finance_audit")
     private Integer financeAudit;
 
+    /**
+     * 加班倍数
+     */
+    @TableField("overtime_ratio")
+    private Double overtimeRatio;
+
+    /**
+     * 是否同步钉钉考勤打卡和出差
+     */
+    @TableField("sync_dingding")
+    private Integer syncDingding;
+
+    /**
+     * 是否是药研行业
+     */
+    @TableField("is_cro")
+    private Integer isCro;
+
+    /**
+     * 只使用导入功能,不要项目审核
+     */
+    @TableField("only_importreport")
+    private Integer onlyImportreport;
+
+    /**
+     * 填写日报显示钉钉打卡时长
+     */
+    @TableField("show_dd_cardtime")
+    private Integer showDdCardtime;
+
+    /**
+     * 填写日报显示企业微信打卡时长
+     */
+    @TableField("show_corpwx_cardtime")
+    private Integer showCorpwxCardtime;
+
+    /**
+     * 自定义文本信息是否开启
+     */
+    @TableField("custom_text_active")
+    private Integer customTextActive;
+
+    /**
+     * 自定义文本信息字段名称
+     */
+    @TableField("custom_text_name")
+    private String customTextName;
+
+    /**
+     * 自定义文本信息是否必填 0-否 1-是
+     */
+    @TableField("custom_text_status")
+    private Integer customTextStatus;
+
+    /**
+     * 是否锁定每日填报时长
+     */
+    @TableField("lock_worktime")
+    private Integer lockWorktime;
+
+    /**
+     * 填报是否填报加班
+     */
+    @TableField("fill_overtime")
+    private Integer fillOvertime;
+
+    /**
+     * 是否显示填报和审核的时间
+     */
+    @TableField("show_fillaudit_time")
+    private Integer showFillauditTime;
+
+    /**
+     * 是否秘薪处理,即任何人的薪资都显示*
+     */
+    @TableField("is_secret_salary")
+    private Integer isSecretSalary;
+
+    /**
+     * 0-每日提醒当天漏填 1-每日提醒昨天漏填
+     */
+    @TableField("alert_type")
+    private Integer alertType;
+
+    /**
+     * 0-工作内容非必填 1-工作内容必填
+     */
+    @TableField("work_content_state")
+    private Integer workContentState;
+
+    /**
+     * 0-不可提前填报 1-可提前填报
+     */
+    @TableField("fill_ahead")
+    private Integer fillAhead;
+
+    /**
+     * 0-当天 1-第二天 2-第三天
+     */
+    @TableField("timeliness")
+    private Integer timeliness;
+
+    /**
+     * 0-未开启 1-开启
+     */
+    @TableField("main_project_state")
+    private Integer mainProjectState;
+
 
     @Override
     protected Serializable pkVal() {

+ 3 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/CompanyService.java

@@ -2,6 +2,7 @@ package com.management.platform.service;
 
 import com.management.platform.entity.Company;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.entity.TimeType;
 import com.management.platform.util.HttpRespMsg;
 
 import javax.servlet.http.HttpServletRequest;
@@ -25,4 +26,6 @@ public interface CompanyService extends IService<Company> {
     HttpRespMsg setPackageList(Company company);
 
     HttpRespMsg dataMigration(HttpServletRequest request,Integer oldCompanyId, Integer targetCompanyId,String oldUserName,String targetUserName);
+
+    HttpRespMsg setTimeTypeSetting(TimeType timeType);
 }

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

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

+ 110 - 23
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/impl/CompanyServiceImpl.java

@@ -8,6 +8,7 @@ import com.management.platform.mapper.*;
 import com.management.platform.service.*;
 import com.management.platform.util.HttpRespMsg;
 import com.mysql.cj.util.StringUtils;
+import org.apache.commons.beanutils.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -33,6 +34,8 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
     @Resource
     CompanyMapper companyMapper;
     @Resource
+    TimeTypeMapper timeTypeMapper;
+    @Resource
     OperationLogMapper operationLogMapper;
     @Resource
     HttpServletRequest request;
@@ -106,32 +109,21 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
 
     @Override
     public HttpRespMsg setPackageList(Company company) {
-        Company newCompany = new Company();
-        newCompany.setId(company.getId());
-        newCompany.setPackageExpense(company.getPackageExpense());
-        newCompany.setPackageCustomer(company.getPackageCustomer());
-        newCompany.setPackageProject(company.getPackageProject());
-        newCompany.setPackageEngineering(company.getPackageEngineering());
-        newCompany.setPackageSimple(company.getPackageSimple());
-        newCompany.setPackageContract(company.getPackageContract());
-        newCompany.setPackageEtimecard(company.getPackageEtimecard());
-        newCompany.setPackageOa(company.getPackageOa());
-        newCompany.setPackageFinance(company.getPackageFinance());
-        newCompany.setPackageWorktime(company.getPackageWorktime());
-        companyMapper.updateById(newCompany);
+        companyMapper.updateById(company);
         String str = "变更了使用版本:";
-        if (newCompany.getPackageWorktime()==1) {
+        if (company.getPackageWorktime()==1) {
             str += "工时+";
         }
-        if (newCompany.getPackageProject() == 1) str += "项目协同+";
-        if (newCompany.getPackageOa() == 1) str += "OA+";
-        if (newCompany.getPackageExpense() == 1) str += "费用报销+";
-        if (newCompany.getPackageCustomer() == 1) str += "客户管理+";
-        if (newCompany.getPackageContract() == 1) str += "合同管理+";
-        if (newCompany.getPackageEngineering() == 1) str += "建筑工程+";
-        if (newCompany.getPackageEtimecard()== 1) str += "生产车间+";
-        if (newCompany.getPackageFinance() == 1) str += "财务核算+";
-        if (newCompany.getPackageSimple()== 1) str += "Excel简易版+";
+        if (company.getPackageProject() == 1) str += "项目协同+";
+        if (company.getPackageOa() == 1) str += "OA+";
+        if (company.getPackageExpense() == 1) str += "费用报销+";
+        if (company.getPackageCustomer() == 1) str += "客户管理+";
+        if (company.getPackageContract() == 1) str += "合同管理+";
+        if (company.getPackageEngineering() == 1) str += "建筑工程+";
+        if (company.getPackageEtimecard()== 1) str += "生产车间+";
+        if (company.getPackageFinance() == 1) str += "财务核算+";
+        if (company.getPackageSimple()== 1) str += "Excel简易版+";
+        if (company.getPackageProvider()== 1) str += "供应商+";
         saveLog(str);
         return new HttpRespMsg();
     }
@@ -293,4 +285,99 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
         }
         return msg;
     }
+
+    @Override
+    public HttpRespMsg setTimeTypeSetting(TimeType timeType) {
+        TimeType old = timeTypeMapper.selectById(timeType.getCompanyId());
+        timeTypeMapper.updateById(timeType);
+        Company company = companyMapper.selectById(timeType.getCompanyId());
+        String name = company.getCompanyName();
+        String str = "设置["+name+"],";
+        if (timeType.getSyncCorpwxTime() != null && old.getSyncCorpwxTime().intValue() != timeType.getSyncCorpwxTime().intValue()) {
+            if (timeType.getSyncCorpwxTime() == 0) {
+                str += "关闭了企业微信考勤同步,";
+            } else if (timeType.getSyncCorpwxTime() == 1) {
+                str += "启用了企业微信考勤同步,";
+            }
+        }
+        if (timeType.getSyncDingding() != null && old.getSyncDingding().intValue() != timeType.getSyncDingding().intValue()) {
+            if (timeType.getSyncDingding() == 0) {
+                str += "关闭了钉钉考勤同步,";
+            } else if (timeType.getSyncDingding() == 1) {
+                str += "启用了钉钉考勤同步,";
+            }
+        }
+        if (timeType.getShowCorpwxCardtime() != null && old.getShowCorpwxCardtime().intValue() != timeType.getShowCorpwxCardtime().intValue()) {
+            if (timeType.getShowCorpwxCardtime() == 0) {
+                str += "关闭了显示打卡时长,";
+            } else if (timeType.getShowCorpwxCardtime() == 1) {
+                str += "启用了显示打卡时长,";
+            }
+        }
+        if (timeType.getShowDdCardtime() != null && old.getShowDdCardtime().intValue() != timeType.getShowDdCardtime().intValue()) {
+            if (timeType.getShowDdCardtime() == 0) {
+                str += "关闭了显示打卡时长,";
+            } else if (timeType.getShowDdCardtime() == 1) {
+                str += "启用了显示打卡时长,";
+            }
+        }
+        if (timeType.getShowDdCardtime() != null && old.getShowDdCardtime().intValue() != timeType.getShowDdCardtime().intValue()) {
+            if (timeType.getShowDdCardtime() == 0) {
+                str += "关闭了显示打卡时长,";
+            } else if (timeType.getShowDdCardtime() == 1) {
+                str += "启用了显示打卡时长,";
+            }
+        }
+        if (timeType.getShowFillauditTime() != null && old.getShowFillauditTime().intValue() != timeType.getShowFillauditTime().intValue()) {
+            if (timeType.getShowFillauditTime() == 0) {
+                str += "关闭了显示日报审核流程,";
+            } else if (timeType.getShowFillauditTime() == 1) {
+                str += "启用了显示日报审核流程,";
+            }
+        }
+        if (timeType.getIsSecretSalary() != null && old.getIsSecretSalary().intValue() != timeType.getIsSecretSalary().intValue()) {
+            if (timeType.getIsSecretSalary() == 0) {
+                str += "关闭了秘薪设置,";
+            } else if (timeType.getIsSecretSalary() == 1) {
+                str += "启用了秘薪设置,";
+            }
+        }
+        if (timeType.getMainProjectState() != null && old.getMainProjectState().intValue() != timeType.getMainProjectState().intValue()) {
+            if (timeType.getMainProjectState() == 0) {
+                str += "关闭了主项目设置,";
+            } else if (timeType.getMainProjectState() == 1) {
+                str += "启用了主项目设置,";
+            }
+        }
+        if (timeType.getOnlyImportreport() != null && old.getOnlyImportreport().intValue() != timeType.getOnlyImportreport().intValue()) {
+            if (timeType.getOnlyImportreport() == 0) {
+                str += "关闭了仅导入审核,";
+            } else if (timeType.getOnlyImportreport() == 1) {
+                str += "启用了仅导入审核,";
+            }
+        }
+        if (timeType.getFinanceAudit() != null && old.getFinanceAudit().intValue() != timeType.getFinanceAudit().intValue()) {
+            if (timeType.getFinanceAudit() == 0) {
+                str += "关闭了财务薪资导入审核功能,";
+            } else if (timeType.getFinanceAudit() == 1) {
+                str += "启用了财务薪资导入审核功能,";
+            }
+        }
+        if (timeType.getReportWorkflow() != null && old.getReportWorkflow().intValue() != timeType.getReportWorkflow().intValue()) {
+            if (timeType.getReportWorkflow() == 0) {
+                str += "关闭了审批流设置功能,";
+            } else if (timeType.getReportWorkflow() == 1) {
+                str += "启用了审批流设置功能,";
+            }
+        }
+        if (timeType.getIsCro() != null && old.getIsCro().intValue() != timeType.getIsCro().intValue()) {
+            if (timeType.getIsCro() == 0) {
+                str += "取消CRO企业,";
+            } else if (timeType.getIsCro() == 1) {
+                str += "标志为CRO企业,";
+            }
+        }
+        saveLog(str);
+        return new HttpRespMsg();
+    }
 }

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

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.TimeType;
+import com.management.platform.mapper.TimeTypeMapper;
+import com.management.platform.service.TimeTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-15
+ */
+@Service
+public class TimeTypeServiceImpl extends ServiceImpl<TimeTypeMapper, TimeType> implements TimeTypeService {
+
+}

+ 1 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/resources/application.yml

@@ -105,6 +105,7 @@ referer:
     - localhost
     - ttkuaiban.com
     - ops.ttkuaiban.com
+    - 47.101.180.183
 excludeUrls: /wxcorp/*,/wxcorp/*/*,/dingding/*,/error,/testClient,/corpWXAuth,/wx-corp-info/*,/clean/*,/innerRoles/*
 syncDDMembUrl: http://worktime.ttkuaiban.com/api/dingding/syncCorpMembs
 

+ 2 - 1
fhKeeper/formulahousekeeper/ops-platform/src/main/resources/mapper/CompanyMapper.xml

@@ -19,11 +19,12 @@
         <result column="package_engineering" property="packageEngineering" />
         <result column="package_simple" property="packageSimple" />
         <result column="package_finance" property="packageFinance" />
+        <result column="package_provider" property="packageProvider" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, company_name, staff_count_max, expiration_date, set_meal, package_worktime, package_project, package_contract, package_oa, package_etimecard, package_expense, package_customer, package_engineering, package_simple, package_finance
+        id, company_name, staff_count_max, expiration_date, set_meal, package_worktime, package_project, package_contract, package_oa, package_etimecard, package_expense, package_customer, package_engineering, package_simple, package_finance, package_provider
     </sql>
 
 </mapper>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 21 - 1
fhKeeper/formulahousekeeper/ops-platform/src/main/resources/mapper/TimeTypeMapper.xml


+ 2 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue

@@ -2808,8 +2808,8 @@ import delete$ from 'dingtalk-jsapi/api/biz/cspace/delete';
                         delete this.addForm.subTaskList;
                         delete this.addForm.refTaskList;
                         delete this.addForm.progress;
-                        //去掉没有执行人的
-                        this.addForm.executorListFront = this.addForm.executorListFront.filter(exe=>exe.executorId);
+                        //去掉没有执行人的.(因为要有计划工时,执行人可以暂不设置)
+                        // this.addForm.executorListFront = this.addForm.executorListFront.filter(exe=>exe.executorId);
                         this.addForm.executorListStr = JSON.stringify(this.addForm.executorListFront);
                         this.addLoading = true;
                         this.http.post('/task/save',this.addForm,