zx 1 год назад
Родитель
Сommit
13c5c2c6a6
74 измененных файлов с 8827 добавлено и 24427 удалено
  1. 10 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserFvTimeController.java
  2. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java
  3. 7 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java
  4. 0 4
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/CompanyController.java
  5. 10 29
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdMaterialController.java
  6. 7 12
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdProcedureController.java
  7. 18 16
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProductController.java
  8. 0 21
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectAddcostItemController.java
  9. 0 56
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectAddcostRecordController.java
  10. 0 40
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectAuditorController.java
  11. 0 69
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectBasecostController.java
  12. 0 145
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectBasecostSettingController.java
  13. 0 125
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectCategoryController.java
  14. 0 1186
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectController.java
  15. 0 86
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectCurrentcostController.java
  16. 0 125
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectCustomController.java
  17. 0 21
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectDocfolderController.java
  18. 0 70
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectLevelController.java
  19. 0 66
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectMainController.java
  20. 0 74
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectNotifyUserController.java
  21. 0 50
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectPercentageController.java
  22. 0 91
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectStageController.java
  23. 0 152
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectTimerController.java
  24. 0 21
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectUserSalaryController.java
  25. 0 76
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProviderCategoryController.java
  26. 0 241
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProviderInfoController.java
  27. 0 21
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ReportAlogMembdateController.java
  28. 0 139
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ReportAuditLogController.java
  29. 0 21
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ReportAuditorSettingController.java
  30. 1388 1496
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ReportController.java
  31. 0 220
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ReportExtraDegreeController.java
  32. 0 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/SubProjectController.java
  33. 0 976
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/TaskController.java
  34. 0 649
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/UserCorpwxTimeController.java
  35. 5 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/WeiXinCorpController.java
  36. 6 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/ProdProcedure.java
  37. 41 262
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/Report.java
  38. 0 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/CompanyService.java
  39. 2 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProdMaterialService.java
  40. 1 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProdProcedureService.java
  41. 5 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProductService.java
  42. 0 22
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProjectMainService.java
  43. 0 239
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProjectService.java
  44. 83 81
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ReportService.java
  45. 0 136
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/CompanyServiceImpl.java
  46. 0 12
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java
  47. 5 12
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PlanServiceImpl.java
  48. 23 2
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProdMaterialServiceImpl.java
  49. 54 44
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProdProcedureServiceImpl.java
  50. 421 116
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java
  51. 0 109
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProjectMainServiceImpl.java
  52. 0 9846
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  53. 3292 3542
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  54. 6 19
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  55. 38 10
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java
  56. 18 914
      fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ReportMapper.xml
  57. 22 14
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/babel.config.js
  58. 90 2
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/package-lock.json
  59. 2 0
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/package.json
  60. 3 0
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/public/index.html
  61. 31 1
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/App.vue
  62. 75 0
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/assets/collapse.js
  63. 6 0
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/components/Element.js
  64. 225 0
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/components/chooseSomeone.vue
  65. 3 2
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/main.js
  66. 9 0
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/router/index.js
  67. 195 10
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/component/planComponent.vue
  68. 180 0
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/todayPlan/distribution.vue
  69. 22 5
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/todayPlan/todayPlan.vue
  70. 22 5
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/tomorrowPlan/tomorrowPlan.vue
  71. 39 1
      fhKeeper/formulahousekeeper/timesheet-workshop/src/views/plan/planComponent.vue
  72. 2387 2474
      fhKeeper/formulahousekeeper/timesheet-workshop/src/views/product/list.vue
  73. 5 86
      fhKeeper/formulahousekeeper/timesheet-workshop/src/views/team/index.vue
  74. 70 155
      fhKeeper/formulahousekeeper/timesheet-workshop/src/views/workReport/daily.vue

+ 10 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserFvTimeController.java

@@ -352,6 +352,7 @@ public class UserFvTimeController {
             }
         }
         List<UserFvTime> userFvTimeList=new ArrayList<>();
+        List<UserFvTime> userFvTimeUpdateList=new ArrayList<>();
         for (Map item : list) {
             Optional<User> user = userList.stream().filter(ul -> ul.getJobNumber() != null && ul.getJobNumber().equals(item.get("userId"))).findFirst();
             if(user.isPresent()){
@@ -367,8 +368,12 @@ public class UserFvTimeController {
                     bigDecimal=bigDecimal.subtract(new BigDecimal(1.5));
                 }
                 userFvTime.setWorkHours(bigDecimal.floatValue());
-                if(!allList.stream().anyMatch(al->al.getUserId().equals(user.get().getId())&&al.getWorkDate().equals(LocalDate.parse(String.valueOf(item.get("signDate")),date)))){
+                Optional<UserFvTime> first = allList.stream().filter(al -> al.getUserId().equals(user.get().getId()) && al.getWorkDate().equals(LocalDate.parse(String.valueOf(item.get("signDate")), date))).findFirst();
+                if(!first.isPresent()){
                     userFvTimeList.add(userFvTime);
+                }else {
+                    userFvTime.setId(first.get().getId());
+                    userFvTimeUpdateList.add(userFvTime);
                 }
             }
         }
@@ -376,6 +381,10 @@ public class UserFvTimeController {
             httpRespMsg.setError("验证失败");
             return httpRespMsg;
         }
+        if(!userFvTimeService.updateBatchById(userFvTimeUpdateList)){
+            httpRespMsg.setError("验证失败");
+            return httpRespMsg;
+        }
         User user = userMapper.selectById(request.getHeader("token"));
         TimeType timeType = timeTypeMapper.selectById(user.getCompanyId());
         List<UserFvTime> timeList = userFvTimeService.list(new QueryWrapper<UserFvTime>().between("work_date", startDate, endDate).eq("company_id", user.getCompanyId()).eq("user_id", user.getId()));

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

@@ -286,7 +286,7 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
             expenseItemService.saveBatch(itemList);
         }
 
-        if (isNew && auditSetting.getAuditType() != null && auditSetting.getAuditType() == 1) {
+        if (isNew && auditSetting != null && auditSetting.getAuditType() == 1) {
             //发送给项目经理审核
             List<Integer> collect = itemList.stream().map(ExpenseItem::getProjectId).collect(Collectors.toList());
             if (collect.size() > 0) {

+ 7 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -705,6 +705,7 @@ public class TimingTask {
                 }
             }
             List<UserFvTime> userFvTimeList=new ArrayList<>();
+            List<UserFvTime> userFvTimeUpdateList=new ArrayList<>();
             for (Map item : list) {
                 Optional<User> user = userList.stream().filter(ul -> ul.getJobNumber() != null && ul.getJobNumber().equals(item.get("userId"))).findFirst();
                 if(user.isPresent()){
@@ -718,12 +719,17 @@ public class TimingTask {
                     BigDecimal bigDecimal=new BigDecimal(between.toHours());
                     bigDecimal=bigDecimal.subtract(new BigDecimal(1.5));
                     userFvTime.setWorkHours(bigDecimal.floatValue());
-                    if(!allList.stream().anyMatch(al->al.getUserId().equals(user.get().getId())&&al.getWorkDate().equals(LocalDate.parse(String.valueOf(item.get("signDate")),date)))){
+                    Optional<UserFvTime> first = allList.stream().filter(al -> al.getUserId().equals(user.get().getId()) && al.getWorkDate().equals(LocalDate.parse(String.valueOf(item.get("signDate")), date))).findFirst();
+                    if(!first.isPresent()){
                         userFvTimeList.add(userFvTime);
+                    }else {
+                        userFvTime.setId(first.get().getId());
+                        userFvTimeUpdateList.add(userFvTime);
                     }
                 }
             }
             userFvTimeService.saveBatch(userFvTimeList);
+            userFvTimeService.updateBatchById(userFvTimeUpdateList);
         }
     }
 

+ 0 - 4
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/CompanyController.java

@@ -57,10 +57,6 @@ public class CompanyController {
         return msg;
     }
 
-    @RequestMapping("/dataMigration")
-    public HttpRespMsg dataMigration(Integer oldCompanyId,Integer targetCompanyId){
-       return companyService.dataMigration(oldCompanyId,targetCompanyId);
-    }
 
     @RequestMapping("/getSyncInfo")
     public HttpRespMsg getSyncInfo(){

+ 10 - 29
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdMaterialController.java

@@ -1,6 +1,7 @@
 package com.management.platform.controller;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.management.platform.entity.ProdMaterial;
 import com.management.platform.entity.ProdMaterial;
@@ -37,45 +38,25 @@ public class ProdMaterialController {
     private ProdMaterialService prodMaterialService;
 
     /**
-     * 获取产品的id物料列表
+     * 根据产品的id获取最新物料列表
      */
     @RequestMapping("/getProdMaterialList")
     public HttpRespMsg getProdMaterialList (@RequestParam Integer productId){
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        HashMap<String,Object> map=new HashMap<>();
-
-        List<String> versionList= (List<String>) prodMaterialService.getVersion(request,productId).getData();
-        List<ProdMaterial> prodMaterialList=new ArrayList<>();
-        if(versionList!=null&&versionList.size()>1){
-            HttpRespMsg info = prodMaterialService.getInfo(request, versionList.get(versionList.size() - 1), productId);
-            prodMaterialList= (List<ProdMaterial>) info.data;
-            map.put("version",versionList.get(versionList.size() - 1));
-        }else{
-            map.put("version","");
-        }
-
-        map.put("prodMaterialList",prodMaterialList);
-
-        httpRespMsg.data=map;
-        return httpRespMsg;
+
+       return prodMaterialService.getLastProdMaterialList(productId,request);
     }
 
     /**
-     * 新增、修改工序
+     * 新增、修改物料
      */
     @RequestMapping("/changeProdMaterial")
     public HttpRespMsg changeProdMaterial ( Integer productId ,String version,  String  prodMaterials){
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        ObjectMapper mapper = new ObjectMapper();
+
         List<ProdMaterial> prodMaterialList= null;
-        try {
-            prodMaterialList = Arrays.asList(mapper.readValue(prodMaterials, ProdMaterial[].class));
-            return prodMaterialService.changeProdMaterial(request, prodMaterialList,productId,version);
-        } catch (IOException e) {
-            httpRespMsg.setError("data is error");
-            e.printStackTrace();
-        }
-        return httpRespMsg;
+        prodMaterialList = Arrays.asList(JSONObject.parseObject(prodMaterials, ProdMaterial[].class));
+
+        return prodMaterialService.changeProdMaterial(request, prodMaterialList,productId,version);
+
     }
 
 

+ 7 - 12
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdProcedureController.java

@@ -1,6 +1,7 @@
 package com.management.platform.controller;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.management.platform.entity.ProdProcedure;
@@ -46,25 +47,19 @@ public class ProdProcedureController {
      * 新增、修改工序
      */
     @RequestMapping("/changeProdProcedure")
-    public HttpRespMsg changeProdProcedure ( Integer productId ,String version,  String  prodProcedures){
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        ObjectMapper mapper = new ObjectMapper();
+    public HttpRespMsg changeProdProcedure ( Integer productId ,String productName,String version, String  prodProcedures){
+
         List<ProdProcedure> prodProcedureList= null;
-        try {
-            prodProcedureList = Arrays.asList(mapper.readValue(prodProcedures, ProdProcedure[].class));
-            return prodProcedureService.changeProdProcedure(request, prodProcedureList,productId,version);
-        } catch (IOException e) {
-            httpRespMsg.setError("data is error");
-            e.printStackTrace();
-        }
-        return httpRespMsg;
+        prodProcedureList =Arrays.asList(JSONObject.parseObject(prodProcedures,ProdProcedure[].class));
+
+        return prodProcedureService.changeProdProcedure(request, prodProcedureList,productId,productName,version);
     }
 
 
     /**
      * 是否可删除工序
      * 查看该工序有没有被使用(计划中)
-     * TODO
+     * todo
      */
     @RequestMapping("/isDelete")
     public HttpRespMsg isDeleteProdProcedure (Integer id){

+ 18 - 16
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProductController.java

@@ -6,10 +6,8 @@ import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.PlanService;
 import com.management.platform.service.ProductService;
 import com.management.platform.util.HttpRespMsg;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
@@ -71,26 +69,30 @@ public class ProductController {
     }
 
     /**
-     * todo
-     * @param file
+     *
+     * @param
      * @return
      */
-    @RequestMapping("/importData")
-    public HttpRespMsg importData(MultipartFile file,Integer categoryId){
+    @RequestMapping(value = "/importData",method = RequestMethod.POST)
+    public HttpRespMsg importData(@RequestParam("file") MultipartFile file,@RequestParam Integer categoryId){
         return productService.importData(file,categoryId,request);
     }
 
 
+    @RequestMapping("/exportData")
+    public HttpRespMsg exportData(String date,Integer productType){
+        return productService.exportData(date,productType);
+    }
 
- /*   *//**
-     * todo
-     * @param date
-     * @param planType
+    /**
+     * 新增产品和对应的工序列表
+     * @param
      * @return
-     *//*
-    @RequestMapping("/exportData")
-    public HttpRespMsg exportData(String date,Integer planType){
-        return productService.exportData(date,planType);
-    }*/
+     */
+    @RequestMapping(value = "copyProductInfo")
+    public HttpRespMsg insertProductInfo(String name,Integer id){
+
+        return productService.insertProductInfo(name,id,request);
+    }
 }
 

+ 0 - 21
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectAddcostItemController.java

@@ -1,21 +0,0 @@
-package com.management.platform.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2022-05-07
- */
-@RestController
-@RequestMapping("/project-addcost-item")
-public class ProjectAddcostItemController {
-
-}
-

+ 0 - 56
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectAddcostRecordController.java

@@ -1,56 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.management.platform.entity.ProjectAddcostRecord;
-import com.management.platform.service.ProjectAddcostRecordService;
-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-05-07
- */
-@RestController
-@RequestMapping("/project-addcost-record")
-public class ProjectAddcostRecordController {
-    @Resource
-    ProjectAddcostRecordService projectAddcostRecordService;
-
-    /**
-     * 下拨预算
-     * @param item
-     * @param itemList
-     * @return
-     */
-    @RequestMapping("/add")
-    public HttpRespMsg add(ProjectAddcostRecord item, String itemList) {
-        return projectAddcostRecordService.add(item, itemList);
-    }
-
-    /**
-     * 撤销下拨
-     * @param id
-     * @return
-     */
-    @RequestMapping("/revert")
-    public HttpRespMsg revert(Integer id) {
-        return projectAddcostRecordService.revert(id);
-    }
-
-    /**
-     *
-     */
-    @RequestMapping("/getAddList")
-    public HttpRespMsg getAddList(Integer companyId, Integer projectId) {
-        return projectAddcostRecordService.getAddList(companyId, projectId);
-    }
-}
-

+ 0 - 40
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectAuditorController.java

@@ -1,40 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.ProjectAuditor;
-import com.management.platform.mapper.ProjectAuditorMapper;
-import com.management.platform.service.ProjectAuditorService;
-import com.management.platform.util.HttpRespMsg;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2022-03-13
- */
-@RestController
-@RequestMapping("/project-auditor")
-public class ProjectAuditorController {
-
-    @Resource
-    private ProjectAuditorMapper projectAuditorMapper;
-
-    @RequestMapping("/getList")
-    private HttpRespMsg getList(Integer projectId) {
-        List<ProjectAuditor> auditorList = projectAuditorMapper.selectList(new QueryWrapper<ProjectAuditor>().eq("project_id", projectId));
-        HttpRespMsg msg = new HttpRespMsg();
-        msg.data = auditorList;
-        return msg;
-    }
-}
-

+ 0 - 69
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectBasecostController.java

@@ -1,69 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.ProjectBasecost;
-import com.management.platform.entity.ProjectBasecostSetting;
-import com.management.platform.entity.User;
-import com.management.platform.mapper.ProjectBasecostMapper;
-import com.management.platform.mapper.ProjectBasecostSettingMapper;
-import com.management.platform.mapper.UserMapper;
-import com.management.platform.util.HttpRespMsg;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2021-08-02
- */
-@RestController
-@RequestMapping("/project-basecost")
-public class ProjectBasecostController {
-
-    @Resource
-    ProjectBasecostMapper projectBasecostMapper;
-    @Resource
-    ProjectBasecostSettingMapper projectBasecostSettingMapper;
-    @Resource
-    UserMapper userMapper;
-    @Resource
-    HttpServletRequest request;
-
-    @RequestMapping("/get")
-    public HttpRespMsg get(Integer projectId) {
-        HttpRespMsg msg = new HttpRespMsg();
-        List<ProjectBasecost> list = projectBasecostMapper.selectList(new QueryWrapper<ProjectBasecost>().eq("project_id", projectId));
-        //检查最新的字段是否有
-        User user = userMapper.selectById(request.getHeader("TOKEN"));
-        List<ProjectBasecostSetting> allSettings = projectBasecostSettingMapper.selectList(new QueryWrapper<ProjectBasecostSetting>().eq("company_id", user.getCompanyId()));
-        List<ProjectBasecost> additionalList = new ArrayList<>();
-        allSettings.forEach(all->{
-            if (!list.stream().filter(costItem->costItem.getBaseId().equals(all.getId())).findAny().isPresent()) {
-                ProjectBasecost add = new ProjectBasecost();
-                add.setBaseName(all.getName());
-                add.setBaseId(all.getId());
-                add.setProjectId(projectId);
-                add.setBaseAmount(0.0);
-                additionalList.add(add);
-            }
-        });
-        if (additionalList.size() > 0) {
-            list.addAll(additionalList);
-        }
-        msg.data = list;
-        return msg;
-    }
-
-
-}
-

+ 0 - 145
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectBasecostSettingController.java

@@ -1,145 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.constant.Constant;
-import com.management.platform.entity.ProjectAddcostItem;
-import com.management.platform.entity.ProjectBasecost;
-import com.management.platform.entity.ProjectBasecostSetting;
-import com.management.platform.entity.ProjectCurrentcost;
-import com.management.platform.mapper.*;
-import com.management.platform.util.HttpRespMsg;
-import com.management.platform.util.MessageUtils;
-import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2021-08-02
- */
-@RestController
-@RequestMapping("/project-basecost-setting")
-public class ProjectBasecostSettingController {
-    @Resource
-    private HttpServletRequest request;
-    @Resource
-    UserMapper userMapper;
-    @Resource
-    ProjectBasecostSettingMapper projectBasecostSettingMapper;
-
-    @Resource
-    ProjectBasecostMapper projectBasecostMapper;
-    @Resource
-    ProjectAddcostItemMapper projectAddcostItemMapper;
-    @Resource
-    ProjectCurrentcostMapper projectCurrentcostMapper;
-
-    @RequestMapping("/addOrMod")
-    public HttpRespMsg addOrMod(ProjectBasecostSetting setting) {
-        HttpRespMsg msg = new HttpRespMsg();
-        if (StringUtils.isEmpty(setting.getName())) {
-            //msg.setError("名称不能为空");
-            msg.setError(MessageUtils.message("name.nullNameError"));
-            return msg;
-        }
-        Integer companyId = userMapper.selectById(request.getHeader("TOKEN")).getCompanyId();
-        if (setting.getId() == null) {
-            setting.setCompanyId(companyId);
-            int count = projectBasecostSettingMapper.selectCount(new QueryWrapper<ProjectBasecostSetting>().eq("name", setting.getName()).eq("company_id", setting.getCompanyId()));
-            if (count > 0) {
-                //msg.setError("该名称已存在");
-                msg.setError(MessageUtils.message("name.nameRepeat"));
-            } else {
-                projectBasecostSettingMapper.insert(setting);
-                msg.data = projectBasecostSettingMapper.selectList(new QueryWrapper<ProjectBasecostSetting>().eq("company_id", companyId));
-            }
-        } else {
-            int count = projectBasecostSettingMapper.selectCount(new QueryWrapper<ProjectBasecostSetting>().eq("name", setting.getName())
-                    .eq("company_id", companyId).ne("id", setting.getId()));
-            if (count > 0) {
-                //msg.setError("该名称已存在");
-                msg.setError(MessageUtils.message("name.nameRepeat"));
-            } else {
-                //检查名称是否有变化
-                ProjectBasecostSetting oldSetting = projectBasecostSettingMapper.selectById(setting.getId());
-                if (!setting.getName().equals(oldSetting.getName()) || !setting.getAlarmType().equals(oldSetting.getAlarmType())) {
-                    projectBasecostSettingMapper.updateById(setting);
-                    if (!setting.getName().equals(oldSetting.getName())) {
-                        //名称发生变化了,要更新关联表
-                        ProjectBasecost cost = new ProjectBasecost();
-                        cost.setBaseName(setting.getName());
-                        projectBasecostMapper.update(cost, new QueryWrapper<ProjectBasecost>().eq("base_id", setting.getId()));
-                        ProjectAddcostItem addItem = new ProjectAddcostItem();
-                        addItem.setBaseName(setting.getName());
-                        projectAddcostItemMapper.update(addItem, new QueryWrapper<ProjectAddcostItem>().eq("base_id", setting.getId()));
-                        ProjectCurrentcost currentcost = new ProjectCurrentcost();
-                        currentcost.setBaseName(setting.getName());
-                        projectCurrentcostMapper.update(currentcost, new QueryWrapper<ProjectCurrentcost>().eq("base_id", setting.getId()));
-                    }
-                }
-                msg.data = projectBasecostSettingMapper.selectList(new QueryWrapper<ProjectBasecostSetting>().eq("company_id", companyId));
-            }
-        }
-
-        return msg;
-    }
-
-    @RequestMapping("/list")
-    public HttpRespMsg list() {
-        HttpRespMsg msg = new HttpRespMsg();
-
-        Integer companyId = userMapper.selectById(request.getHeader("TOKEN")).getCompanyId();
-        List<ProjectBasecostSetting> list = projectBasecostSettingMapper.selectList(new QueryWrapper<ProjectBasecostSetting>().eq("company_id", companyId));
-        if (list.size() == 0) {
-            //生成项目的成本基线默认条目
-            String[] array = Constant.DEFAULT_BASE_COST_ITEMS;
-            for (String baseItem : array) {
-                ProjectBasecostSetting setting = new ProjectBasecostSetting();
-                setting.setName(baseItem);
-                setting.setCompanyId(companyId);
-                projectBasecostSettingMapper.insert(setting);
-            }
-            list = projectBasecostSettingMapper.selectList(new QueryWrapper<ProjectBasecostSetting>().eq("company_id", companyId));
-        }
-        msg.data = list;
-
-        return msg;
-    }
-
-    @RequestMapping("/delete")
-    public HttpRespMsg delete(Integer id) {
-        HttpRespMsg msg = new HttpRespMsg();
-        ProjectBasecostSetting projectBasecostSetting = projectBasecostSettingMapper.selectById(id);
-        Integer companyId = userMapper.selectById(request.getHeader("TOKEN")).getCompanyId();
-        if (!projectBasecostSetting.getCompanyId().equals(companyId)) {
-            //msg.setError("无权操作");
-            msg.setError(MessageUtils.message("access.operationError"));
-        } else {
-            projectBasecostSettingMapper.deleteById(id);
-        }
-
-        return msg;
-    }
-
-
-    @RequestMapping("/getReportBasecostList")
-    public HttpRespMsg getReportBasecostList(Integer companyId) {
-        //返回公司的项目工时预警的成本项列表
-        HttpRespMsg msg = new HttpRespMsg();
-        List<ProjectBasecostSetting> timeBasecostList = projectBasecostSettingMapper.selectList(new QueryWrapper<ProjectBasecostSetting>().eq("company_id", companyId).eq("alarm_type", 1));
-        msg.data = timeBasecostList;
-        return msg;
-    }
-
-}
-

+ 0 - 125
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectCategoryController.java

@@ -1,125 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.Project;
-import com.management.platform.entity.ProjectCategory;
-import com.management.platform.entity.ProjectMain;
-import com.management.platform.mapper.ProjectCategoryMapper;
-import com.management.platform.mapper.ProjectMainMapper;
-import com.management.platform.mapper.ProjectMapper;
-import com.management.platform.mapper.UserMapper;
-import com.management.platform.util.HttpRespMsg;
-import com.management.platform.util.MessageUtils;
-import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2022-03-24
- */
-@RestController
-@RequestMapping("/project-category")
-public class ProjectCategoryController {
-
-    @Resource
-    private HttpServletRequest request;
-    @Resource
-    UserMapper userMapper;
-    @Resource
-    ProjectCategoryMapper projectCategoryMapper;
-    @Resource
-    ProjectMainMapper projectMainMapper;
-
-    @Resource
-    ProjectMapper projectMapper;
-
-    @RequestMapping("/addOrMod")
-    public HttpRespMsg addOrMod(ProjectCategory setting) {
-        HttpRespMsg msg = new HttpRespMsg();
-        if (StringUtils.isEmpty(setting.getName())) {
-            //msg.setError("名称不能为空");
-            msg.setError(MessageUtils.message("name.nullNameError"));
-            return msg;
-        }
-        Integer companyId = userMapper.selectById(request.getHeader("TOKEN")).getCompanyId();
-        if (setting.getId() == null) {
-            setting.setCompanyId(companyId);
-            int count = projectCategoryMapper.selectCount(new QueryWrapper<ProjectCategory>().eq("name", setting.getName()).eq("company_id", setting.getCompanyId()));
-            if (count > 0) {
-                //msg.setError("该名称已存在");
-                msg.setError(MessageUtils.message("name.nameRepeat"));
-            } else {
-                projectCategoryMapper.insert(setting);
-                msg.data = projectCategoryMapper.selectList(new QueryWrapper<ProjectCategory>().eq("company_id", companyId));
-            }
-        } else {
-            int count = projectCategoryMapper.selectCount(new QueryWrapper<ProjectCategory>().eq("name", setting.getName())
-                    .eq("company_id", companyId).ne("id", setting.getId()));
-            if (count > 0) {
-                //msg.setError("该名称已存在");
-                msg.setError(MessageUtils.message("name.nameRepeat"));
-            } else {
-                //检查名称是否有变化
-                ProjectCategory oldSetting = projectCategoryMapper.selectById(setting.getId());
-                if ((!setting.getName().equals(oldSetting.getName()))||(!setting.getProBuAudit().equals(oldSetting.getProBuAudit()))||(!setting.getProInchargerAudit().equals(oldSetting.getProInchargerAudit()))) {
-                    projectCategoryMapper.updateById(setting);
-                    Project cost = new Project();
-                    cost.setCategoryName(setting.getName());
-                    projectMapper.update(cost, new QueryWrapper<Project>().eq("category", setting.getId()));
-                }
-                msg.data = projectCategoryMapper.selectList(new QueryWrapper<ProjectCategory>().eq("company_id", companyId));
-            }
-        }
-
-        return msg;
-    }
-
-    @RequestMapping("/list")
-    public HttpRespMsg list() {
-        HttpRespMsg msg = new HttpRespMsg();
-
-        Integer companyId = userMapper.selectById(request.getHeader("TOKEN")).getCompanyId();
-        List<ProjectCategory> list = projectCategoryMapper.selectList(new QueryWrapper<ProjectCategory>().eq("company_id", companyId));
-        msg.data = list;
-
-        return msg;
-    }
-
-    @RequestMapping("/delete")
-    public HttpRespMsg delete(Integer id) {
-        HttpRespMsg msg = new HttpRespMsg();
-        ProjectCategory ProjectCategory = projectCategoryMapper.selectById(id);
-        Integer companyId = userMapper.selectById(request.getHeader("TOKEN")).getCompanyId();
-        Integer cut = projectMapper.selectCount(new QueryWrapper<Project>().eq("category", id));
-        Integer cnt = projectMainMapper.selectCount(new QueryWrapper<ProjectMain>().eq("category_id", id));
-        if(cut>0){
-            //msg.setError("删除失败,已绑定项目");
-            msg.setError(MessageUtils.message("project.deleteErrorByProject"));
-            return msg;
-        }
-        if(cnt>0){
-            //msg.setError("删除失败,已绑定主项目");
-            msg.setError(MessageUtils.message("project.deleteErrorByMaster"));
-            return msg;
-        }
-        if (!ProjectCategory.getCompanyId().equals(companyId)) {
-            //msg.setError("无权操作");
-            msg.setError(MessageUtils.message("access.operationError"));
-        } else {
-            projectCategoryMapper.deleteById(id);
-        }
-        return msg;
-    }
-
-}
-

Разница между файлами не показана из-за своего большого размера
+ 0 - 1186
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectController.java


+ 0 - 86
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectCurrentcostController.java

@@ -1,86 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.ProjectBasecostSetting;
-import com.management.platform.entity.ProjectCurrentcost;
-import com.management.platform.mapper.ProjectBasecostSettingMapper;
-import com.management.platform.mapper.ProjectCurrentcostMapper;
-import com.management.platform.mapper.ReportMapper;
-import com.management.platform.service.ProjectCurrentcostService;
-import com.management.platform.util.HttpRespMsg;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2022-05-07
- */
-@RestController
-@RequestMapping("/project-currentcost")
-public class ProjectCurrentcostController {
-    @Resource
-    private ProjectCurrentcostService projectCurrentcostService;
-    @Resource
-    private ReportMapper reportMapper;
-    @Resource
-    ProjectBasecostSettingMapper projectBasecostSettingMapper;
-
-    @RequestMapping("/get")
-    public HttpRespMsg get(Integer companyId, Integer projectId) {
-        List<ProjectCurrentcost> projectCurrentcosts = projectCurrentcostService.list(new QueryWrapper<ProjectCurrentcost>().eq("project_id", projectId));
-        HttpRespMsg msg = new HttpRespMsg();
-        List<ProjectBasecostSetting> basecostSettingList = projectBasecostSettingMapper.selectList(new QueryWrapper<ProjectBasecostSetting>().eq("company_id", companyId).eq("alarm_type", 1));
-        List<Integer> projectIds = new ArrayList<>();
-        projectIds.add(projectId);
-        List<Map<String, Object>> projectCost = reportMapper.getOneProjectBaseCost(projectId);
-
-        //设置alarmType类型, 实际成本
-        projectCurrentcosts.forEach(cur->{
-            Optional<ProjectBasecostSetting> first = basecostSettingList.stream().filter(base -> base.getId().equals(cur.getBaseId())).findFirst();
-            if (first.isPresent()) {
-                cur.setAlarmType(first.get().getAlarmType());
-            }
-            for (Map<String, Object> map : projectCost) {
-                int bid = (int)map.get("basecostId");
-                if (bid == cur.getBaseId()) {
-                    double cost = ((BigDecimal)map.get("cost")).doubleValue();
-                    cur.setRealCost(cost);
-                    break;
-                }
-            }
-        });
-
-//        double cost = reportMapper.getOneProjectCost(projectId);
-//        HashMap map = new HashMap();
-//        map.put("list", projectCurrentcosts);
-//        map.put("reportCost", cost);
-        msg.data = projectCurrentcosts;
-        return msg;
-    }
-
-    @RequestMapping("/getTimeSheetCostListByProject")
-    public HttpRespMsg getTimeSheetCostListByProject(Integer companyId, Integer projectId) {
-        List<ProjectCurrentcost> projectCurrentcosts = projectCurrentcostService.list(new QueryWrapper<ProjectCurrentcost>().eq("project_id", projectId));
-        HttpRespMsg msg = new HttpRespMsg();
-        List<ProjectBasecostSetting> basecostSettingList = projectBasecostSettingMapper.selectList(new QueryWrapper<ProjectBasecostSetting>().eq("company_id", companyId).eq("alarm_type", 1));
-        //取alarmType为1的,即是工时预警类型的
-        projectCurrentcosts = projectCurrentcosts.stream().filter(cur->{
-            int alarmType = basecostSettingList.stream().filter(base->base.getId().equals(cur.getBaseId())).findFirst().get().getAlarmType();
-            return alarmType == 1;
-        }).collect(Collectors.toList());
-        msg.data = projectCurrentcosts;
-        return msg;
-    }
-}
-

+ 0 - 125
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectCustomController.java

@@ -1,125 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.Project;
-import com.management.platform.entity.ProjectCustom;
-import com.management.platform.mapper.ProjectCustomMapper;
-import com.management.platform.mapper.ProjectMapper;
-import com.management.platform.mapper.UserMapper;
-import com.management.platform.service.ProjectCustomService;
-import com.management.platform.util.HttpRespMsg;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2023-03-20
- */
-@RestController
-@RequestMapping("/project-custom")
-public class ProjectCustomController {
-    @Autowired
-    private ProjectCustomService projectCustomService;
-    @Resource
-    private UserMapper userMapper;
-    @Resource
-    private ProjectCustomMapper projectCustomMapper;
-    @Resource
-    private HttpServletRequest request;
-    @Resource
-    private ProjectMapper projectMapper;
-    @RequestMapping("/editProjectCustom")
-    public HttpRespMsg editProjectCustom(ProjectCustom projectCustom){
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        List<ProjectCustom> projectCustomList = projectCustomMapper.selectList(new QueryWrapper<ProjectCustom>().eq("company_id", companyId));
-        List<String> nameList=new ArrayList<>();
-        List<ProjectCustom> customList = projectCustomList.stream().filter(pl -> pl.getCustomType().equals(projectCustom.getCustomType())).collect(Collectors.toList());
-        customList.forEach(pc->{
-            nameList.add(pc.getCustomName());
-        });
-        if(nameList.contains(projectCustom.getCustomName())){
-            httpRespMsg.setError("名称已存在");
-            return httpRespMsg;
-        }
-        projectCustomService.saveOrUpdate(projectCustom);
-        return httpRespMsg;
-    }
-    @RequestMapping("/getProjectCustom")
-    public HttpRespMsg getProjectCustom(HttpServletRequest request){
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        List<ProjectCustom> projectCustomList = projectCustomMapper.selectList(new QueryWrapper<ProjectCustom>().eq("company_id", companyId));
-        httpRespMsg.data=projectCustomList;
-        return httpRespMsg;
-    }
-    @RequestMapping("/delete")
-    public HttpRespMsg delete(Integer id,HttpServletRequest request){
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        List<ProjectCustom> projectCustomList = projectCustomMapper.selectList(new QueryWrapper<ProjectCustom>().eq("company_id", companyId));
-        Integer num=null;
-        Object result=null;
-        for(int i=0;i<projectCustomList.size();i++){
-            if(id.equals(projectCustomList.get(i).getId())){
-                num=i;
-            }
-        }
-        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
-        for(Project project:projectList) {
-            switch (num){
-                case 0:
-                    result=project.getPlate1();
-                    break;
-                case 1:
-                    result=project.getPlate2();
-                    break;
-                case 2:
-                    result=project.getPlate3();
-                    break;
-                case 3:
-                    result=project.getPlate4();
-                    break;
-                case 4:
-                    result=project.getPlate5();
-                    break;
-                case 5:
-                    result=project.getPlate6();
-                    break;
-                case 6:
-                    result=project.getPlate7();
-                    break;
-                case 7:
-                    result=project.getPlate8();
-                    break;
-                case 8:
-                    result=project.getPlate9();
-                    break;
-                case 9:
-                    result=project.getPlate10();
-                    break;
-            }
-            if(result!=null){
-                httpRespMsg.setError("当前配置下已存在数据");
-                return httpRespMsg;
-            }
-        }
-        projectCustomService.removeById(id);
-        return new HttpRespMsg();
-    }
-
-}
-

+ 0 - 21
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectDocfolderController.java

@@ -1,21 +0,0 @@
-package com.management.platform.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2021-04-19
- */
-@RestController
-@RequestMapping("/project-docfolder")
-public class ProjectDocfolderController {
-
-}
-

+ 0 - 70
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectLevelController.java

@@ -1,70 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.Project;
-import com.management.platform.entity.ProjectLevel;
-import com.management.platform.entity.TimeType;
-import com.management.platform.mapper.TimeTypeMapper;
-import com.management.platform.mapper.UserMapper;
-import com.management.platform.service.ProjectLevelService;
-import com.management.platform.service.ProjectService;
-import com.management.platform.util.HttpRespMsg;
-import com.management.platform.util.MessageUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2022-07-25
- */
-@RestController
-@RequestMapping("/project-level")
-public class ProjectLevelController {
-    @Autowired
-    private ProjectLevelService projectLevelService;
-    @Resource
-    private UserMapper userMapper;
-    @Resource
-    private ProjectService projectService;
-    @Resource
-    private TimeTypeMapper timeTypeMapper;
-    @RequestMapping("/addOrMod")
-    public HttpRespMsg addOrMod(HttpServletRequest request, ProjectLevel projectLevel){
-        return projectLevelService.addOrMod(request,projectLevel);
-    }
-    @RequestMapping("/list")
-    public HttpRespMsg list(HttpServletRequest request){
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        List<ProjectLevel> projectLevelList = projectLevelService.list(new QueryWrapper<ProjectLevel>().eq("company_id", companyId));
-        httpRespMsg.data=projectLevelList;
-        return httpRespMsg;
-    }
-    @RequestMapping("/delete")
-    public HttpRespMsg delete(Integer id,HttpServletRequest request){
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        TimeType timeType = timeTypeMapper.selectById(companyId);
-        if(timeType.getProjectLevelState()==1){
-            int cut = projectService.count(new QueryWrapper<Project>().eq("level", id).eq("company_id",companyId));
-            if(cut>0){
-                //httpRespMsg.setError("已绑定项目");
-                httpRespMsg.setError(MessageUtils.message("project.BoundItems"));
-                return httpRespMsg;
-            }
-            projectLevelService.removeById(id);
-        }
-        return httpRespMsg;
-    }
-}
-

+ 0 - 66
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectMainController.java

@@ -1,66 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.Project;
-import com.management.platform.entity.ProjectMain;
-import com.management.platform.mapper.UserMapper;
-import com.management.platform.service.ProjectMainService;
-import com.management.platform.service.ProjectService;
-import com.management.platform.util.HttpRespMsg;
-import com.management.platform.util.MessageUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2022-06-28
- */
-@RestController
-@RequestMapping("/project-main")
-public class ProjectMainController {
-    @Autowired
-    private ProjectMainService projectMainService;
-    @Resource
-    private UserMapper userMapper;
-    @Resource
-    private ProjectService projectService;
-    @RequestMapping("/addOrMod")
-    public HttpRespMsg addOrMod(HttpServletRequest request,ProjectMain projectMain){
-       return projectMainService.addOrMod(request,projectMain);
-    }
-    @RequestMapping("/list")
-    public HttpRespMsg list(HttpServletRequest request){
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        List<ProjectMain> projectMainList = projectMainService.list(new QueryWrapper<ProjectMain>().eq("company_id", companyId));
-        httpRespMsg.data=projectMainList;
-        return httpRespMsg;
-    }
-    @RequestMapping("/delete")
-    public HttpRespMsg delete(Integer id){
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        int cut = projectService.count(new QueryWrapper<Project>().eq("project_main_id", id));
-        if(cut>0){
-            //httpRespMsg.setError("已绑定项目");
-            httpRespMsg.setError(MessageUtils.message("project.BoundItems"));
-            return httpRespMsg;
-        }
-        projectMainService.removeById(id);
-        return httpRespMsg;
-    }
-    @RequestMapping("/getListByCategory")
-    public HttpRespMsg getListByCategory(Integer categoryId){
-        return projectMainService.getListByCategory(categoryId);
-    }
-}
-

+ 0 - 74
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectNotifyUserController.java

@@ -1,74 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.ProjectNotifyUser;
-import com.management.platform.service.ProjectNotifyUserService;
-import com.management.platform.util.HttpRespMsg;
-import com.management.platform.util.MessageUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2021-09-01
- */
-@RestController
-@RequestMapping("/project-notify-user")
-public class ProjectNotifyUserController {
-    @Resource
-    ProjectNotifyUserService projectNotifyUserService;
-
-    @RequestMapping("/modify")
-    public HttpRespMsg add(Integer projectId, String chosenLeaders) {
-        HttpRespMsg msg = new HttpRespMsg();
-        projectNotifyUserService.remove(new QueryWrapper<ProjectNotifyUser>().eq("project_id", projectId));
-
-        if (chosenLeaders != null && chosenLeaders.length() > 0) {
-            JSONArray array = JSONArray.parseArray(chosenLeaders);
-            List<ProjectNotifyUser> notifyUsers = new ArrayList<>();
-            for (int i = 0;i<array.size(); i++) {
-                JSONObject jsonObject = array.getJSONObject(i);
-                ProjectNotifyUser projectNotifyUser = JSONObject.toJavaObject(jsonObject, ProjectNotifyUser.class);
-                projectNotifyUser.setProjectId(projectId);
-                notifyUsers.add(projectNotifyUser);
-            }
-            projectNotifyUserService.saveBatch(notifyUsers);
-        }
-        return msg;
-
-    }
-
-    @RequestMapping("/delete")
-    public HttpRespMsg delete(Integer id) {
-        HttpRespMsg msg = new HttpRespMsg();
-        boolean success = projectNotifyUserService.removeById(id);
-        if (!success) {
-            //msg.setError("记录不存在,操作失败");
-            msg.setError(MessageUtils.message("project.RecordNotExist"));
-        }
-        return msg;
-    }
-
-    @RequestMapping("/get")
-    public HttpRespMsg get(Integer projectId) {
-        HttpRespMsg msg = new HttpRespMsg();
-        msg.data= projectNotifyUserService.list(new QueryWrapper<ProjectNotifyUser>().eq("project_id", projectId));
-        return msg;
-    }
-
-
-
-}
-

+ 0 - 50
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectPercentageController.java

@@ -1,50 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.management.platform.service.ProjectPercentageService;
-import com.management.platform.util.HttpRespMsg;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2022-02-26
- */
-@RestController
-@RequestMapping("/project-percentage")
-public class ProjectPercentageController {
-
-    @Resource
-    private ProjectPercentageService projectPercentageService;
-
-    @RequestMapping("/saveMonthSetting")
-    public HttpRespMsg saveMonthSetting(String projectCols, String userSettings, String ymonth) {
-        return projectPercentageService.saveMonthSetting(projectCols, userSettings, ymonth);
-    }
-
-    @RequestMapping("/getMonthSetting")
-    public HttpRespMsg getMonthSetting(String ymonth) {
-        return projectPercentageService.getMonthSetting(ymonth);
-    }
-
-    @RequestMapping("/importData")
-    public HttpRespMsg importData(Integer companyId, Integer withCheckIn,
-                                  MultipartFile file, HttpServletRequest request,String ymonth) throws Exception {
-        return projectPercentageService.importData(companyId,withCheckIn, file, request,ymonth);
-    }
-
-    @RequestMapping("/getTemplate")
-    public HttpRespMsg getTemplate(String ymonth) throws Exception {
-        return projectPercentageService.getTemplate(ymonth);
-    }
-}
-

+ 0 - 91
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectStageController.java

@@ -1,91 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.Project;
-import com.management.platform.entity.ProjectStage;
-import com.management.platform.mapper.UserMapper;
-import com.management.platform.service.ProjectService;
-import com.management.platform.service.ProjectStageService;
-import com.management.platform.util.HttpRespMsg;
-import com.management.platform.util.MessageUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2022-07-18
- */
-@RestController
-@RequestMapping("/project-stage")
-public class ProjectStageController {
-    @Autowired
-    private ProjectStageService projectStageService;
-    @Resource
-    private UserMapper userMapper;
-    @Resource
-    private ProjectService projectService;
-
-    @RequestMapping("/list")
-    public HttpRespMsg list(HttpServletRequest request){
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        List<ProjectStage> projectStageList = projectStageService.list(new QueryWrapper<ProjectStage>().eq("company_id", companyId));
-        httpRespMsg.data=projectStageList;
-        return httpRespMsg;
-    }
-    @RequestMapping("/addOrMod")
-    public HttpRespMsg addOrMod(ProjectStage projectStage, HttpServletRequest request){
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        projectStage.setCompanyId(companyId);
-        if(projectStage.getProjectStageName().equals("")){
-            httpRespMsg.setError(MessageUtils.message("name.nullNameError"));
-        }
-        if(projectStage.getId()!=null){
-            int cut = projectStageService.count(new QueryWrapper<ProjectStage>().eq("project_stage_name", projectStage.getProjectStageName()).eq("company_id",companyId).ne("id",projectStage.getId()));
-            if(cut>0){
-                //httpRespMsg.setError("阶段名称已存在");
-                httpRespMsg.setError(MessageUtils.message("project.StageNameError"));
-                return httpRespMsg;
-            }
-            projectStageService.updateById(projectStage);
-        }else {
-            int cut = projectStageService.count(new QueryWrapper<ProjectStage>().eq("project_stage_name", projectStage.getProjectStageName()).eq("company_id", companyId));
-            if(cut>0){
-                //httpRespMsg.setError("阶段名称已存在");
-                httpRespMsg.setError(MessageUtils.message("project.StageNameError"));
-                return httpRespMsg;
-            }
-            projectStageService.save(projectStage);
-        }
-        return httpRespMsg;
-    }
-    @RequestMapping("/delete")
-    public HttpRespMsg delete(Integer id){
-        HttpRespMsg httpRespMsg =new HttpRespMsg();
-        int cut = projectService.count(new QueryWrapper<Project>().eq("current_stage_id", id));
-        if(cut>0){
-            //httpRespMsg.setError("该阶段已被使用");
-            httpRespMsg.setError(MessageUtils.message("project.StageUsedError"));
-            return httpRespMsg;
-        }
-        if(projectStageService.removeById(id)){
-            return httpRespMsg;
-        }
-        //httpRespMsg.setError("参数异常");
-        httpRespMsg.setError(MessageUtils.message("other.parameterError"));
-        return httpRespMsg;
-    }
-
-}
-

+ 0 - 152
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectTimerController.java

@@ -1,152 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.ProjectTimer;
-import com.management.platform.entity.Report;
-import com.management.platform.entity.User;
-import com.management.platform.mapper.ProjectTimerMapper;
-import com.management.platform.mapper.ReportMapper;
-import com.management.platform.mapper.UserMapper;
-import com.management.platform.service.ProjectService;
-import com.management.platform.util.HttpRespMsg;
-import com.management.platform.util.MessageUtils;
-import org.apache.log4j.helpers.DateTimeDateFormat;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.time.ZoneOffset;
-import java.time.format.DateTimeFormatter;
-import java.util.List;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2021-03-17
- */
-@RestController
-@RequestMapping("/project-timer")
-public class ProjectTimerController {
-    @Resource
-    private ProjectTimerMapper projectTimerMapper;
-    @Resource
-    private ReportMapper reportMapper;
-    @Resource
-    private UserMapper userMapper;
-    @Resource
-    private HttpServletRequest request;
-
-    /**
-     * 获取定时器
-     */
-    @RequestMapping("/getMyTimer")
-    public HttpRespMsg getMyTimer() {
-        QueryWrapper<ProjectTimer> query = new QueryWrapper<ProjectTimer>();
-        String userId = request.getHeader("Token");
-
-        query.eq("user_id", userId);
-        query.orderByDesc("id");
-        HttpRespMsg msg = new HttpRespMsg();
-        List<ProjectTimer> list = projectTimerMapper.selectList(query);
-        LocalDateTime now = LocalDateTime.now();
-        list.forEach(t->{
-            if (t.getEndTime() == null) {
-                t.setTimer(now.toEpochSecond(ZoneOffset.ofHours(8)) - t.getStartTime().toEpochSecond(ZoneOffset.ofHours(8)));
-            } else {
-                t.setTimer(t.getEndTime().toEpochSecond(ZoneOffset.ofHours(8)) - t.getStartTime().toEpochSecond(ZoneOffset.ofHours(8)));
-            }
-        });
-        msg.data = list;
-        return msg;
-    }
-
-    @RequestMapping("/addTimer")
-    public HttpRespMsg addTimer(ProjectTimer timer) {
-        String userId = request.getHeader("Token");
-        timer.setUserId(userId);
-        timer.setStartTime(LocalDateTime.now());
-        projectTimerMapper.insert(timer);
-        HttpRespMsg msg = new HttpRespMsg();
-        msg.data = timer;
-        return msg;
-    }
-
-
-    @RequestMapping("/deleteTimer")
-    public HttpRespMsg deleteTimer(Integer id) {
-        String userId = request.getHeader("Token");
-        HttpRespMsg msg = new HttpRespMsg();
-        ProjectTimer timer = projectTimerMapper.selectById(id);
-        if (!timer.getUserId().equals(userId)) {
-            //msg.setError("非创建人无权删除");
-            msg.setError(MessageUtils.message("access.createDelete"));
-        } else {
-            projectTimerMapper.deleteById(id);
-        }
-        return msg;
-    }
-
-
-    @RequestMapping("/endTimer")
-    public HttpRespMsg endTimer(Integer id) {
-        String userId = request.getHeader("Token");
-        HttpRespMsg msg = new HttpRespMsg();
-        ProjectTimer timer = projectTimerMapper.selectById(id);
-        if (!timer.getUserId().equals(userId)) {
-            //msg.setError("非创建人无权结束");
-            msg.setError(MessageUtils.message("access.createEnd"));
-        } else {
-            timer.setEndTime(LocalDateTime.now());
-            projectTimerMapper.updateById(timer);
-            msg.data = timer;
-        }
-        return msg;
-    }
-
-    @RequestMapping("/tranferToReport")
-    public HttpRespMsg tranferToReport(Integer id, String content) {
-        String userId = request.getHeader("Token");
-        User user = userMapper.selectById(userId);
-        HttpRespMsg msg = new HttpRespMsg();
-        ProjectTimer timer = projectTimerMapper.selectById(id);
-        if (!timer.getUserId().equals(userId)) {
-            //msg.setError("非创建人无权操作");
-            msg.setError(MessageUtils.message("access.createOperation"));
-        } else {
-            //创建日报
-            DateTimeFormatter df = DateTimeFormatter.ofPattern("HH:mm");
-            Report report = new Report();
-            report.setSubProjectId(timer.getSubProjectId());
-            report.setProjectId(timer.getProjectId());
-            report.setCreatorId(timer.getUserId());
-            report.setContent(content);
-            report.setCreateDate(timer.getStartTime().toLocalDate());
-            report.setStartTime(df.format(timer.getStartTime()));
-            report.setEndTime(df.format(timer.getEndTime()));
-            report.setReportTimeType(2);//2-按时间段录入
-            //计算时长
-            long time = timer.getEndTime().toEpochSecond(ZoneOffset.ofHours(8)) - timer.getStartTime().toEpochSecond(ZoneOffset.ofHours(8));
-            int minutes = (int)time/60;
-            double hours = (minutes*1.0f/60);
-            report.setWorkingTime(hours);
-            report.setCost(user.getCost().multiply(new BigDecimal(hours)));
-
-            reportMapper.insert(report);
-            timer.setReportId(report.getId());
-            projectTimerMapper.updateById(timer);
-            msg.data = timer;
-        }
-        return msg;
-    }
-
-}
-

+ 0 - 21
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProjectUserSalaryController.java

@@ -1,21 +0,0 @@
-package com.management.platform.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2021-05-19
- */
-@RestController
-@RequestMapping("/project-user-salary")
-public class ProjectUserSalaryController {
-
-}
-

+ 0 - 76
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProviderCategoryController.java

@@ -1,76 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.ProviderCategory;
-import com.management.platform.mapper.UserMapper;
-import com.management.platform.service.ProviderCategoryService;
-import com.management.platform.util.HttpRespMsg;
-import com.management.platform.util.MessageUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2022-07-12
- */
-@RestController
-@RequestMapping("/provider-category")
-public class ProviderCategoryController {
-    @Resource
-    private ProviderCategoryService providerCategoryService;
-    @Resource
-    private UserMapper userMapper;
-
-    @RequestMapping("/list")
-    public HttpRespMsg list(HttpServletRequest request){
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        List<ProviderCategory> providerCategoryList = providerCategoryService.list(new QueryWrapper<ProviderCategory>().eq("company_id", companyId));
-        httpRespMsg.data=providerCategoryList;
-        return httpRespMsg;
-    }
-    @RequestMapping("/addOrMod")
-    public HttpRespMsg addOrMod(ProviderCategory providerCategory,HttpServletRequest request){
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        providerCategory.setCompanyId(companyId);
-        if(providerCategory.getId()!=null){
-            int cut = providerCategoryService.count(new QueryWrapper<ProviderCategory>().eq("provider_category_name", providerCategory.getProviderCategoryName()).eq("company_id",companyId).ne("id",providerCategory.getId()));
-            if(cut>0){
-                //httpRespMsg.setError("分类名称已存在");
-                httpRespMsg.setError(MessageUtils.message("name.CategoryNameRepeat"));
-                return httpRespMsg;
-            }
-            providerCategoryService.updateById(providerCategory);
-        }else {
-            int cut = providerCategoryService.count(new QueryWrapper<ProviderCategory>().eq("provider_category_name", providerCategory.getProviderCategoryName()).eq("company_id", companyId));
-            if(cut>0){
-                //httpRespMsg.setError("分类名称已存在");
-                httpRespMsg.setError(MessageUtils.message("name.CategoryNameRepeat"));
-                return httpRespMsg;
-            }
-            providerCategoryService.save(providerCategory);
-        }
-        return httpRespMsg;
-    }
-    @RequestMapping("/delete")
-    public HttpRespMsg delete(Integer id){
-        HttpRespMsg httpRespMsg =new HttpRespMsg();
-        if(providerCategoryService.removeById(id)){
-            return httpRespMsg;
-        }
-        //httpRespMsg.setError("参数异常");
-        httpRespMsg.setError(MessageUtils.message("other.parameterError"));
-        return httpRespMsg;
-    }
-}
-

+ 0 - 241
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProviderInfoController.java

@@ -1,241 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.management.platform.entity.Project;
-import com.management.platform.entity.ProviderInfo;
-import com.management.platform.entity.User;
-import com.management.platform.mapper.ProjectMapper;
-import com.management.platform.mapper.ProviderInfoMapper;
-import com.management.platform.mapper.UserMapper;
-import com.management.platform.service.ProviderInfoService;
-import com.management.platform.util.HttpRespMsg;
-import com.management.platform.util.MessageUtils;
-import org.springframework.util.StringUtils;
-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.multipart.MultipartFile;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2022-07-07
- */
-@RestController
-@RequestMapping("/provider-info")
-public class ProviderInfoController {
-    @Resource
-    private HttpServletRequest request;
-    @Resource
-    UserMapper userMapper;
-    @Resource
-    ProjectMapper projectMapper;
-    @Resource
-    ProviderInfoMapper providerInfoMapper;
-    @Resource
-    ProviderInfoService providerInfoService;
-
-    @RequestMapping("/addOrMod")
-    public HttpRespMsg addOrMod(ProviderInfo info) {
-        HttpRespMsg msg = new HttpRespMsg();
-        String token = request.getHeader("TOKEN");
-        User user = userMapper.selectById(token);
-
-        if (info.getId() == null) {
-            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("供货商编号已存在");
-                    msg.setError(MessageUtils.message("provider.noRepeat"));
-                    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("该分类下供货商名称已存在");
-                        msg.setError(MessageUtils.message("provider.classNameRepeat"));
-                        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("该供货商名称已存在");
-                        msg.setError(MessageUtils.message("provider.NameRepeat"));
-                        return msg;
-                    }
-                }
-
-            }
-            info.setCompanyId(user.getCompanyId());
-            providerInfoMapper.insert(info);
-        } else {
-            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("供货商编号已存在");
-                    msg.setError(MessageUtils.message("provider.noRepeat"));
-                    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("该分类下供货商名称已存在");
-                        msg.setError(MessageUtils.message("provider.classNameRepeat"));
-                        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("该分类下供货商名称已存在");
-                        msg.setError(MessageUtils.message("provider.classNameRepeat"));
-                        return msg;
-                    }
-                }
-
-
-            }
-
-            if(StringUtils.isEmpty(info.getProviderCategoryName())){
-                info.setProviderCategoryId(0);
-            }
-            info.setCompanyId(user.getCompanyId());
-            providerInfoMapper.updateById(info);
-            //更新项目表中的客户名称
-            Project p = new Project();
-            p.setCustomerName(info.getProviderName());
-            projectMapper.update(p, new QueryWrapper<Project>().eq("customer_id", info.getId()));
-        }
-        return msg;
-    }
-
-    @RequestMapping("/delete")
-    public HttpRespMsg delete(Integer id) {
-        HttpRespMsg msg = new HttpRespMsg();
-        String token = request.getHeader("TOKEN");
-        User user = userMapper.selectById(token);
-        ProviderInfo providerInfo = providerInfoMapper.selectById(id);
-        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id, project_name, provider_ids, provider_names").like("provider_ids", id+"").like("provider_names", providerInfo.getProviderName()));
-        if (projectList.size() > 0) {
-            String containProjectNames = projectList.stream().filter(p->{
-                String[] split = p.getProviderIds().split(",");
-                boolean containId = Arrays.stream(split).anyMatch(s->s.equals(id+""));
-                return containId;
-            }).map(Project::getProjectName).collect(Collectors.joining(","));
-            if (!StringUtils.isEmpty(containProjectNames)) {
-                //msg.setError("无法删除,以下项目已关联此供应商:"+containProjectNames);
-                msg.setError(MessageUtils.message("provider.deleteError",containProjectNames));
-                return msg;
-            }
-        }
-        int r = providerInfoMapper.delete(new QueryWrapper<ProviderInfo>().eq("id", id).eq("company_id", user.getCompanyId()));
-        if (r <= 0) {
-            //msg.setError("无权删除");
-            msg.setError(MessageUtils.message("access.deleteError"));
-        }
-        return msg;
-    }
-    @RequestMapping("/batchDelete")
-    public HttpRespMsg batchDelete(String batchIds) {
-        HttpRespMsg msg = new HttpRespMsg();
-        if(!StringUtils.isEmpty(batchIds)){
-            String[] split = batchIds.split(",");
-            List<String> list = Arrays.asList(split);
-            String token = request.getHeader("TOKEN");
-            User user = userMapper.selectById(token);
-
-            List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id, project_name, provider_ids, provider_names").eq("company_id", user.getCompanyId()).isNotNull("provider_ids"));
-            if(projectList.size()>0){
-                String str = null;
-                for (String providerId: list) {
-                    String names = projectList.stream().filter(p->{
-                        String[] hasIds = p.getProviderIds().split(",");
-                        boolean containId = Arrays.stream(hasIds).anyMatch(s->s.equals(providerId+""));
-                        return containId;
-                    }).map(Project::getProjectName).collect(Collectors.joining(","));
-                    if (!StringUtils.isEmpty(names)) {
-                        //str = providerInfoMapper.selectById(Integer.valueOf(providerId)).getProviderName()+"已被以下项目关联:"+ names;
-                        str = MessageUtils.message("project.alreadyRelation",providerInfoMapper.selectById(Integer.valueOf(providerId)).getProviderName(),names);
-                        break;
-                    }
-                }
-                if (str != null) {
-                    msg.setError(str);
-                    return msg;
-                }
-            }
-            providerInfoMapper.deleteBatchIds(list);
-        }
-        return msg;
-    }
-
-
-    @RequestMapping("/list")
-    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<ProviderInfo> queryWrapper = new QueryWrapper<ProviderInfo>().eq("company_id", user.getCompanyId());
-        if (!StringUtils.isEmpty(keyword)) {
-            queryWrapper.like("provider_name", keyword);
-        }
-        if (StringUtils.isEmpty(sortProp)) {
-            queryWrapper.orderByDesc("id");
-        } else {
-            if (sortOrder == 0) {
-                //降序
-                queryWrapper.orderByDesc(sortProp);
-            } else {
-                queryWrapper.orderByAsc(sortProp);
-            }
-        }
-        IPage<ProviderInfo> projectIPage = providerInfoMapper.selectPage(new Page<>(pageIndex, pageSize),
-                queryWrapper);
-        List<ProviderInfo> list = projectIPage.getRecords();
-        Long total = projectIPage.getTotal();
-        Map<String, Object> map = new HashMap<>();
-        map.put("records", list);
-        map.put("total", total);
-        msg.data = map;
-        return msg;
-    }
-
-    @RequestMapping("/getAll")
-    public HttpRespMsg getAll() {
-        HttpRespMsg msg = new HttpRespMsg();
-        String token = request.getHeader("TOKEN");
-        User user = userMapper.selectById(token);
-        List<ProviderInfo> all = providerInfoMapper.selectList(new QueryWrapper<ProviderInfo>().select("id, provider_name,provider_code").eq("company_id", user.getCompanyId()).orderByDesc("id"));
-        msg.data = all;
-        return msg;
-    }
-
-    @RequestMapping("/importData")
-    public HttpRespMsg importData(HttpServletRequest request, MultipartFile file){
-        return providerInfoService.importData(request,file);
-    }
-
-    @RequestMapping("/exportData")
-    public HttpRespMsg exportData(HttpServletRequest request){
-        return providerInfoService.exportData(request);
-    }
-
-}
-

+ 0 - 21
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ReportAlogMembdateController.java

@@ -1,21 +0,0 @@
-package com.management.platform.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2022-03-24
- */
-@RestController
-@RequestMapping("/report-alog-membdate")
-public class ReportAlogMembdateController {
-
-}
-

+ 0 - 139
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ReportAuditLogController.java

@@ -1,139 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.management.platform.entity.LocaleInformation;
-import com.management.platform.entity.ReportAlogMembdate;
-import com.management.platform.entity.ReportAuditLog;
-import com.management.platform.entity.User;
-import com.management.platform.entity.vo.SysRichFunction;
-import com.management.platform.mapper.*;
-import com.management.platform.util.HttpRespMsg;
-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.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2022-03-24
- */
-@RestController
-@RequestMapping("/report-audit-log")
-public class ReportAuditLogController {
-
-    @Resource
-    private HttpServletRequest request;
-    @Resource
-    ReportAuditLogMapper reportAuditLogMapper;
-    @Resource
-    ReportAlogMembdateMapper reportAlogMembdateMapper;
-    @Resource
-    UserMapper userMapper;
-    @Resource
-    SysFunctionMapper sysFunctionMapper;
-    @Resource
-    LocaleInformationMapper localeInformationMapper;
-    @Resource
-    CompanyMapper companyMapper;
-
-    @RequestMapping("getImportAuditLog")
-    public HttpRespMsg getImportAuditLog(Integer companyId, @RequestParam Integer pageIndex, @RequestParam Integer pageSize) {
-        String token = request.getHeader("TOKEN");
-        User user = userMapper.selectById(token);
-        HttpRespMsg msg = new HttpRespMsg();
-        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看导审记录");
-        if (functionList.size() > 0) {
-            QueryWrapper<ReportAuditLog> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("company_id", companyId).eq("audit_channel", 0).orderByDesc("indate");
-            IPage<ReportAuditLog> iPage = reportAuditLogMapper.selectPage(new Page<>(pageIndex, pageSize),
-                    queryWrapper);
-            List<ReportAuditLog> list = iPage.getRecords();
-            if (list.size() > 0) {
-                //还有获取各项的人员日期名单
-                List<Integer> ids = list.stream().map(ReportAuditLog::getId).collect(Collectors.toList());
-
-                List<ReportAlogMembdate> membList = reportAlogMembdateMapper.selectList(new QueryWrapper<ReportAlogMembdate>().in("rlog_id", ids));
-                list.forEach(l->{
-                    l.setMembdateList(membList.stream().filter(m->m.getRlogId().equals(l.getId())).collect(Collectors.toList()));
-                });
-            }
-            if (companyMapper.selectById(companyId).getIsInternational() == 1) {
-                //国际化版本
-                LocaleInformation locale = localeInformationMapper.selectById(companyId);
-                TimeZone curZone = TimeZone.getTimeZone(locale.getTimezone());
-                int offsetSeconds = (curZone.getRawOffset() - TimeZone.getTimeZone("GMT+8").getRawOffset())/1000;
-                //时区转换,默认数据库存的是GMT+8
-                DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
-                for (ReportAuditLog reportAuditLog : list) {
-                    String inDate = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(reportAuditLog.getIndate());
-                    LocalDateTime time = LocalDateTime.parse(inDate, dtf);
-                    time = time.plusSeconds(offsetSeconds);
-                    reportAuditLog.setIndate(time);
-                }
-            }
-            Long total = iPage.getTotal();
-            Map<String, Object> map = new HashMap<>();
-            map.put("records", list);
-            map.put("total", total);
-            msg.data = map;
-        } else {
-            Map<String, Object> map = new HashMap<>();
-            map.put("records", new ArrayList<>());
-            map.put("total", 0);
-            msg.data = map;
-        }
-        return msg;
-    }
-
-
-    @RequestMapping("getProjectReportAuditLog")
-    public HttpRespMsg getProjectReportAuditLog(Integer companyId, @RequestParam Integer pageIndex, @RequestParam Integer pageSize) {
-        String token = request.getHeader("TOKEN");
-        User user = userMapper.selectById(token);
-        HttpRespMsg msg = new HttpRespMsg();
-        QueryWrapper<ReportAuditLog> queryWrapper = new QueryWrapper<>();
-        //检查权限,是否可以看全部的
-        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部审核记录");
-        if (functionList.size() == 0) {
-            //每个人看自己的
-            queryWrapper.eq("company_id", companyId).eq("audit_channel", 1).eq("user_id", user.getId()).orderByDesc("indate");
-        } else {
-            queryWrapper.eq("company_id", companyId).eq("audit_channel", 1).orderByDesc("indate");
-        }
-
-        IPage<ReportAuditLog> iPage = reportAuditLogMapper.selectPage(new Page<>(pageIndex, pageSize),
-                queryWrapper);
-        List<ReportAuditLog> list = iPage.getRecords();
-        if (list.size() > 0) {
-            //还有获取各项的人员日期名单
-            List<Integer> ids = list.stream().map(ReportAuditLog::getId).collect(Collectors.toList());
-
-            List<ReportAlogMembdate> membList = reportAlogMembdateMapper.selectList(new QueryWrapper<ReportAlogMembdate>().in("rlog_id", ids));
-            list.forEach(l->{
-                l.setMembdateList(membList.stream().filter(m->m.getRlogId().equals(l.getId())).collect(Collectors.toList()));
-            });
-        }
-
-        Long total = iPage.getTotal();
-        Map<String, Object> map = new HashMap<>();
-        map.put("records", list);
-        map.put("total", total);
-        msg.data = map;
-        return msg;
-    }
-}
-

+ 0 - 21
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ReportAuditorSettingController.java

@@ -1,21 +0,0 @@
-package com.management.platform.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2022-09-28
- */
-@RestController
-@RequestMapping("/report-auditor-setting")
-public class ReportAuditorSettingController {
-
-}
-

Разница между файлами не показана из-за своего большого размера
+ 1388 - 1496
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ReportController.java


+ 0 - 220
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ReportExtraDegreeController.java

@@ -1,220 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.Project;
-import com.management.platform.entity.ReportExtraDegree;
-import com.management.platform.entity.TimeType;
-import com.management.platform.entity.User;
-import com.management.platform.mapper.ProjectMapper;
-import com.management.platform.mapper.ReportExtraDegreeMapper;
-import com.management.platform.mapper.TimeTypeMapper;
-import com.management.platform.mapper.UserMapper;
-import com.management.platform.service.ProjectService;
-import com.management.platform.service.ReportExtraDegreeService;
-import com.management.platform.util.HttpRespMsg;
-import com.management.platform.util.MessageUtils;
-import org.apache.poi.util.StringUtil;
-import org.springframework.util.StringUtils;
-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.multipart.MultipartFile;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2021-12-16
- */
-@RestController
-@RequestMapping("/report-extra-degree")
-public class ReportExtraDegreeController {
-
-    @Resource
-    private HttpServletRequest request;
-    @Resource
-    UserMapper userMapper;
-    @Resource
-    ReportExtraDegreeMapper reportExtraDegreeMapper;
-    @Resource
-    ProjectMapper projectMapper;
-    @Resource
-    ProjectService projectService;
-    @Resource
-    ReportExtraDegreeService reportExtraDegreeService;
-    @Resource
-    TimeTypeMapper timeTypeMapper;
-
-    /**
-     * addOrMod添加或者修改
-     * @param info
-     * @return
-     */
-    @RequestMapping("/addOrMod")
-    public HttpRespMsg addOrMod(ReportExtraDegree info) {
-        HttpRespMsg msg = new HttpRespMsg();
-        String token = request.getHeader("TOKEN");
-        User user = userMapper.selectById(token);
-        TimeType timeType = timeTypeMapper.selectById(user.getCompanyId());
-        if (info.getId() == null) {
-            info.setCompanyId(user.getCompanyId());
-            int cut = reportExtraDegreeMapper.selectCount(new QueryWrapper<ReportExtraDegree>().eq("name",info.getName()).eq("company_id", user.getCompanyId()));
-            if(cut>0){
-                //msg.setError(timeType.getCustomDegreeName()+"名称重复");
-                msg.setError(MessageUtils.message("name.nameRepeatByParam",timeType.getCustomDegreeName()));
-                return msg;
-            }
-            info.setCompanyId(user.getCompanyId());
-            reportExtraDegreeMapper.insert(info);
-        } else {
-            int cut = reportExtraDegreeMapper.selectCount(new QueryWrapper<ReportExtraDegree>().eq("name",info.getName()).ne("id",info.getId()).eq("company_id", user.getCompanyId()));
-            if(cut>0){
-                //msg.setError(timeType.getCustomDegreeName()+"名称重复");
-                msg.setError(MessageUtils.message("name.nameRepeatByParam",timeType.getCustomDegreeName()));
-                return msg;
-            }
-            //检查名字是否发生变化
-            int id = info.getId();
-            List<Project> existsProjects = projectMapper.selectList(new QueryWrapper<Project>()
-                    .eq("company_id", user.getCompanyId())
-                    .and(wrapper->wrapper.eq("associate_degrees", id)
-                            .or().likeRight("associate_degrees", id+",")
-                            .or().like("associate_degrees", ","+id+",")
-                            .or().likeLeft("associate_degrees", ","+id)));
-            if (existsProjects.size() > 0) {
-                List<Project> updateList = new ArrayList<>();
-                for (Project p : existsProjects) {
-                    String associateDegrees = p.getAssociateDegrees();
-                    String[] split = associateDegrees.split("\\,");
-                    String[] names = p.getAssociateDegreeNames().split("\\,");
-
-                    for (int i=0;i<split.length; i++) {
-                        if (split[i].equals(id+"")) {
-                            names[i] = info.getName();//更换新名字
-                        }
-                    }
-                    String replaceNames = StringUtil.join(names, ",");
-                    Project newP = new Project();
-                    newP.setId(p.getId());
-                    newP.setAssociateDegreeNames(replaceNames);
-                    updateList.add(newP);
-                }
-                projectService.updateBatchById(updateList);
-            }
-            reportExtraDegreeMapper.updateById(info);
-        }
-        return msg;
-    }
-
-    /**
-     * delete删除
-     * @param id
-     * @return
-     */
-    @RequestMapping("/delete")
-    public HttpRespMsg delete(Integer id) {
-        HttpRespMsg msg = new HttpRespMsg();
-        String token = request.getHeader("TOKEN");
-        User user = userMapper.selectById(token);
-        //检查是否已经被使用
-        List<Project> existsProjects = projectMapper.selectList(new QueryWrapper<Project>()
-                        .eq("associate_degrees", id)
-                        .or().likeRight("associate_degrees", id+",")
-                        .or().like("associate_degrees", ","+id+",")
-                        .or().likeLeft("associate_degrees", ","+id));
-        if (existsProjects.size() > 0) {
-            String names = existsProjects.stream().map(Project::getProjectName).collect(Collectors.joining(","));
-            //msg.setError("该数据已经被以下项目关联,无法删除:"+names);
-            msg.setError(MessageUtils.message("project.DateRelation",names));
-            return msg;
-        }
-        int r = reportExtraDegreeMapper.delete(new QueryWrapper<ReportExtraDegree>().eq("id", id).eq("company_id", user.getCompanyId()));
-        if (r <= 0) {
-            //msg.setError("无权删除");
-            msg.setError(MessageUtils.message("access.deleteError"));
-        }
-        return msg;
-    }
-
-    @RequestMapping("/batchDelete")
-    public HttpRespMsg batchDelete(String batchIds) {
-        HttpRespMsg msg = new HttpRespMsg();
-        if(!StringUtils.isEmpty(batchIds)&&!batchIds.equals("")){
-            String[] split = batchIds.split(",");
-            List<String> list = Arrays.asList(split);
-            String token = request.getHeader("TOKEN");
-            User user = userMapper.selectById(token);
-            //检查是否已经被使用
-            QueryWrapper<Project> queryWrapper=new QueryWrapper<>();
-            queryWrapper.in("associate_degrees", list);
-            list.forEach(li->{
-                queryWrapper.or().likeRight("associate_degrees", li+",")
-                        .or().like("associate_degrees", ","+li+",")
-                        .or().likeLeft("associate_degrees", ","+li);
-            });
-            List<Project> existsProjects = projectMapper.selectList(queryWrapper);
-            if (existsProjects.size() > 0) {
-                String names = existsProjects.stream().map(Project::getProjectName).collect(Collectors.joining(","));
-                //msg.setError("该数据已经被以下项目关联,无法删除:"+names);
-                msg.setError(MessageUtils.message("project.DateRelation",names));
-                return msg;
-            }
-            int r = reportExtraDegreeMapper.delete(new QueryWrapper<ReportExtraDegree>().eq("id", list.get(0)).eq("company_id", user.getCompanyId()));
-            if (r <= 0) {
-                //msg.setError("无权删除");
-                msg.setError(MessageUtils.message("access.deleteError"));
-                return msg;
-            }
-            reportExtraDegreeMapper.deleteBatchIds(list);
-        }
-        return msg;
-    }
-
-    /**
-     * 获取全部getAll
-     * @return
-     */
-    @RequestMapping("/getAll")
-    public HttpRespMsg getAll(@RequestParam(required = false, defaultValue = "0") Integer withProjects) {
-        HttpRespMsg msg = new HttpRespMsg();
-        String token = request.getHeader("TOKEN");
-        User user = userMapper.selectById(token);
-
-        List<ReportExtraDegree> all = reportExtraDegreeMapper.getAll(user.getCompanyId()); 
-        if (withProjects == 1) {
-            List<Project> allProjects = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", user.getCompanyId()));
-            for (ReportExtraDegree degree : all) {
-                degree.setProjects(allProjects.stream().filter(pro->pro.getAssociateDegreeNames() != null &&
-                        (pro.getAssociateDegreeNames().equals(degree.getName()) || pro.getAssociateDegreeNames().startsWith(degree.getName()+",")
-                            || pro.getAssociateDegreeNames().contains(","+degree.getName()+",")
-                            || pro.getAssociateDegreeNames().endsWith(","+degree.getName()))).map(Project::getProjectName).collect(Collectors.joining(",")));
-                degree.setProjectNum((int) allProjects.stream().filter(pro->pro.getAssociateDegreeNames() != null &&
-                        (pro.getAssociateDegreeNames().equals(degree.getName()) || pro.getAssociateDegreeNames().startsWith(degree.getName()+",")
-                                || pro.getAssociateDegreeNames().contains(","+degree.getName()+",")
-                                || pro.getAssociateDegreeNames().endsWith(","+degree.getName()))).count());
-            }
-        }
-
-        msg.data = all;
-        return msg;
-    }
-    @RequestMapping("/importData")
-    public HttpRespMsg importData(HttpServletRequest request, MultipartFile file){
-       return reportExtraDegreeService.importData(request,file);
-    }
-    @RequestMapping("/exportData")
-    public HttpRespMsg exportData(HttpServletRequest request){
-        return reportExtraDegreeService.exportData(request);
-    }
-}
-

+ 0 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/SubProjectController.java

@@ -8,7 +8,6 @@ import com.management.platform.entity.ProjectTimer;
 import com.management.platform.entity.SubProject;
 import com.management.platform.mapper.ProjectTimerMapper;
 import com.management.platform.mapper.UserMapper;
-import com.management.platform.service.ProjectService;
 import com.management.platform.service.SubProjectService;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.beans.factory.annotation.Autowired;

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

@@ -1,976 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.github.pagehelper.IPage;
-import com.management.platform.entity.*;
-import com.management.platform.entity.vo.SysRichFunction;
-import com.management.platform.mapper.*;
-import com.management.platform.service.*;
-import com.management.platform.util.HttpRespMsg;
-import com.management.platform.util.MessageUtils;
-import org.assertj.core.util.Lists;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.StringUtils;
-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.multipart.MultipartFile;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.time.Duration;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2021-04-19
- */
-@RestController
-@RequestMapping("/task")
-public class TaskController {
-    @Resource
-    private HttpServletRequest request;
-    @Resource
-    private TaskService taskService;
-    @Resource
-    private ReportMapper reportMapper;
-    @Resource
-    private StagesService stagesService;
-    @Resource
-    private ProjectService projectService;
-    @Resource
-    private UserMapper userMapper;
-    @Resource
-    private TaskLogService taskLogService;
-    @Resource
-    private TaskCommentService taskCommentService;
-    @Resource
-    private InformationService informationService;
-    @Resource
-    private TaskProgressService taskProgressService;
-    @Resource
-    private SysFunctionMapper sysFunctionMapper;
-    @Resource
-    private TprogressPaticipatorsService tprogressPaticipatorsService;
-    @Resource
-    private TaskCommentMapper taskCommentMapper;
-    @Resource
-    private TaskMapper taskMapper;
-    @Resource
-    private TaskExecutorMapper taskExecutorMapper;
-    @Resource
-    private ParticipationMapper participationMapper;
-    @Resource
-    private TaskExecutorService taskExecutorService;
-//    @Resource
-//    private CompanyDingdingService companyDingdingService;
-    @Resource
-    private WxCorpInfoService wxCorpInfoService;
-    @Resource
-    private ProjectSeparateMapper projectSeparateMapper;
-    @Resource
-    private GroupParticipatorMapper groupParticipatorMapper;
-    @Resource
-    private DepartmentService departmentService;
-    @Resource
-    private TaskGroupService taskGroupService;
-    @Resource
-    private TaskAddCtrlMapper taskAddCtrlMapper;
-    @Resource
-    private TaskRestartMapper taskRestartMapper;
-    @Resource
-    private TaskPersonLiableMapper taskPersonLiableMapper;
-
-    @RequestMapping("/save")
-    @Transactional
-    public HttpRespMsg save(Task task) throws Exception {
-        String userId = request.getHeader("Token");
-        String executorListStr = task.getExecutorListStr();
-
-        //当前用户
-        User user = userMapper.selectById(userId);
-        HttpRespMsg msg = new HttpRespMsg();
-
-        //新建的任务,需要设置创建人,创建时间
-        if (task.getId() == null) {
-            task.setCreateDate(LocalDate.now());
-            task.setCreaterId(userId);
-            task.setCreaterName(user.getName());
-            task.setCreatorColor(user.getColor());
-            task.setCompanyId(user.getCompanyId());
-        }
-        if (!StringUtils.isEmpty(executorListStr)) {
-            List<User> allUsers = userMapper.selectList(new QueryWrapper<User>().eq("company_id", user.getCompanyId()));
-            List<TaskExecutor> executorList = JSONArray.parseArray(executorListStr, TaskExecutor.class);
-            task.setExecutorList(executorList);
-            executorList.stream().filter(ex->!StringUtils.isEmpty(ex.getExecutorId())).forEach(ex->{
-                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(","));
-            task.setExecutorId(StringUtils.isEmpty(ids)?null:ids);
-            String names = executorList.stream().filter(f->!StringUtils.isEmpty(f.getExecutorId())).map(TaskExecutor::getExecutorName).collect(Collectors.joining(","));
-            task.setExecutorName(StringUtils.isEmpty(names)?null:names);
-            String colors = executorList.stream().filter(f->!StringUtils.isEmpty(f.getExecutorId())).map(TaskExecutor::getExecutorColor).collect(Collectors.joining(","));
-            task.setExecutorColor(StringUtils.isEmpty(colors)?null:colors);
-            //总时长
-            task.setPlanHours(executorList.stream().filter(f->f.getPlanHours() != null).mapToInt(TaskExecutor::getPlanHours).sum());
-            //检查执行人是否在当前分组的参与人当中
-            List<GroupParticipator> groupParticipatorList = groupParticipatorMapper.selectList(new QueryWrapper<GroupParticipator>().eq("group_id", task.getGroupId()));
-            List<Participation> participationList = participationMapper.selectList(new QueryWrapper<Participation>().eq("project_id", task.getProjectId()));
-            for (TaskExecutor executor : executorList) {
-                if(!StringUtils.isEmpty(executor.getExecutorId())){
-                    boolean b = groupParticipatorList.stream().anyMatch(gp -> gp.getUserId() != null && gp.getUserId().equals(executor.getExecutorId()));
-                    if(!b){
-                        GroupParticipator g=new GroupParticipator();
-                        g.setGroupId(task.getGroupId());
-                        g.setUserId(executor.getExecutorId());
-                        groupParticipatorMapper.insert(g);
-                    }
-                    boolean b1 = participationList.stream().anyMatch(pl -> pl.getUserId() != null && pl.getUserId().equals(executor.getExecutorId()));
-                    if(!b1){
-                        Participation participation=new Participation();
-                        participation.setUserId(executor.getExecutorId());
-                        participation.setProjectId(task.getProjectId());
-                        participationMapper.insert(participation);
-                    }
-                }
-            }
-        }
-        //有父任务,需要设置名称
-        if (task.getParentTid() != null && task.getParentTname() == null) {
-            task.setParentTname(taskService.getById(task.getParentTid()).getName());
-        }
-        boolean isNew = false;
-        boolean needRecalculateProgress = false;
-        List<String> msgRecepientList = new ArrayList<>();
-        List<Task> needReOrderList = new ArrayList<>();
-        //新建的任务需要计算排序
-        if (task.getId() == null) {
-            isNew = true;
-            QueryWrapper<Task> queryWrapper = new QueryWrapper<Task>();
-            queryWrapper.eq("stages_id", task.getStagesId()).eq("task_status", 0).orderByDesc("seq").last("limit 1");
-            List<Task> taskList = taskService.list(queryWrapper);
-            if (taskList.size() == 0) {
-                task.setSeq(1);
-            } else {
-                task.setSeq(taskList.get(0).getSeq() + 1);
-            }
-            //比当前创建的这条task的seq大于或者等于的,都要往后排一位
-            queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("stages_id", task.getStagesId()).ge("seq", task.getSeq());
-            List<Task> oldTaskList = taskMapper.selectList(queryWrapper);
-            for (Task t : oldTaskList) {
-                Task newT = new Task();
-                newT.setId(t.getId());
-                newT.setSeq(t.getSeq() + 1);
-                needReOrderList.add(newT);
-            }
-            if (task.getExecutorId() != null) {
-                msgRecepientList = task.getExecutorList().stream().filter(exe->!StringUtils.isEmpty(exe.getExecutorId())).map(TaskExecutor::getExecutorId).collect(Collectors.toList());
-            }
-            if (task.getTaskType() == 1) {
-                needRecalculateProgress = true;
-            }
-        } else {
-            //更新的情况,需要对比是否修改了任务标题,更新子任务的parentTname
-            Task oldTask = taskService.getById(task.getId());
-            if (!oldTask.getName().equals(task.getName())) {
-                Task sample = new Task();
-                sample.setParentTname(task.getName());
-                taskService.update(sample, new QueryWrapper<Task>().eq("parent_tid", task.getId()));
-            }
-            List<TaskExecutor> oldExeList = taskExecutorMapper.selectList(new QueryWrapper<TaskExecutor>().eq("task_id", task.getId()));
-            //计算需要移除的执行人
-            List<Integer> ids = oldExeList.stream().filter(old->!task.getExecutorList().stream().anyMatch(newT->newT.getId()!=null&&newT.getId().equals(old.getId())))
-                        .map(TaskExecutor::getId).collect(Collectors.toList());
-            if (ids.size() > 0) {
-                taskExecutorService.removeByIds(ids);
-            }
-            if (task.getExecutorList().size() > 0) {
-                task.getExecutorList().forEach(exe->exe.setTaskId(task.getId()));
-                taskExecutorService.saveOrUpdateBatch(task.getExecutorList());
-                //新增的执行人
-                msgRecepientList = task.getExecutorList().stream().filter(newT->!StringUtils.isEmpty(newT.getExecutorId()) && !oldExeList.stream().anyMatch(old->newT.getExecutorId().equals(old.getExecutorId())))
-                        .map(TaskExecutor::getExecutorId).collect(Collectors.toList());
-            }
-            if(task.getStartDate()==null){
-                taskMapper.updateStartDate(task.getId());
-            }
-            if(task.getEndDate()==null){
-                taskMapper.updateEndDate(task.getId());
-            }
-            if(task.getFinishDate()==null){
-                taskMapper.updateFinishDate(task.getId());
-            }
-            if ((oldTask.getTaskType() == 1 && task.getTaskType() != 1) || (oldTask.getTaskType() != 1 && task.getTaskType() == 1)) {
-                needRecalculateProgress = true;
-            }
-        }
-        System.out.println(task.getStartDate());
-        System.out.println(task.getEndDate());
-        System.out.println(task.getFinishDate());
-        taskService.saveOrUpdate(task);
-        if (task.getExecutorId() == null) {
-            //清空执行人
-            if (!isNew) {
-                taskMapper.removeTaskExecutor(task.getId());
-            }
-        }
-        if (isNew) {
-            //保存任务执行人
-            task.getExecutorList().forEach(exe->exe.setTaskId(task.getId()));
-            taskExecutorService.saveBatch(task.getExecutorList());
-            //重新调整其他任务的手动排序
-            if (needReOrderList.size() > 0) {
-                taskService.updateBatchById(needReOrderList);
-            }
-        }
-
-
-        TaskComment comment = new TaskComment();
-        comment.setTaskId(task.getId());
-        comment.setUserId(user.getId());
-        comment.setUserName(user.getName());
-        comment.setType(isNew?1:2);
-        //comment.setContent(user.getName()+(isNew?"创建":"编辑")+"了任务");
-        comment.setContent(user.getName()+(isNew?MessageUtils.message("entry.create"):MessageUtils.message("entry.editedTask"))+MessageUtils.message("entry.task"));
-        taskCommentMapper.insert(comment);
-
-        //需要重新计算项目进度
-        if (needRecalculateProgress) {
-            updateProjectProgress(task.getProjectId());
-        }
-        if (msgRecepientList.size() > 0) {
-            //发消息通知执行人, 带项目id
-            msgRecepientList.forEach(msgRecepient->{
-                informationService.save(new Information().setType(1).setContent(String.valueOf(task.getProjectId())).setUserId(msgRecepient));
-            });
-            List<User> recpUserList = userMapper.selectList(new QueryWrapper<User>().in("id", msgRecepientList));
-            if (recpUserList.size() > 0) {
-                if (recpUserList.get(0).getDingdingUserid() != null) {
-                    //钉钉用户
-//                    CompanyDingding dingding = companyDingdingService.getOne(new QueryWrapper<CompanyDingding>().eq("company_id", user.getCompanyId()));
-//                    LocalDate endDate = task.getEndDate();
-//                    String endStr = "";
-//                    if (endDate != null) {
-//                        endStr = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(endDate);
-//                    }
-//                    companyDingdingService.sendNewTaskMsg(dingding, recpUserList.stream().map(User::getDingdingUserid).collect(Collectors.joining(",")),
-//                            task.getName(), endStr);
-                } else if (recpUserList.get(0).getCorpwxUserid() != null) {
-                    //企业微信用户
-                    WxCorpInfo wxCorpInfo = wxCorpInfoService.getOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
-                    String corpUid = recpUserList.stream().map(User::getCorpwxUserid).distinct().collect(Collectors.joining("|"));
-                    JSONObject json=new JSONObject();
-                    JSONArray dataJson=new JSONArray();
-                    JSONObject jsonObj=new JSONObject();
-                    jsonObj.put("key", "任务内容");
-                    jsonObj.put("value",task.getName());
-                    dataJson.add(jsonObj);
-                    json.put("template_id","tty9TkCAAAovv416zsWtn0e06CJ635HA");
-                    json.put("url", "https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww4e237fd6abb635af&redirect_uri=http://worktime.ttkuaiban.com/api/corpWXAuth&response_type=code&scope=snsapi_base&state=task#wechat_redirect");
-                    json.put("content_item",dataJson);
-                    //todo:发送消息提醒任务
-                    wxCorpInfoService.sendWXCorpTemplateMsg(wxCorpInfo, corpUid, json);
-                }
-            }
-        }
-        return msg;
-    }
-
-    private void updateProjectProgress(Integer projectId) {
-        //只有里程碑才更新项目进度, 非已撤销状态的
-        List<Task> all = taskMapper.simpleList(new QueryWrapper<Task>().eq("project_id", projectId).ne("task_status", 2).eq("task_type",1),null,null);
-        Project project = new Project();
-        project.setId(projectId);
-        if (all.size() > 0) {
-            long running = all.stream().filter(a -> a.getTaskStatus() == 1).count();
-            int progress = ((int) running) * 100 / all.size();
-            project.setProgress(progress);
-        } else {
-            project.setProgress(0);
-        }
-        projectService.updateById(project);
-    }
-
-    @RequestMapping("/finish")
-    public HttpRespMsg finish(Task task,String personLiableIds,String reason) {
-        HttpRespMsg msg = new HttpRespMsg();
-        DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        String token = request.getHeader("TOKEN");
-        User user = userMapper.selectById(token);
-        //进行完成操作时需要检查子任务是否全部完成
-        if (task.getTaskStatus() == 0) {
-            QueryWrapper<Task> subQuery = new QueryWrapper<Task>();
-            subQuery.eq("parent_tid", task.getId()).eq("task_status", 0);
-            int count = taskService.count(subQuery);
-            if (count > 0) {
-                //msg.setError("请先完成全部子任务");
-                msg.setError(MessageUtils.message("Stages.SubTasksError"));
-                return msg;
-            }
-        }
-        boolean isFinishTask = false;
-        if (task.getTaskStatus() == 0) {
-            task.setTaskStatus(1);
-            isFinishTask = true;
-            //计算排序,需要移动到最后
-            Task old = taskService.getById(task.getId());
-            if (old.getFinishDate() == null) {
-                //仅对没有完成日期的任务设置完成日期
-                task.setFinishDate(LocalDate.now());
-            }
-
-            if (task.getParentTid() == null) {
-                QueryWrapper<Task> queryWrapper = new QueryWrapper<>();
-                queryWrapper.eq("stages_id", old.getStagesId()).isNull("parent_tid").orderByDesc("seq").last("limit 1");
-                List<Task> afterList = taskService.list(queryWrapper);
-                if (afterList.size() > 0) {
-                    //取第一个,也就是正序排序的最后一个
-                    Task lastItem = afterList.get(0);
-                    if (!lastItem.getId().equals(old.getId())) {
-                        task.setSeq(lastItem.getSeq() + 1);//当前操作的任务不是最后一个的情况下,需要把它排到最后,+1
-                    }
-                }
-            }
-            TaskComment taskComment=new TaskComment();
-            taskComment.setUserName(user.getName());
-            taskComment.setContent(user.getName()+ df.format(LocalDateTime.now())+MessageUtils.message("entry.completeTask"));
-            taskComment.setTaskId(task.getId());
-            taskComment.setUserId(user.getId());
-            taskComment.setCreateTime(LocalDateTime.now());
-            taskComment.setType(3);
-            taskCommentMapper.insert(taskComment);
-        } else if (task.getTaskStatus() == 1) {
-            task.setTaskStatus(0);
-            TaskComment taskComment=new TaskComment();
-            taskComment.setUserName(user.getName());
-            taskComment.setContent(user.getName()+ df.format(LocalDateTime.now())+MessageUtils.message("entry.restartTask"));
-            taskComment.setTaskId(task.getId());
-            taskComment.setUserId(user.getId());
-            taskComment.setCreateTime(LocalDateTime.now());
-            taskComment.setType(4);
-            taskCommentMapper.insert(taskComment);
-            TaskRestart taskRestart=new TaskRestart();
-            taskRestart.setOperatorId(user.getId());
-            taskRestart.setRestartDate(LocalDateTime.now());
-            taskRestart.setTaskId(task.getId());
-            taskRestart.setRestartReason(reason);
-            taskRestart.setTaskCommentId(taskComment.getId());
-            taskRestartMapper.insert(taskRestart);
-            if(personLiableIds!=null&&!personLiableIds.equals("")){
-                String[] split = personLiableIds.split(",");
-                List<String> list = Arrays.asList(split);
-                for (String s : list) {
-                    TaskPersonLiable taskPersonLiable=new TaskPersonLiable();
-                    taskPersonLiable.setPersonLiableId(s);
-                    taskPersonLiable.setTaskId(task.getId());
-                    taskPersonLiable.setTaskRestartId(taskRestart.getId());
-                    taskPersonLiable.setTaskCommentId(taskComment.getId());
-                    taskPersonLiableMapper.insert(taskPersonLiable);
-                }
-            }
-        } else {
-            //msg.setError("状态不对,无法操作");
-            msg.setError(MessageUtils.message("other.stateError"));
-            return msg;
-        }
-
-        taskService.updateById(task);
-        ArrayList<Integer> finishedTaskIds = Lists.list(task.getId());
-        if (isFinishTask) {
-            List<Task> finishedMileStoneList = taskMapper.selectList(new QueryWrapper<Task>().select("id, name, project_id, finish_date").in("id", finishedTaskIds).eq("task_type", 1));
-            taskService.notifyMileStoneFinish(user.getCompanyId(), finishedMileStoneList);
-        }
-
-        //如果是里程碑,需要更新项目完成度
-        task = taskMapper.selectById(task.getId());
-        if (task.getTaskType() == 1) {
-            Integer projectId = task.getProjectId();
-            updateProjectProgress(projectId);
-        }
-        return msg;
-    }
-
-
-    @RequestMapping("/changeOrder")
-    public HttpRespMsg changeOrder(Integer id, Integer oldIndex, Integer newIndex, Integer oldStagesId, Integer newStagesId) {
-        HttpRespMsg msg = new HttpRespMsg();
-        Task curItem = new Task();
-        curItem.setId(id);
-        if (!oldStagesId.equals(newStagesId)) {
-            //获取移动到的目标位置上一个数据的seq,计算当前任务的新seq
-            //跨stage移动,旧的stage上移除,切换stages后,旧的任务列表自动会重新排序,不需要再操作
-            curItem.setStagesId(newStagesId);
-            curItem.setStagesName(stagesService.getById(newStagesId).getStagesName());
-        }
-
-        QueryWrapper<Task> queryWrapper = new QueryWrapper<Task>();
-        int startSeq = 0;
-        if (newIndex > 0) {
-            int beforeItemIndex = 0;
-            if (oldStagesId.equals(newStagesId)) {
-                beforeItemIndex = newIndex > oldIndex?newIndex:newIndex-1;
-            } else {
-                //跨stages移动,相当于从下往上移动
-                beforeItemIndex = newIndex-1;
-            }
-            queryWrapper.eq("stages_id", newStagesId).isNull("parent_tid").orderByAsc("seq").last("limit " +beforeItemIndex+", 1");
-            List<Task> taskList = taskService.list(queryWrapper);
-            if (taskList.size() > 0) {
-                Task beforeItem = taskList.get(0);
-                startSeq = beforeItem.getSeq() + 1;
-            } else {
-                startSeq = 1;
-            }
-        } else {
-            //移动到了第一个位置
-            startSeq = 1;
-        }
-
-        curItem.setSeq(startSeq);
-        //在新位置下面的包括原来占据新位置的,全部调整,从startSeq开始递增
-        queryWrapper = new QueryWrapper<Task>();
-        queryWrapper.eq("stages_id", newStagesId).isNull("parent_tid").ge("seq", startSeq).orderByAsc("seq");
-        List<Task> taskList = taskService.list(queryWrapper);
-        if (taskList.size() > 0) {
-            List<Task> batchList = new ArrayList<>();
-            for (Task t:taskList) {
-                Task item = new Task();
-                item.setId(t.getId());
-                startSeq++;
-                item.setSeq(startSeq);
-                batchList.add(item);
-            }
-            taskService.updateBatchById(batchList);
-        }
-
-        taskService.updateById(curItem);
-        return msg;
-    }
-
-
-    @RequestMapping("/list")
-    public HttpRespMsg list(Task task, Integer viewId, String order, boolean isDesc,Integer pageIndex,Integer pageSize) {
-        HttpRespMsg msg = new HttpRespMsg();
-        Integer size=pageSize;
-        Integer start=(pageIndex-1)*pageSize;
-        String userId = request.getHeader("Token");
-        User user = userMapper.selectById(userId);
-        Project project = projectService.getById(task.getProjectId());
-        QueryWrapper<Task> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("project_id", task.getProjectId());
-        List<Stages> stagesList = stagesService.list(new QueryWrapper<Stages>().eq("project_id", task.getProjectId()));
-        if (isDesc) {
-            queryWrapper.orderByDesc(order);
-        } else {
-            queryWrapper.orderByAsc(order);
-        }
-
-        //按视图查看
-        if (viewId == 1) {
-            //全部任务
-        } else if (viewId == 2) {
-            //进行中的任务
-            queryWrapper.eq("task_status", 0);
-        } else if (viewId == 3) {
-            //已完成的任务
-            queryWrapper.eq("task_status", 1);
-        } else if (viewId == 4) {
-            //待安排的任务
-            queryWrapper.isNull("executor_id");
-        } else if (viewId == 5) {
-            //我创建的任务
-            queryWrapper.eq("creater_id", userId);
-        } else if (viewId == 6) {
-            //我执行的任务
-            queryWrapper.like("executor_id", userId);
-        } else if (viewId == 7) {
-            //今天的任务
-            queryWrapper.eq("end_date", LocalDate.now());
-        } else if (viewId == 8) {
-            //已超期的任务,未完成的任务
-            queryWrapper.lt("end_date", LocalDate.now()).eq("task_status", 0);
-        }
-        List<Task> list = taskService.simpleList(queryWrapper,start,size);
-        int total = taskMapper.selectCount(queryWrapper);
-        //没有权限只能看到自己创建的,负责的和待分配的任务
-        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部任务");
-        if (functionList.size() == 0 && !userId.equals(project.getInchargerId())) {
-            list = list.stream().filter(t->t.getExecutorId() == null || t.getExecutorId().contains(userId) || userId.equals(t.getCreaterId())).collect(Collectors.toList());
-        }
-        //设置列表名称
-        list.forEach(item->{
-            Optional<Stages> first = stagesList.stream().filter(s -> s.getId().equals(item.getStagesId())).findFirst();
-            if (first.isPresent()) {
-                item.setStagesName(first.get().getStagesName());
-            }
-
-        });
-        Map map=new HashMap();
-        map.put("records",list);
-        map.put("total",total);
-        msg.data = map;
-        return msg;
-    }
-
-    @RequestMapping("/getTaskOnlyList")
-    public HttpRespMsg getTaskOnlyList(Integer projectId) {
-        HttpRespMsg msg = new HttpRespMsg();
-        String userId = request.getHeader("Token");
-        User user = userMapper.selectById(userId);
-        QueryWrapper<Task> queryWrapper = new QueryWrapper<>();
-        //只看任务类型的
-        queryWrapper.eq("project_id", projectId).eq("task_type", 0);
-        queryWrapper.orderByDesc("id");
-        List<Task> list = taskService.nameList(queryWrapper);
-        Project project = projectService.getById(projectId);
-
-        //没有权限只能看到自己创建的,负责的和待分配的任务
-        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部任务");
-        if (functionList.size() == 0 && !userId.equals(project.getInchargerId())) {
-            list = list.stream().filter(t->t.getExecutorId() == null || t.getExecutorId().contains(userId) || t.getCreaterId().equals(userId)).collect(Collectors.toList());
-        }
-
-        msg.data = list;
-        return msg;
-    }
-
-    /**
-     * 添加关联的任务
-     * @param milestoneId
-     * @param taskIds
-     * @return
-     */
-    @RequestMapping("/addMileStoneTask")
-    public HttpRespMsg addMileStoneTask(Integer milestoneId, String taskIds) {
-        return taskService.addMileStoneTask(milestoneId, taskIds);
-    }
-
-    /**
-     * 删除关联的任务
-     * @param id
-     * @return
-     */
-    @RequestMapping("/removeMileStoneTask")
-    public HttpRespMsg removeMileStoneTask(Integer id) {
-        return taskService.removeMileStoneTask(id);
-    }
-
-    /**
-     * 获取关联的任务列表
-     * @param milestoneId
-     * @return
-     */
-    @RequestMapping("/getMilestoneTaskList")
-    public HttpRespMsg getMilestoneTaskList(Integer milestoneId) {
-        return taskService.getMilestoneTaskList(milestoneId);
-    }
-
-
-    /**
-     * 认领任务
-     * @param id
-     * @return
-     */
-    @RequestMapping("/addAsMyTask")
-    public HttpRespMsg addAsMyTask(Integer id) {
-        HttpRespMsg msg = new HttpRespMsg();
-        String userId = request.getHeader("Token");
-        Task task = new Task();
-        //检查是否已经被认领
-        Task t = taskService.getById(id);
-        if (t.getExecutorId() != null) {
-            if (t.getExecutorId().contains(userId)) {
-                //msg.setError("您已认领过该任务,请勿重复操作");
-                msg.setError(MessageUtils.message("Stages.repeatedCollection"));
-            } else {
-                //msg.setError("该任务已被其他人认领");
-                msg.setError(MessageUtils.message("Stages.receiveError"));
-            }
-        } else {
-            task.setId(id);
-            task.setExecutorId(userId);
-            User user = userMapper.selectById(userId);
-            task.setExecutorName(user.getName());
-            task.setExecutorColor(user.getColor());
-            taskService.updateById(task);
-            //加入执行人表
-            List<TaskExecutor> executorList = taskExecutorMapper.selectList(new QueryWrapper<TaskExecutor>().eq("task_id", id));
-            if (executorList.size() > 0) {
-                TaskExecutor oldExe = executorList.get(0);
-                TaskExecutor.fromTask(task, oldExe);
-                taskExecutorMapper.updateById(oldExe);
-            } else {
-                //不存在,新增一条
-                List<TaskExecutor> executors = TaskExecutor.fromTask(task);
-                taskExecutorService.saveBatch(executors);
-            }
-        }
-        return msg;
-    }
-
-    /**
-     * 获取任务详情
-     * @param id
-     * @return
-     */
-    @RequestMapping("/getTask")
-    public HttpRespMsg getTask(Integer id) {
-        HttpRespMsg msg = new HttpRespMsg();
-        String userId = request.getHeader("Token");
-        User user = userMapper.selectById(userId);
-        Task t = taskService.getById(id);
-        if (t == null) {
-            //msg.setError("该任务已不存在");
-            msg.setError(MessageUtils.message("Stages.noExist"));
-            return msg;
-        }
-        //查询直接子任务
-        QueryWrapper<Task> subQuery = new QueryWrapper<Task>().eq("parent_tid", id).orderByAsc("end_date");
-        t.setSubTaskList(taskService.list(subQuery));
-
-        //查询最新的一条任务进展
-        List<TaskProgress> list = taskProgressService.list(new QueryWrapper<TaskProgress>().eq("task_id", id).orderByDesc("id").last("limit 1"));
-        if (list.size() > 0) {
-            t.setProgress(list.get(0));
-            //设置创建人姓名
-            String name = userMapper.selectById(list.get(0).getCreatorId()).getName();
-            list.get(0).setCreatorName(name);
-        }
-        //查询任务的执行人
-        t.setExecutorList(taskExecutorMapper.selectList(new QueryWrapper<TaskExecutor>().eq("task_id", t.getId())));
-        //查询项目负责人id以及所属任务分组负责人id
-        Project project = projectService.getOne(new QueryWrapper<Project>().eq("id", t.getProjectId()));
-        TaskGroup group = taskGroupService.getOne(new QueryWrapper<TaskGroup>().eq("id", t.getGroupId()));
-        t.setProjectInchargerId(project.getInchargerId()==null?"":project.getInchargerId());
-        t.setGroupInchargerId(group.getInchargerId()==null?"":group.getInchargerId());
-        //判断当前用户是否有权限创建任务: 有权限的包括管理全部项目,项目创建人,项目PM, 分组负责人,分组参与人
-        List<SysRichFunction> manageAllProjects = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "管理全部项目");
-        boolean canAddTask = false;
-        Integer companyId = user.getCompanyId();
-        TaskAddCtrl taskAddCtrl = taskAddCtrlMapper.selectById(companyId);
-        if (taskAddCtrl == null) {
-            //没有的话,默认生成一个
-            taskAddCtrl = new TaskAddCtrl();
-            taskAddCtrl.setCompanyId(companyId);
-            taskAddCtrl.setCtrlType(1);//0-普通项目参与人不可添加任务,1-项目参与人可添加,2-仅分组参与人可添加
-            taskAddCtrlMapper.insert(taskAddCtrl);
-        }
-        if (manageAllProjects.size() > 0 || userId.equals(project.getCreatorId()) || userId.equals(project.getInchargerId())) {
-            canAddTask = true;
-        }
-        if (!canAddTask) {
-            //进一步判断是否是分组的负责人,参与人
-            if (userId.equals(group.getInchargerId())) {
-                canAddTask = true;
-            }
-            if (!canAddTask) {
-                Integer ctrlType = taskAddCtrl.getCtrlType();
-                if (ctrlType == 1) {
-                    canAddTask = true;
-                } else if (ctrlType == 2) {
-                    //分组参与人可以创建任务
-                    int count = groupParticipatorMapper.selectCount(new QueryWrapper<GroupParticipator>().eq("user_id", userId).eq("group_id", group.getId()));
-                    if (count > 0) {
-                        canAddTask = true;
-                    }
-                }
-            }
-        }
-        t.setCanAddTask(canAddTask);
-        msg.data = t;
-        return msg;
-    }
-
-    @RequestMapping("/getSubTask")
-    public HttpRespMsg getSubTask(Integer id) {
-        HttpRespMsg msg = new HttpRespMsg();
-        String userId = request.getHeader("Token");
-
-        //查询直接子任务
-        QueryWrapper<Task> subQuery = new QueryWrapper<Task>().eq("parent_tid", id).orderByAsc("end_date");
-        msg.data = taskService.list(subQuery);
-        return msg;
-    }
-
-    @RequestMapping("/getRecentTask")
-    public HttpRespMsg getRecentTask(Integer projectId,
-                                     @RequestParam(required = false, defaultValue = "0") Integer isSubstitude) {
-        HttpRespMsg msg = new HttpRespMsg();
-        String userId = request.getHeader("Token");
-        if (isSubstitude == 0) {
-            msg.data = taskMapper.recentSimpleList(projectId, userId);
-        } else {
-            //代填的情况,获取的是项目中的所有任务
-            msg.data = taskMapper.recentSimpleList(projectId, null);
-        }
-
-        return msg;
-    }
-
-
-    @RequestMapping("/getMileStoneList")
-    public HttpRespMsg getMileStoneList(Integer projectId) {
-        HttpRespMsg msg = new HttpRespMsg();
-        String userId = request.getHeader("Token");
-
-        QueryWrapper<Task> queryWrapper = new QueryWrapper<Task>().eq("project_id", projectId).eq("task_type", 1);
-        queryWrapper.orderByAsc("end_date is null").orderByAsc("end_date");
-        msg.data = taskService.list(queryWrapper);
-        return msg;
-    }
-
-
-    @RequestMapping("/getExecutorPanel")
-    public HttpRespMsg getExecutorPanel(Integer projectId) {
-        return taskService.getExecutorPanel(projectId);
-    }
-
-    @RequestMapping("/getExecutorPlanHour")
-    public HttpRespMsg getExecutorPlanHour(Integer projectId){
-        return taskService.getExecutorPlanHour(projectId);
-    }
-
-    @RequestMapping("/getStagesPanel")
-    public HttpRespMsg getStagesPanel(Integer projectId) {
-        return taskService.getStagesPanel(projectId);
-    }
-    @RequestMapping("/getTopCostTask")
-    public HttpRespMsg getTopCostTask(Integer projectId) {
-        return taskService.getTopCostTask(projectId);
-    }
-
-    @RequestMapping("/delete")
-    public HttpRespMsg delete(Integer id) {
-        Task task = taskService.getById(id);
-        if (task == null) {
-            HttpRespMsg msg = new HttpRespMsg();
-            //msg.setError("该任务不存在,请刷新查看");
-            msg.setError(MessageUtils.message("Stages.noExistAndRefresh"));
-            return msg;
-        }
-
-        if (task.getParentTid() == null) {
-            //删除的是第一级任务,需要调整顺序
-            List<Task> afterList = taskService.list(new QueryWrapper<Task>().eq("stages_id", task.getStagesId()).isNull("parent_tid").gt("seq", task.getSeq()));
-            if (afterList.size() > 0) {
-                List<Task> finalList = new ArrayList<>();
-                afterList.forEach(a->{
-                    Task t = new Task();
-                    t.setId(a.getId());
-                    t.setSeq(a.getSeq() -1);
-                    finalList.add(t);
-                });
-                taskService.updateBatchById(finalList);
-            }
-        }
-        long cnt = reportMapper.selectCount(new QueryWrapper<Report>().eq("task_id", id));
-        if (cnt > 0) {
-            reportMapper.deleteReportTask(id);
-        }
-        taskService.removeById(id);
-        //删除任务日志
-        taskLogService.remove(new QueryWrapper<TaskLog>().eq("task_id",  id));
-        //删除留言
-        taskCommentService.remove(new QueryWrapper<TaskComment>().eq("task_id", id));
-        deleteSubTask(task);
-
-
-        //删除里程碑,需要重新计算项目进度
-        if (task.getTaskType() == 1) {
-            updateProjectProgress(task.getProjectId());
-        }
-        return new HttpRespMsg();
-    }
-
-    private void deleteSubTask(Task task) {
-        List<Task> subTasks = taskService.list(new QueryWrapper<Task>().eq("parent_tid", task.getId()));
-        if (subTasks.size() > 0) {
-            taskService.remove(new QueryWrapper<Task>().eq("parent_tid", task.getId()));
-            List<Integer> collect = subTasks.stream().map(Task::getId).collect(Collectors.toList());
-            //删除任务日志
-            taskLogService.remove(new QueryWrapper<TaskLog>().in("task_id",  collect));
-            //删除留言
-            taskCommentService.remove(new QueryWrapper<TaskComment>().in("task_id", collect));
-            subTasks.forEach(s->{
-                deleteSubTask(s);
-            });
-        }
-    }
-
-    @RequestMapping("/getTaskTimeCompare")
-    public HttpRespMsg getTaskTimeCompare(Integer projectId) {
-        return taskService.getTaskTimeCompare(projectId);
-    }
-
-    @RequestMapping("/exportTaskTimeCompare")
-    public HttpRespMsg exportTaskTimeCompare(Integer projectId) {
-        return taskService.exportTaskTimeCompare(projectId);
-    }
-
-    @RequestMapping("exportTask")
-    public HttpRespMsg exportTask(Integer projectId, Integer taskType) {
-        return taskService.exportTask(projectId, taskType);
-    }
-
-    @RequestMapping("/importTask")
-    public HttpRespMsg importUser(Integer projectId, Integer groupId, @RequestParam MultipartFile file) {
-        return taskService.importTask(projectId, groupId, file, request);
-    }
-
-
-    /**
-     * task/listByPage获取待办任务列表
-     * @param status 0-进行中,1-已完成
-     * @param viewId 1-我执行的任务, 2-我创建的任务
-     * @param pageIndex
-     * @param pageSize
-     * @return
-     */
-    @RequestMapping("/listByPage")
-    public HttpRespMsg listByPage(Integer status, Integer viewId, Integer pageIndex, Integer pageSize,Integer type,Integer dateType,String startDate,String endDate,Integer deptId) {
-        HttpRespMsg msg = new HttpRespMsg();
-        String userId = request.getHeader("Token");
-        User user = userMapper.selectById(userId);
-        Integer companyId = user.getCompanyId();
-        QueryWrapper<Task> queryWrapper = new QueryWrapper<>();
-
-        //任务状态
-        queryWrapper.eq("task_status", status).eq("task.company_id", companyId);
-        if (viewId == 1) {
-            //我执行的任务
-            queryWrapper.like("executor_id", userId);
-        } else if (viewId == 2) {
-            //我创建的任务
-            queryWrapper.eq("creater_id", userId);
-        }
-        if(type!=null){
-            queryWrapper.eq("task_type",type);
-        }
-        if(dateType!=null){
-            switch (dateType){
-                case 0:
-                    queryWrapper.ge("start_date",startDate).le("start_date",endDate);
-                    break;
-                case 1:
-                    queryWrapper.ge("task.end_date",startDate).le("task.end_date",endDate);
-                    break;
-            }
-        }
-//        else if (viewId == 3) {
-//            //今天的任务
-//            queryWrapper.eq("end_date", LocalDate.now());
-//        } else if (viewId == 4) {
-//            //已超期的任务,未完成的任务
-//            queryWrapper.lt("end_date", LocalDate.now()).eq("task_status", 0);
-//        }
-        List<Integer> branchDepartment=null;
-        if(deptId!=null){
-            List<Department> departmentList=departmentService.list(new QueryWrapper<Department>().eq("company_id",companyId));
-            branchDepartment= getBranchDepartment(deptId, departmentList);
-        }
-        List<Task> list = taskMapper.getTaskWithProjectName(queryWrapper, (pageIndex-1)*pageSize, pageSize,companyId,branchDepartment);
-        List<Integer> collect = list.stream().map(l -> l.getId()).distinct().collect(Collectors.toList());
-        collect.add(-1);
-        List<TaskExecutor> taskExecutorList = taskExecutorMapper.selectList(new QueryWrapper<TaskExecutor>().in("task_id", collect));
-        list.forEach(l->{
-            List<TaskExecutor> executorList = taskExecutorList.stream().filter(tl -> tl.getTaskId().equals(l.getId())&&tl.getExecutorId()!=null).collect(Collectors.toList());
-            l.setExecutorList(executorList);
-        });
-        int total = taskMapper.selectCount(queryWrapper);
-        Map<String, Object> map = new HashMap<>();
-        map.put("records", list);
-        map.put("total", total);
-        msg.data = map;
-        return msg;
-    }
-    private List<Integer> getBranchDepartment(Integer departmentId, List<Department> departmentList) {
-        List<Integer> list = new ArrayList<>();
-        list.add(departmentId);
-        //搜到子部门进行添加
-        for (Department department : departmentList) {
-            if (departmentId.equals(department.getSuperiorId())) {
-                list.addAll(getBranchDepartment(department.getDepartmentId(), departmentList));
-            }
-        }
-        return list;
-    }
-    @RequestMapping("/getGroupNameList")
-    public HttpRespMsg getGroupNameList(HttpServletRequest request){
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        List<Project> projectList = projectService.list(new QueryWrapper<Project>().eq("company_id", companyId));
-        List<Integer> collect = projectList.stream().map(Project::getId).distinct().collect(Collectors.toList());
-        List<ProjectSeparate> projectSeparateList = projectSeparateMapper.selectList(new QueryWrapper<ProjectSeparate>().in("id", collect));
-        List<String> nameList = projectSeparateList.stream().map(ProjectSeparate::getProjectCategorySub).distinct().collect(Collectors.toList());
-        httpRespMsg.data=nameList;
-        return httpRespMsg;
-    }
-
-    @RequestMapping("/operateMeeting")
-    public HttpRespMsg operateMeeting(HttpServletRequest request,Integer taskId,String startTime,String endTime) throws Exception {
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        User user = userMapper.selectById(request.getHeader("token"));
-        WxCorpInfo wxCorpInfo = wxCorpInfoService.list(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId())).get(0);
-        Task task = taskMapper.selectById(taskId);
-        DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        LocalDateTime start = LocalDateTime.parse(startTime, df);
-        if(start.isBefore(LocalDateTime.now())){
-            httpRespMsg.setError("开始时间必须大于当前时间");
-            return httpRespMsg;
-        }
-        LocalDateTime end = LocalDateTime.parse(endTime, df);
-        if(end.isBefore(start)){
-            httpRespMsg.setError("结束时间必须大于开始时间");
-            return httpRespMsg;
-        }
-        Duration between = Duration.between(start, end);
-        List<TaskExecutor> taskExecutorList = taskExecutorMapper.selectList(new QueryWrapper<TaskExecutor>().eq("task_id", task.getId()));
-        if(taskExecutorList.size()>0){
-            List<String> list = taskExecutorList.stream().map(TaskExecutor::getExecutorId).distinct().collect(Collectors.toList());
-            String userIds = userMapper.selectList(new QueryWrapper<User>().in("id", list)).stream().map(User::getCorpwxUserid).distinct().collect(Collectors.joining("|"));
-            String meetingResp;
-            if(!StringUtils.isEmpty(task.getMeetingId())){
-                meetingResp = wxCorpInfoService.operateMeeting(userIds, "工时管家任务", task.getName(), startTime, between.getSeconds(),wxCorpInfo, "update", task.getMeetingId());
-            }else {
-                meetingResp =  wxCorpInfoService.operateMeeting(userIds,"工时管家任务",task.getName(),startTime,between.getSeconds(),wxCorpInfo,"create",null);
-                if(!meetingResp.contains("invalid")){
-                    task.setMeetingId(meetingResp);
-                    taskMapper.updateById(task);
-                }
-            }
-            httpRespMsg.data=meetingResp;
-        }else httpRespMsg.setError("该任务无执行人");
-        return httpRespMsg;
-    }
-    @RequestMapping("/getMeeting")
-    public HttpRespMsg getMeeting(Integer taskId) throws Exception {
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        User user = userMapper.selectById(request.getHeader("token"));
-        WxCorpInfo wxCorpInfo = wxCorpInfoService.list(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId())).get(0);
-        Task task = taskMapper.selectById(taskId);
-        String meetingInfo = wxCorpInfoService.operateMeeting(null, null, null, null, 300, wxCorpInfo, "get_info", task.getMeetingId());
-        httpRespMsg.data=meetingInfo;
-        return httpRespMsg;
-    }
-}
-

+ 0 - 649
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/UserCorpwxTimeController.java

@@ -1,649 +0,0 @@
-package com.management.platform.controller;
-
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.*;
-import com.management.platform.entity.vo.SysRichFunction;
-import com.management.platform.entity.vo.WorktimeItem;
-import com.management.platform.mapper.*;
-import com.management.platform.service.*;
-import com.management.platform.util.*;
-import org.apache.commons.io.FileUtils;
-import org.apache.poi.EncryptedDocumentException;
-import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
-import org.apache.poi.ss.usermodel.*;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.format.annotation.DateTimeFormat;
-import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.io.*;
-import java.math.BigDecimal;
-import java.text.DecimalFormat;
-import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
-import java.time.format.TextStyle;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author Seyason
- * @since 2022-01-04
- */
-@RestController
-@RequestMapping("/user-corpwx-time")
-public class UserCorpwxTimeController {
-
-    @Value(value = "${upload.path}")
-    private String path;
-    @Resource
-    UserCorpwxTimeMapper userCorpwxTimeMapper;
-    @Resource
-    HttpServletRequest request;
-    @Resource
-    UserMapper userMapper;
-    @Resource
-    ParticipationMapper participationMapper;
-    @Resource
-    DepartmentService departmentService;
-    @Resource
-    ProjectMapper projectMapper;
-    @Resource
-    ReportService reportService;
-    @Resource
-    DepartmentMapper departmentMapper;
-    @Resource
-    CompanyMapper companyMapper;
-    @Resource
-    SysFunctionMapper sysFunctionMapper;
-    @Resource
-    WxCorpInfoMapper wxCorpInfoMapper;
-    @Resource
-    ExcelExportService excelExportService;
-    @Resource
-    WxCorpInfoService wxCorpInfoService;
-    @Resource
-    UserCorpwxTimeService userCorpwxTimeService;
-
-    @RequestMapping("/getMyDeptMembsData")
-    public HttpRespMsg getMyDeptMembsData(String startDate, String endDate) {
-        String token = request.getHeader("TOKEN");
-        User user = userMapper.selectById(token);
-        List<Map> list = new ArrayList<Map>();
-        int onlyWorkDays = 1;//只要工作日
-        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部企微考勤");
-        if (functionList.size() > 0) {
-            //查看全部人员的
-            list = userCorpwxTimeMapper.getUserDataList(user.getCompanyId(), startDate, endDate, null);
-        } else {
-            Integer manageDeptId = user.getManageDeptId();
-            if (manageDeptId != null && manageDeptId != 0) {
-                //一个人可能担任多个部门负责人
-                List<Department> departments = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()));
-                if (departments.size() == 1) {
-                    list = userCorpwxTimeMapper.getUserDataList(user.getCompanyId(), startDate, endDate, manageDeptId);
-                } else {
-                    for (Department d:departments) {
-                        list.addAll(userCorpwxTimeMapper.getUserDataList(user.getCompanyId(), startDate, endDate, d.getDepartmentId()));
-                    }
-                }
-            }
-        }
-
-        //工作日处理,排除常规周末和法定节假日
-        if (onlyWorkDays == 1) {
-            DateTimeFormatter dtf =  DateTimeFormatter.ofPattern("yyyy/MM/dd");
-            list = list.stream().filter(time->{
-                String date = (String)time.get("createDate");
-                if (WorkDayCalculateUtils.isWorkDay(LocalDate.parse(date, dtf))) {
-                    return true;
-                } else {
-                    return false;
-                }
-            }).collect(Collectors.toList());
-        }
-        DateTimeFormatter standFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        HashMap item = new HashMap();
-        item.put("list", list);
-        if (list.size() > 0) {
-            List<String> userIdList = new ArrayList<>();
-            for (int i=0;i<list.size(); i++) {
-                Map map = list.get(i);
-                String userId = (String)map.get("userId");
-                userIdList.add(userId);
-            }
-            //员工参与的项目
-            List<Participation> participationList = participationMapper.selectList(new QueryWrapper<Participation>().in("user_id", userIdList));
-            List<String> names = new ArrayList<>();
-            LocalDate localStart = LocalDate.parse(startDate, standFormatter);
-            LocalDate localEnd = LocalDate.parse(endDate, standFormatter);
-            if (participationList.size() > 0) {
-                List<Integer> collect = participationList.stream().map(Participation::getProjectId).collect(Collectors.toList());
-                List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", collect).eq("is_public", 0).eq("company_id", user.getCompanyId()).orderByAsc("id"));
-
-                names = projectList.stream().filter(p->{
-                    if (p.getPlanStartDate() != null) {
-                        if (p.getPlanStartDate().isAfter(localEnd)) {
-                            return false;
-                        }
-                    }
-                    if (p.getPlanEndDate() != null) {
-                        if (p.getPlanEndDate().isBefore(localStart)) {
-                            return false;
-                        }
-                    }
-                    return true;
-                }).map(Project::getProjectName).collect(Collectors.toList());
-            }
-            //添加公共项目
-            List<Project> publicProjects = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", user.getCompanyId()).eq("is_public", 1));
-            if (publicProjects.size() > 0) {
-                List<String> collect = publicProjects.stream().filter(p->{
-                    if (p.getPlanStartDate() != null) {
-                        if (p.getPlanStartDate().isAfter(localEnd)) {
-                            return false;
-                        }
-                    }
-                    if (p.getPlanEndDate() != null) {
-                        if (p.getPlanEndDate().isBefore(localStart)) {
-                            return false;
-                        }
-                    }
-                    return true;
-                }).map(Project::getProjectName).collect(Collectors.toList());
-                names.addAll(collect);
-            }
-            item.put("projects", names);
-        } else {
-            item.put("projects", new ArrayList<String>());
-        }
-
-        //获取该时间段已经审核通过的报告
-        List<Report> reportList = reportService.list(new QueryWrapper<Report>()
-                .eq("company_id", user.getCompanyId()).between("create_date", startDate, endDate).eq("state", 1));
-
-        DateTimeFormatter splashDtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
-        //数据填充
-        for (Map dataItem : list) {
-            List<String> dataList = new ArrayList<>();
-            String userId = (String)dataItem.get("userId");
-            String createDate = (String)dataItem.get("createDate");
-            //检查该人员当天是否已经有审核通过的
-            boolean hasPassed = reportList.stream().anyMatch(r->r.getCreatorId().equals(userId) && splashDtf.format(r.getCreateDate()).equals(createDate));
-            dataItem.put("hasPassed", hasPassed);
-        }
-
-        //返回数据
-        HttpRespMsg msg = new HttpRespMsg();
-        msg.data = item;
-        return msg;
-    }
-
-    @RequestMapping("/submitProjectTime")
-    public HttpRespMsg submitProjectTime(String json, String projectColumns) {
-        String token = request.getHeader("TOKEN");
-        User user = userMapper.selectById(token);
-        JSONArray array = JSONArray.parseArray(json);
-        JSONArray columnsArray = JSONArray.parseArray(projectColumns);
-        List<String> pnames = new ArrayList<>();
-        for (int i=0;i<columnsArray.size(); i++) {
-            System.out.println(columnsArray.getString(i));
-            pnames.add(columnsArray.getString(i));
-        }
-        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("project_name", pnames).eq("company_id", user.getCompanyId()));
-
-        List<Report> reportList = new ArrayList<>();
-
-        for (int i=0;i<array.size(); i++) {
-            JSONObject jsonObject = array.getJSONObject(i);
-            System.out.println(jsonObject);
-            LocalDate createDate = LocalDate.parse(jsonObject.getString("createDate"), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
-            String userId = jsonObject.getString("userId");
-            //获取该员工的各个项目分配的工时
-
-            for (int j=0;j<projectList.size(); j++) {
-                Project p = projectList.get(j);
-                String key = p.getProjectName();
-                if (jsonObject.containsKey(key)) {
-                    double time = jsonObject.getDouble(key);
-                    if (time > 0) {
-                        Report report = new Report();
-                        report.setWorkingTime(time);
-                        report.setCreatorId(userId);
-                        report.setCreateDate(createDate);
-                        report.setProjectId(p.getId());
-                        reportList.add(report);
-                    }
-
-                }
-            }
-        }
-
-        return reportService.saveProjectTime(user.getCompanyId(), reportList, array);
-    }
-
-    //导出带考勤数据的模板
-    @RequestMapping("/exportCheckInExcel")
-    public HttpRespMsg exportCheckInExcel(String startDate, String endDate) throws Exception {
-        HttpRespMsg msg = new HttpRespMsg();
-        String token = request.getHeader("TOKEN");
-        User user = userMapper.selectById(token);
-        Integer companyId = user.getCompanyId();
-        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
-        Integer manageDeptId = user.getManageDeptId();
-
-        HttpRespMsg ret = getMyDeptMembsData(startDate, endDate);
-        HashMap map = (HashMap)ret.data;
-        List<Map> list = (List<Map>) map.get("list");
-        List<String> projects = (List) map.get("projects");
-        if (projects == null) {
-           // msg.setError("员工无参与的项目,请先到项目管理中进行设置项目参与人");
-            msg.setError(MessageUtils.message("project.joinError"));
-        }
-        List<String> titles = new ArrayList<>();
-        //titles.add("工作日期");
-        titles.add(MessageUtils.message("entry.workDate"));
-        //titles.add("星期");
-        titles.add(MessageUtils.message("entry.week"));
-        //titles.add("员工姓名");
-        titles.add(MessageUtils.message("entry.staffName"));
-        titles.add("部门");
-        //titles.add("上班时间");
-        titles.add(MessageUtils.message("entry.goWorkTime"));
-        //titles.add("下班时间");
-        titles.add(MessageUtils.message("entry.offWorkTime"));
-//        titles.add("打卡时长");
-//        titles.add("请假时长");
-//        titles.add("补卡/外出时长");
-        //titles.add("实际工作时长");
-        titles.add(MessageUtils.message("entry.actualWorkTime"));
-        //添加项目名称作为列名
-        for (String p : projects) {
-            titles.add(p);
-        }
-        List<List<String>> allData = new ArrayList<>();
-        allData.add(titles);
-
-        //数据填充
-        for (Map dataItem : list) {
-            List<String> dataList = new ArrayList<>();
-            boolean hasPassed = (boolean)dataItem.get("hasPassed");
-            if (hasPassed) {
-                continue;
-            }
-            Double workHours = (Double) dataItem.get("workHours");
-            System.out.println((String)dataItem.get("username") + " workHours:" + workHours);
-            if (workHours == null  || workHours.doubleValue() <= 0.0) {
-                continue;
-            }
-            String createDate = (String)dataItem.get("createDate");
-            dataList.add(createDate);
-            dataList.add((String)dataItem.get("weekDayTxt"));
-            if(wxCorpInfo.getSaasSyncContact()==1){
-                dataList.add("$userName="+(String)dataItem.get("corpwxUserid")+"$");
-            }else{
-                dataList.add((String)dataItem.get("username"));
-            }
-            dataList.add((String)dataItem.get("departmentName"));
-            dataList.add((String)dataItem.get("startTime"));
-            dataList.add((String)dataItem.get("endTime"));
-//            dataList.add(""+(Double)dataItem.get("cardTime"));
-//            dataList.add(""+(Double)dataItem.get("askLeaveTime"));
-//            dataList.add(""+(Double)dataItem.get("outdoorTime"));
-
-            dataList.add(""+workHours);
-            for (String p : projects) {
-                dataList.add("");
-            }
-            allData.add(dataList);
-        }
-        String fileName = companyMapper.selectById(user.getCompanyId()).getCompanyName();
-        if (manageDeptId != null && manageDeptId != 0) {
-            List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()));
-            String departmentName = allDeptList.stream().map(Department::getDepartmentName).collect(Collectors.joining("+"));
-            fileName = departmentName;
-        }
-        //fileName += "_人员工时统计模板"+startDate+"至"+endDate;
-        fileName += MessageUtils.message("fileName.workHour",startDate,endDate);
-        return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo, fileName, allData, path);
-    }
-
-    //导出填报工时在考勤工时的占比
-    @RequestMapping("/exportProjectTimeRatio")
-    public HttpRespMsg exportProjectTimeRatio(String ymonth) throws Exception {
-        String token = request.getHeader("TOKEN");
-        User user = userMapper.selectById(token);
-        Integer companyId = user.getCompanyId();
-        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
-        Integer manageDeptId = user.getManageDeptId();
-
-        List<Map> list = new ArrayList<Map>();
-        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部企微考勤");
-        //只取当月中工作日的数据
-        DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyyMMdd");
-        LocalDate sDate = LocalDate.parse(ymonth + "01", dtf2);
-        LocalDate eDate = sDate.plusMonths(1).minusDays(1);
-        String startDate = sDate.format(dtf1);
-        String endDate = eDate.format(dtf1);
-        List<LocalDate> workDateList = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, 0);
-        if (functionList.size() > 0) {
-            //查看全部人员的
-            list = userCorpwxTimeMapper.getUserDataRatioList(user.getCompanyId(), workDateList, ymonth, null);
-        } else {
-            if (manageDeptId != null && manageDeptId != 0) {
-                //一个人可能担任多个部门负责人
-                List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
-                List<Integer> allManagedDeptIdList = departmentService.getAllManagedDeptIdList(user, allDeptList);
-                list = userCorpwxTimeMapper.getUserDataRatioList(user.getCompanyId(), workDateList, ymonth, allManagedDeptIdList);
-            }
-        }
-
-
-        List<String> titles = new ArrayList<>();
-        titles.add("年月");
-        //titles.add("员工姓名");
-        titles.add(MessageUtils.message("entry.staffName"));
-        titles.add("部门");
-        //titles.add("实际工作时长");
-        titles.add(MessageUtils.message("entry.actualWorkTime"));
-        titles.add("填报项目时长");
-        titles.add("填报项目时长占比");
-        List<List<String>> allData = new ArrayList<>();
-        allData.add(titles);
-
-        //数据填充
-        DecimalFormat decimalFormat = new DecimalFormat("#0.0%");
-        for (Map dataItem : list) {
-            List<String> dataList = new ArrayList<>();
-            dataList.add(ymonth);
-            if(wxCorpInfo.getSaasSyncContact()==1){
-                dataList.add("$userName="+(String)dataItem.get("corpwxUserid")+"$");
-            }else{
-                dataList.add((String)dataItem.get("username"));
-            }
-            dataList.add((String)dataItem.get("departmentName"));
-            double wt = (Double)dataItem.get("workHours");
-            double pt = (Double)dataItem.get("projectTime");
-            dataList.add(""+wt);
-            dataList.add(""+pt);
-            if (wt == 0) {
-                dataList.add(decimalFormat.format(0));
-            } else {
-                dataList.add(decimalFormat.format(pt/wt));
-            }
-
-            allData.add(dataList);
-        }
-        String fileName = companyMapper.selectById(user.getCompanyId()).getCompanyName();
-        if (manageDeptId != null && manageDeptId != 0) {
-            List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()));
-            String departmentName = allDeptList.stream().map(Department::getDepartmentName).collect(Collectors.joining("+"));
-            fileName = departmentName;
-        }
-        //fileName += "_人员工时统计模板"+startDate+"至"+endDate;
-        fileName = ymonth + fileName;
-        fileName += "项目工时占比_" + System.currentTimeMillis();
-        return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo, fileName, allData, path);
-    }
-    @RequestMapping("/getPunchRecordBySelf")
-    public HttpRespMsg getUserPunchRecord(String date, String userId){
-        HttpRespMsg msg=new HttpRespMsg();
-        User user = null;
-        if (StringUtils.isEmpty(userId)) {
-            user = userMapper.selectById(request.getHeader("token"));
-        } else {
-            user = userMapper.selectById(userId);
-        }
-
-        Map<String,Object> resultMap =new HashMap<>();
-        List<UserCorpwxTime> oldCorpwxTimes = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>()
-                .eq("corpwx_userid", user.getCorpwxUserid()).eq("create_date", date));
-        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        LocalDate localDate = LocalDate.parse(date, df);
-        if(!localDate.isEqual(LocalDate.now())&&oldCorpwxTimes.size()>0 && oldCorpwxTimes.get(0).getWorkHours() > 0){
-            UserCorpwxTime time = oldCorpwxTimes.get(0);
-            resultMap.put("time", time);
-            msg.data=resultMap;
-            return msg;
-        }
-        LocalDateTime start = LocalDateTime.of(localDate, LocalTime.MIN);
-        LocalDateTime end = LocalDateTime.of(localDate, LocalTime.MAX).withSecond(0).withNano(0);
-        wxCorpInfoService.getUserPunchRecord(user.getCompanyId(),user.getId(),start,end,false);
-        List<UserCorpwxTime> chengedCorpwxTimes = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>()
-                .eq("corpwx_userid", user.getCorpwxUserid()).eq("create_date", date));
-
-        if (chengedCorpwxTimes.size() > 0) {
-            UserCorpwxTime time = chengedCorpwxTimes.get(0);
-            resultMap.put("time", time);
-        }
-        msg.data=resultMap;
-        return msg;
-    }
-
-    @RequestMapping("/importCardTime")
-    public HttpRespMsg importCardTime(Integer companyId, MultipartFile multipartFile, HttpServletRequest request){
-        HttpRespMsg msg=new HttpRespMsg();
-        String token = request.getHeader("TOKEN");
-        User user = userMapper.selectById(token);
-        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
-        //然后处理文件
-        String fileName = multipartFile.getOriginalFilename();
-        File file = new File(fileName == null ? "file" : fileName);
-        InputStream inputStream = null;
-        OutputStream outputStream = null;
-        try {
-            inputStream = multipartFile.getInputStream();
-            outputStream = new FileOutputStream(file);
-            byte[] buffer = new byte[4096];
-            int temp = 0;
-            while ((temp = inputStream.read(buffer, 0, 4096)) != -1) {
-                outputStream.write(buffer, 0, temp);
-            }
-            inputStream.close();
-            outputStream.close();
-            //然后解析表格
-            Workbook workbook = WorkbookFactory.create(new FileInputStream(file));
-
-            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/M/d");
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/M/d");
-            //获取公司全部成员
-            List<User> allUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
-
-            Sheet sheet = workbook.getSheetAt(0);
-            //由于第一行需要指明列对应的标题
-            int rowNum = sheet.getLastRowNum();
-            if (rowNum == 0) {
-                //msg.setError("请填写工时数据");
-                msg.setError(MessageUtils.message("report.data"));
-                return msg;
-            }
-            List<String> userNameList=new ArrayList<>();
-            boolean hasDept = false;
-            for (int rowIndex = 0; rowIndex <= rowNum; rowIndex++) {
-                Row row = sheet.getRow(rowIndex);
-                if (row == null) {
-                    continue;
-                }
-                if (ExcelUtil.isRowEmpty(row)) {
-                    continue;
-                }
-                String username = row.getCell(2).getStringCellValue().trim();
-
-                if (rowIndex == 0) {
-                    String deptName = row.getCell(3).getStringCellValue().trim();
-                    if (deptName.equals("部门")) {
-                        hasDept = true;
-                    }
-                    if(username.equals("员工")){
-                        continue;
-                    }
-                }
-
-                if(!userNameList.contains(username)&&!username.equals("")){
-                    userNameList.add(username);
-                }
-            }
-            HttpRespMsg respMsg=new HttpRespMsg();
-            if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1&&userNameList.size()>0){
-                System.out.println("参与搜素的人员列表"+userNameList);
-                respMsg = wxCorpInfoService.getBatchSearchUserInfo(wxCorpInfo, userNameList,null);
-                if(respMsg.code.equals("0")){
-                    msg.setError("姓名为["+String.valueOf(respMsg.data)+"]的人员存在重复,请使用工号!");
-                    return msg;
-                }
-            }
-            List<User> targetUserList= (List<User>) respMsg.data;
-            List<UserCorpwxTime> userCorpwxTimeList = new ArrayList<>();
-            int dataCount = 0;
-            for (int rowIndex = 0; rowIndex <= rowNum; rowIndex++) {
-                Row row = sheet.getRow(rowIndex);
-                if (row == null) {
-                    continue;
-                }
-                if (ExcelUtil.isRowEmpty(row)) {
-                    continue;
-                }
-                if (rowIndex == 0) {
-                    //第一行是标题,获取项目名称
-                    row.getCell(0).setCellType(CellType.STRING);
-
-                } else {
-                    dataCount++;
-                    int deptColumnExtra = hasDept?1:0;
-                    //数据行
-                    for (int i=1;i<=5 + deptColumnExtra; i++) {
-                        if (row.getCell(i) != null) {
-                            row.getCell(i).setCellType(CellType.STRING);
-                        }
-                    }
-
-                    if (row.getCell(0) == null) {
-                        //msg.setError("第"+dataCount+"行缺少日期");
-                        msg.setError(MessageUtils.message("data.NullErrorByRow",dataCount));
-                        return msg;
-                    }
-                    boolean isDateFormat = row.getCell(0).getCellTypeEnum() == CellType.NUMERIC;
-                    String reportDate = isDateFormat?sdf.format(row.getCell(0).getDateCellValue()):row.getCell(0).getStringCellValue();
-                    if (StringUtils.isEmpty(reportDate)) {
-                        msg.setError(MessageUtils.message("data.NullErrorByRow",dataCount));
-                        return msg;
-                    }
-                    String username =row.getCell(2).getStringCellValue().trim();
-                    //检查人员是否存在
-                    Optional<User> any;
-                    if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                        Optional<User> optional = targetUserList.stream().filter(tl -> tl.getName().equals(username)).findFirst();
-                        any = allUserList.stream().filter(u -> u.getName().equals(username)||(u.getJobNumber()!=null&&u.getJobNumber().equals(username))||(optional.isPresent()&&u.getCorpwxUserid()!=null&&u.getCorpwxUserid().equals(optional.get().getCorpwxUserid()))).findAny();
-                    }else {
-                        any = allUserList.stream().filter(u -> u.getName().equals(username)||(u.getJobNumber()!=null&&u.getJobNumber().equals(username))).findAny();
-                    }
-                    if (!any.isPresent()) {
-                        //msg.setError("人员["+username+"]不存在,请先在组织结构中添加或者通过钉钉同步导入");
-                        msg.setError(MessageUtils.message("staff.peopleNullAndAdd",username));
-                        return msg;
-                    }
-                    User reportCreator = any.get();
-                    String startTime = row.getCell(3 + deptColumnExtra).getStringCellValue().trim();
-                    String endTime = row.getCell(4 + deptColumnExtra).getStringCellValue().trim();
-                    if (!startTime.contains(":")) {
-                        double t1 = Double.valueOf(startTime) * 24;
-                        //把以小时为单位的时间转化为时分格式, 类似09:00
-                        startTime = String.format("%02d:%02d", (int) t1, (int) ((t1 - (int) t1) * 60));
-                        double t2 = Double.valueOf(endTime) * 24;
-                        endTime = String.format("%02d:%02d", (int) t2, (int) ((t2 - (int) t2) * 60));
-                    }
-
-                    String workHours = row.getCell(5 + deptColumnExtra).getStringCellValue().trim();
-                    double workHoursDouble = Double.valueOf(workHours);
-                    UserCorpwxTime corpwxTime = new UserCorpwxTime();
-                    corpwxTime.setCorpwxUserid(reportCreator.getCorpwxUserid());
-                    corpwxTime.setName(reportCreator.getName());
-                    corpwxTime.setCreateDate(LocalDate.parse(reportDate, dtf));
-                    corpwxTime.setWorkHours(workHoursDouble);
-                    corpwxTime.setCardTime(workHoursDouble);
-                    corpwxTime.setStartTime(startTime);
-                    corpwxTime.setEndTime(endTime);
-                    corpwxTime.setCompanyId(reportCreator.getCompanyId());
-                    corpwxTime.setWxCorpid(wxCorpInfo.getCorpid());
-                    //计算周几
-                    corpwxTime.setWeekDay(corpwxTime.getCreateDate().getDayOfWeek().getValue());
-                    corpwxTime.setWeekDayTxt(DateTimeUtil.getWeekDayTxt(corpwxTime.getWeekDay()));
-                    userCorpwxTimeList.add(corpwxTime);
-                }
-            }
-            if (userCorpwxTimeList.size() > 0) {
-                long l1 = System.currentTimeMillis();
-
-                userCorpwxTimeList.forEach(u->{
-                    if (u.getCorpwxUserid() == null) {
-                        userCorpwxTimeMapper.delete(new QueryWrapper<UserCorpwxTime>().isNull("corpwx_userid").eq("name", u.getName())
-                                .eq("create_date", u.getCreateDate())
-                                .eq("wx_corpid", wxCorpInfo.getCorpid()));
-                    } else {
-                        userCorpwxTimeMapper.delete(new QueryWrapper<UserCorpwxTime>().eq("corpwx_userid", u.getCorpwxUserid())
-                                .eq("create_date", u.getCreateDate())
-                                .eq("wx_corpid", wxCorpInfo.getCorpid()));
-                    }
-                });
-                long l2 = System.currentTimeMillis();
-                System.out.println("删除耗时="+(l2-l1));
-                userCorpwxTimeService.saveBatch(userCorpwxTimeList);
-                long l3 = System.currentTimeMillis();
-                System.out.println("插入耗时="+(l3-l2));
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-            //msg.setError("文件处理出错");
-            msg.setError(MessageUtils.message("file.error"));
-            return msg;
-        } catch (NullPointerException e) {
-            e.printStackTrace();
-            //msg.setError("数据格式有误或存在空数据 导入失败");
-            msg.setError(MessageUtils.message("file.dataFormatError"));
-            return msg;
-        }catch (InvalidFormatException e) {
-            e.printStackTrace();
-            //msg.setError("文件格式错误,如果安装了加密软件需要先解密再上传");
-            msg.setError(MessageUtils.message("file.FormatErrorAndDecrypt"));
-            return msg;
-        }catch (EncryptedDocumentException e) {
-            e.printStackTrace();
-            //msg.setError("文件加密状态,需要先解除加密状态再上传");
-            msg.setError(MessageUtils.message("file.encryption"));
-            return msg;
-        } catch (Exception e) {
-            e.printStackTrace();
-            //msg.setError("发生其他错误:"+e.getMessage());
-            msg.setError(MessageUtils.message("other.errorByParameter",e.getMessage()));
-            return msg;
-        } finally {
-            //关闭流
-            try {
-                if (outputStream != null && inputStream != null) {
-                    outputStream.close();
-                    inputStream.close();
-                }
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-            file.delete();
-        }
-        return msg;
-    }
-}
-

+ 5 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -3359,6 +3359,10 @@ public class WeiXinCorpController {
                         prodCategoryMapper.insert(category);
                     }
 
+                    TimeType timeType = new TimeType();
+                    timeType.setCompanyId(company.getId());
+                    timeTypeMapper.insert(timeType);
+
                     SysRole smanager = sysRoleService.generateDefaultRoles(company.getId());
 //                    String accessToken = getCorpConcactAccessToken(wxCorpInfo);
                     String accessToken = getAppConcactAccessToken(wxCorpInfo);
@@ -3366,6 +3370,7 @@ public class WeiXinCorpController {
                     String departmentInfoResp=wxCorpInfoService.getDepartmentInfoWithApplication(accessToken);
                     JSONObject departmentInfoOb = JSONObject.parseObject(departmentInfoResp);
                     JSONArray departmentInfoArrays = departmentInfoOb.getJSONArray("department");
+                    System.out.println(departmentInfoOb.toJSONString());
                     for (int i = 0; i < departmentInfoArrays.size(); i++) {
                         JSONObject ob = departmentInfoArrays.getJSONObject(i);
                         String departmentName = String.valueOf(ob.get("name"));

+ 6 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/ProdProcedure.java

@@ -60,7 +60,7 @@ public class ProdProcedure extends Model<ProdProcedure> {
      * 单件工时
      */
     @TableField("working_time")
-    private Double workingTime;
+    private Integer workingTime;
 
     /**
      * 版本号
@@ -68,6 +68,11 @@ public class ProdProcedure extends Model<ProdProcedure> {
     @TableField("version_number")
     private String versionNumber;
 
+    /**
+     * 产品名称
+     */
+    @TableField("product_name")
+    private String productName;
 
     @Override
     protected Serializable pkVal() {

+ 41 - 262
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/Report.java

@@ -1,22 +1,16 @@
 package com.management.platform.entity;
 
+import java.math.BigDecimal;
 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 com.management.platform.entity.vo.WorktimeItem;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.util.HashMap;
-import java.util.List;
 
 /**
  * <p>
@@ -24,7 +18,7 @@ import java.util.List;
  * </p>
  *
  * @author Seyason
- * @since 2022-08-23
+ * @since 2023-07-27
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -46,17 +40,9 @@ public class Report extends Model<Report> {
     private String creatorId;
 
     /**
-     * project表外键 相关项目
-     */
-    @TableField("project_id")
-    private Integer projectId;
-
-    /**
-     * 工作日期
+     * 日期
      */
     @TableField("create_date")
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
-    @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate createDate;
 
     /**
@@ -65,32 +51,12 @@ public class Report extends Model<Report> {
     @TableField("working_time")
     private Double workingTime;
 
-    /**
-     * 报告内容; 根据multi_worktime的取值,形式有差别
-     */
-    @TableField("content")
-    private String content;
-
-    /**
-     * 审查状态 0-未审核 1-已通过 2-未通过, -1-导入待审核, 3草稿
-     */
-    @TableField("state")
-    private Integer state;
-
     /**
      * 创建时间
      */
     @TableField("create_time")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
     private LocalDateTime createTime;
 
-    /**
-     * 0-全天, 1-上午,2-下午
-     */
-    @TableField("time_type")
-    private Integer timeType;
-
     /**
      * 成本
      */
@@ -98,271 +64,84 @@ public class Report extends Model<Report> {
     private BigDecimal cost;
 
     /**
-     * 开始时间
-     */
-    @TableField("start_time")
-    private String startTime;
-
-    /**
-     * 结束时间
-     */
-    @TableField("end_time")
-    private String endTime;
-
-    /**
-     * 员工填写时长类型
-     */
-    @TableField("report_time_type")
-    private Integer reportTimeType;
-
-    /**
-     * 子项目id
-     */
-    @TableField("sub_project_id")
-    private Integer subProjectId;
-
-    /**
-     * 任务id
-     */
-    @TableField("task_id")
-    private Integer taskId;
-
-    /**
-     * 是否是加班
-     */
-    @TableField("is_overtime")
-    private Integer isOvertime;
-
-    /**
-     * 用时占比
-     */
-    @TableField("progress")
-    private Integer progress;
-
-
-    @TableField(exist = false)
-    private List<SubProject> subProjectList;
-    @TableField(exist = false)
-    private List<UserRecentTask> taskList;
-    @TableField(exist = false)
-    private List<ReportProfessionProgress> professionProgressList;
-    @TableField(exist = false)
-    private List<Stages> stages;
-
-    /**
-     * 部门审核状态: -1 专业未审核,0-部门未审核,1-已通过,2-未通过
-     */
-    @TableField("department_audit_state")
-    private Integer departmentAuditState;
-
-
-    /**
-     * 阶段/岗位/工序
-     */
-    @TableField("stage")
-    private String stage;
-
-
-    /**
-     * 图片的数组字符串
-     */
-    @TableField("pic_str")
-    private String picStr;
-
-
-    @TableField(exist = false)
-    private String picAdd;
-
-    /**
-     * 传给客户端的图片数组
-     */
-    @TableField(exist = false)
-    private List<String> pics;
-    /**
-     * 是否是多个时间工作事项
-     */
-    @TableField("multi_worktime")
-    private Integer multiWorktime;
-
-
-    @TableField(exist = false)
-    private List<WorktimeItem> worktimeList;
-    /**
-     * 驳回原因
-     */
-    @TableField("reject_reason")
-    private String rejectReason;
-
-    /**
-     * 驳回人姓名
-     */
-    @TableField("reject_username")
-    private String rejectUsername;
-
-    /**
-     * 驳回人id
-     */
-    @TableField("reject_userid")
-    private String rejectUserid;
-
-
-    /**
-     * 选择的自定义维度
+     * 工时日报所属部门id
      */
-    @TableField("degree_id")
-    private Integer degreeId;
-
+    @TableField("dept_id")
+    private Integer deptId;
 
-    @TableField(exist = false)
-    private List<HashMap> degreeList;
     /**
      * 公司id
      */
     @TableField("company_id")
     private Integer companyId;
 
-    /**
-     * 代填或者导入的用户id
-     */
-    @TableField("fill_userid")
-    private String fillUserid;
-
-    /**
-     * 审核流程:当前审核的部门id
-     */
-    @TableField("audit_deptid")
-    private Integer auditDeptid;
-
-    /**
-     * 审核流程: 是否是部门审核
-     */
-    @TableField("is_dept_audit")
-    private Integer isDeptAudit;
-
-    /**
-     * 审核流程:当前审核的部门负责人id
-     */
-    @TableField("audit_dept_managerid")
-    private String auditDeptManagerid;
-
-    /**
-     * 是否是最后一步审核
-     */
-    @TableField("is_final_audit")
-    private Integer isFinalAudit;
-
-    /**
-     * 审核流程:审核过程中,项目的审核状态; 0-待审核,1-审核通过
-     */
-    @TableField("project_audit_state")
-    private Integer projectAuditState;
-
-
     /**
      * 任务分组id
      */
     @TableField("group_id")
     private Integer groupId;
 
-    @TableField(exist = false)
-    private String groupName;
-
-    @TableField(exist = false)
-    private List<TaskGroup> taskGroups;
     /**
-     * 自定义的数值
+     * 任务id
      */
-    @TableField("custom_data")
-    private Double customData;
+    @TableField("plan_id")
+    private Integer planId;
 
     /**
-     * 项目审核人id
+     * 工序完成度
      */
-    @TableField("project_auditor_id")
-    private String projectAuditorId;
-
-    @TableField(exist = false)
-    private List<ProjectAuditor> auditUserList;
-
-    @TableField(exist = false)
-    private String projectAuditorName;
-
-
-    /**
-     * 工时日报所属部门id
-     */
-    @TableField("dept_id")
-    private Integer deptId;
+    @TableField("progress")
+    private Integer progress;
 
     /**
-     * 加班时长
+     * project表外键 相关项目
      */
-    @TableField("overtime_hours")
-    private Double overtimeHours;
-
+    @TableField("product_id")
+    private Integer productId;
 
     /**
-     * 加班薪资
+     * 计划中工序id
      */
-    @TableField("overtime_cost")
-    private BigDecimal overtimeCost;
-
-
-    @TableField(exist = false)
-    private Integer taskFinish;
+    @TableField("prod_procedure_id")
+    private Integer prodProcedureId;
 
     /**
-     * 自定义文本信息内容
+     * 自检类型
      */
-    @TableField("custom_text")
-    private String customText;
+    @TableField("check_type")
+    private Integer checkType;
 
     /**
-     * 对应成本项的id
+     * 检查人id
      */
-    @TableField("basecost_id")
-    private Integer basecostId;
-
+    @TableField("checker_id")
+    private String checkerId;
 
     /**
-     * 项目日报审核时间
+     * 任务变更通知号
      */
-    @TableField("project_audit_time")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
-    private LocalDateTime projectAuditTime;
-
+    @TableField("task_change_notice_num")
+    private String taskChangeNoticeNum;
 
     /**
-     * 任务分组负责人审核状态: 0-待审核,1-审核通过
+     * 任务名称
      */
-    @TableField("group_audit_state")
-    private Integer groupAuditState;
+    @TableField("task_name")
+    private String taskName;
 
     /**
-     * 评价
+     * 任务类型id
      */
-    @TableField("evaluate")
-    private String evaluate;
+    @TableField("task_type_id")
+    private Integer taskTypeId;
 
     /**
-     * 是否属于自动审核通过  0-不属于 1-属于
+     * 任务类型名称
      */
-    @TableField("report_auto_approve")
-    private Integer reportAutoApprove;
-
+    @TableField("task_type_name")
+    private String taskTypeName;
 
-    @TableField(exist = false)
-    private ReportAuditorSetting auditorSetting;
 
-    @TableField(exist = false)
-    private User auditorFirst;
-    @TableField(exist = false)
-    private User auditorSec;
-    @TableField(exist = false)
-    private User auditorThird;
-    @TableField(exist = false)
-    private User ccUserid;
     @Override
     protected Serializable pkVal() {
         return this.id;

+ 0 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/CompanyService.java

@@ -13,5 +13,4 @@ import com.management.platform.util.HttpRespMsg;
  * @since 2020-01-13
  */
 public interface CompanyService extends IService<Company> {
-    HttpRespMsg dataMigration(Integer oldCompanyId, Integer targetCompanyId);
 }

+ 2 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProdMaterialService.java

@@ -2,7 +2,6 @@ package com.management.platform.service;
 
 import com.management.platform.entity.ProdMaterial;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.management.platform.entity.ProdProcedure;
 import com.management.platform.util.HttpRespMsg;
 
 import javax.servlet.http.HttpServletRequest;
@@ -25,4 +24,6 @@ public interface ProdMaterialService extends IService<ProdMaterial> {
     HttpRespMsg isDelete(HttpServletRequest request, Integer id);
 
     HttpRespMsg changeProdMaterial(HttpServletRequest request, List<ProdMaterial> prodMaterialList, Integer productId, String version);
+
+    HttpRespMsg getLastProdMaterialList(Integer productId, HttpServletRequest request);
 }

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

@@ -18,7 +18,7 @@ import java.util.List;
 public interface ProdProcedureService extends IService<ProdProcedure> {
 
 
-    HttpRespMsg changeProdProcedure(HttpServletRequest request, List<ProdProcedure> ProdProcedureList,  Integer productId,String version);
+    HttpRespMsg changeProdProcedure(HttpServletRequest request, List<ProdProcedure> ProdProcedureList, Integer productId, String productName, String version);
 
     HttpRespMsg isDelete(HttpServletRequest request, Integer deleteId);
 

+ 5 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProductService.java

@@ -26,4 +26,9 @@ public interface ProductService extends IService<Product> {
     HttpRespMsg delete(Integer id);
 
     HttpRespMsg importData(MultipartFile file, Integer categoryId, HttpServletRequest request);
+
+
+    HttpRespMsg exportData(String date, Integer productType);
+
+    HttpRespMsg insertProductInfo(String name, Integer id, HttpServletRequest request);
 }

+ 0 - 22
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProjectMainService.java

@@ -1,22 +0,0 @@
-package com.management.platform.service;
-
-import com.management.platform.entity.ProjectMain;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.management.platform.util.HttpRespMsg;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * <p>
- *  服务类
- * </p>
- *
- * @author Seyason
- * @since 2022-06-28
- */
-public interface ProjectMainService extends IService<ProjectMain> {
-
-    HttpRespMsg addOrMod(HttpServletRequest request,ProjectMain projectMain);
-
-    HttpRespMsg getListByCategory(Integer categoryId);
-}

+ 0 - 239
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProjectService.java

@@ -1,239 +0,0 @@
-package com.management.platform.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.management.platform.entity.Project;
-import com.management.platform.entity.ProjectSeparate;
-import com.management.platform.entity.vo.OvertimeListVO;
-import com.management.platform.util.HttpRespMsg;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.http.HttpServletRequest;
-import java.time.LocalDate;
-
-/**
- * <p>
- * 服务类
- * </p>
- *
- * @author 吴涛涛
- * @since 2020-01-03
- */
-public interface ProjectService extends IService<Project> {
-    HttpRespMsg getProjectList(Integer forReport, HttpServletRequest request);
-
-    HttpRespMsg getProjectPage(Integer pageIndex, Integer pageSize, String keyword, Integer searchField,
-                               Integer status, Integer category, Integer projectId,Integer projectMainId,Integer deptId, String sortProp, Integer sortOrder,String inchagerId,String participation,String startDate,String endDate, HttpServletRequest request);
-
-    HttpRespMsg editProject(Integer id, String name, String code, String[] userIds, String inchargerId,
-                            Integer isPublic,
-                            String planStartDate,
-                            String planEndDate,
-                            Integer level,
-                            Double contractAmount,
-                            String changeContractReason,
-                            String projectBaseCostData,
-                            String projectKeyNodesData,
-                            Double budget,
-                            Integer customerId,
-                            String chosenLeaders,
-                            String associateDegrees,
-                            String associateDegreeNames,
-                            Integer taskGpIncharge,
-                            String auditUserIds,
-                            Integer category,
-                            String projectDesc,
-                            Integer projectMainId,
-                            String providerIds,
-                            String providerNames,
-                            HttpServletRequest request,
-                            ProjectSeparate projectSeparate,Double outputValue,Integer deptId,boolean onlyChangeParticipate,String buId,Integer manDay,String manDayStartDate,String plate1,
-                            String plate2,
-                            String plate3,
-                            String plate4,
-                            String plate5,
-                            String plate6,
-                            String plate7,
-                            String plate8,
-                            String plate9,
-                            String plate10);
-
-    HttpRespMsg deleteProject(Integer id, Integer force);
-
-    HttpRespMsg getTimeCost(String startDate, String endDate, String userIds,Integer projectId, Integer type,HttpServletRequest request);
-
-    HttpRespMsg getProjectCost(String startDate, String endDate, Integer projectId,Integer stateKey, HttpServletRequest request);
-
-    HttpRespMsg getCostInStage(String startDate, String endDate, Integer projectId, HttpServletRequest request);
-
-    HttpRespMsg getAllMembCost(String startDate, String endDate, Integer projectId, HttpServletRequest request);
-
-    HttpRespMsg exportTimeCost(String exportContent,String startDate, String endDate, Integer projectId,String userIds, Boolean projectSum,Integer type,Integer deptId,Integer stateKey,HttpServletRequest request);
-
-    HttpRespMsg updateProgress(Integer id, Integer progress, HttpServletRequest request);
-
-    HttpRespMsg updateStatus(Integer id, Integer status, LocalDate finishDate, HttpServletRequest request);
-
-    HttpRespMsg detail(Integer id, HttpServletRequest request);
-
-    HttpRespMsg detailTwo(Integer id, HttpServletRequest request);
-
-    HttpRespMsg taskSum(Integer id, HttpServletRequest request);
-
-    HttpRespMsg restartProject(Integer id);
-
-    HttpRespMsg addMemb(Integer id, String[] userId);
-
-    HttpRespMsg adjustBase(String baseCostData, Project project, String remark, HttpServletRequest request);
-
-    HttpRespMsg exportProfit(HttpServletRequest request);
-
-    HttpRespMsg exportProject(HttpServletRequest request);
-
-    HttpRespMsg getProjectTask(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request,Integer taskType);
-
-    HttpRespMsg exportProjectTask(HttpServletRequest request,Integer taskType);
-
-    HttpRespMsg getAllProjectCost(Integer pageIndex, Integer pageSize, Integer projectId,HttpServletRequest request);
-
-    HttpRespMsg exportAllProjectCost(HttpServletRequest request);
-
-    HttpRespMsg getProjectInAndOut(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request);
-
-    HttpRespMsg exportProjectInAndOut(HttpServletRequest request);
-
-    HttpRespMsg importData(String userId, MultipartFile file,Integer key, HttpServletRequest request);
-
-    HttpRespMsg getCustomerProjectInAndOut(Integer pageIndex, Integer pageSize, HttpServletRequest request,Integer customerId,Integer projectId);
-
-    HttpRespMsg exportCustomerProjectInAndOut(HttpServletRequest request);
-
-//    HttpRespMsg getGanttData(Integer type, String startDate, String endDate, String userId, Integer projectId, String groupName,Integer taskType, HttpServletRequest request);
-
-    HttpRespMsg getProjectStagesCost(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request,String stageNames,String startDate,String endDate);
-
-    HttpRespMsg exportProjectStagesCost( HttpServletRequest request,String stageNames,String startDate,String endDate, Integer projectId);
-
-    HttpRespMsg getOvertimeList(OvertimeListVO overtimeListVO);
-
-    HttpRespMsg exportOvertimeList(OvertimeListVO overtimeListVO, HttpServletRequest request);
-
-    HttpRespMsg getDegreeCost(String startDate, String endDate, Integer projectId, HttpServletRequest request);
-
-    HttpRespMsg exportData(String keyword,
-                           @RequestParam(required = false, defaultValue = "1") Integer searchField,
-                           Integer projectId, //可以直接传projectId来进行匹配
-                           Integer status, Integer category,Integer projectMainId,Integer deptId,String inchagerId,String participation,HttpServletRequest request);
-
-    HttpRespMsg exportGroupData(HttpServletRequest request);
-
-    HttpRespMsg getCustomDataSum(String startDate, String endDate, String userId, HttpServletRequest request);
-
-    HttpRespMsg exportCustomDataSum(String startDate, String endDate, Integer projectId, String userId, HttpServletRequest request);
-
-    HttpRespMsg getMyUsers(HttpServletRequest request);
-
-    HttpRespMsg getMyParticiPMList(HttpServletRequest request);
-
-    HttpRespMsg getOvertimeDetail(String userId, Integer projectId, String startDate, String endDate, HttpServletRequest request);
-
-    HttpRespMsg saveBatchAccoDegrees(String ids, String associateDegrees, String associateDegreeNames, HttpServletRequest request);
-
-    HttpRespMsg getProjectCostAlarm(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request);
-
-    HttpRespMsg addBatchAccoDegrees(String ids, String associateDegrees, String associateDegreeNames, HttpServletRequest request);
-
-    HttpRespMsg getBaseCostAndRealCost(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request);
-
-    HttpRespMsg exportBaseCostAndRealCost(HttpServletRequest request);
-
-    HttpRespMsg getProjectsGroups(String projectIdArray);
-
-    HttpRespMsg batchAddMembToGroup(String membIdArray, String groupIds);
-
-    HttpRespMsg getProjectByCustomer(Integer customerId, HttpServletRequest request);
-
-    HttpRespMsg getTimeCostByCategory(String startDate, String endDate, String userIds, HttpServletRequest request);
-
-    HttpRespMsg exportTimeCostByCategory(String exportContent,String startDate, String endDate, Integer projectCategoryId, String userIds, Boolean projectSum, Integer type, HttpServletRequest request);
-
-    HttpRespMsg getUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate, Integer pageIndex, Integer pageSize,HttpServletRequest request,Integer departmentId);
-
-    HttpRespMsg exportUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate,HttpServletRequest request,Integer departmentId);
-
-
-
-    HttpRespMsg getWaitingReviewList(HttpServletRequest request, Integer stateKey, String userId,Integer pageIndex,Integer pageSize,String startDate,String endDate,Integer departmentId);
-
-    HttpRespMsg exportWaitingReviewList(HttpServletRequest request, Integer stateKey, String userId,String startDate,String endDate);
-
-    HttpRespMsg batchSetParticipation(HttpServletRequest request,String projectIdArray , String userIds);
-
-    HttpRespMsg suspendProject(Integer id);
-
-    HttpRespMsg getUserWorkingTimeStatic(String startDate, String endDate, Integer pageIndex, Integer pageSize, HttpServletRequest request,String userId,Integer departmentId);
-
-    HttpRespMsg exportUserWorkingTimeStatic(String startDate, String endDate, HttpServletRequest request, String userId, Integer departmentId);
-
-    HttpRespMsg batchDeleteProject(String projectIdArray, HttpServletRequest request);
-
-    HttpRespMsg modifyContract(Integer projectId, Double oldContractAmount, Double newContractAmount,String reason,HttpServletRequest request);
-
-    HttpRespMsg getTimeCostByMainProject(String startDate, String endDate, String userId, HttpServletRequest request);
-
-    HttpRespMsg getCostByGroup(String startDate, String endDate, Integer id, HttpServletRequest request);
-
-    HttpRespMsg getTimeCostByGroup(String startDate, String endDate, Integer pageIndex, Integer pageSize, Integer groupId, Integer projectId,HttpServletRequest request);
-
-    HttpRespMsg getTimeCostByGroupProject(String startDate, String endDate, Integer pageIndex, Integer pageSize, Integer groupId, Integer projectId, HttpServletRequest request);
-
-    HttpRespMsg exportGroupWithProjectTimeCost(String startDate, String endDate, Integer pageIndex, Integer pageSize, Integer groupId, Integer projectId, HttpServletRequest request);
-
-    HttpRespMsg getProjectBaseCost(Integer projectId, HttpServletRequest request, Integer pageIndex, Integer pageSize);
-
-    HttpRespMsg exportProjectBaseCost(HttpServletRequest request);
-
-    HttpRespMsg getTimeCostByUserCustom(String startDate, String endDate, String subCustomName, Integer customId,HttpServletRequest request,String fieldName);
-
-    HttpRespMsg exportTimeCostByUserCustom(String startDate, String endDate, String subCustomName, Integer customId, HttpServletRequest request, String fieldName);
-
-    HttpRespMsg importPersonnelWithGroup(MultipartFile file, HttpServletRequest request);
-
-    HttpRespMsg batchExchangeIncharger(String projectIds, String inchargerId, HttpServletRequest request);
-
-    HttpRespMsg fixParticipators(Integer companyId, HttpServletRequest request);
-
-    HttpRespMsg removeDuplicateParticipators(Integer companyId, HttpServletRequest request);
-
-    HttpRespMsg synchronizationProject(String dataJson);
-
-    HttpRespMsg testRead(String jobId);
-
-    HttpRespMsg testAdd(String jobId);
-
-
-    HttpRespMsg deptPartInProjects(Integer pageIndex, Integer pageSize, String month, Integer departmentId, HttpServletRequest request);
-
-    HttpRespMsg exportDeptPartInProjects(String month, Integer departmentId, HttpServletRequest request);
-
-
-//    HttpRespMsg getGanttDataNew(Integer type, String startDate, String endDate, String userId, Integer projectId, String groupName, Integer taskType, HttpServletRequest request);
-
-    HttpRespMsg projectGroupAndCategoryWorkTime(HttpServletRequest request, String startDate, String endDate, Integer projectId,Integer pageIndex,Integer pageSize);
-
-    HttpRespMsg exportProjectGroupAndCategoryWorkTime(HttpServletRequest request, String startDate, String endDate, Integer projectId);
-
-    HttpRespMsg getSubProjectTimeCost(HttpServletRequest request, String startDate, String endDate, Integer projectId,Integer pageIndex,Integer pageSize);
-
-    HttpRespMsg exportSubProjectTimeCost(HttpServletRequest request,String startDate,String endDate, Integer projectId);
-
-    HttpRespMsg exportDegreeCost(String startDate, String endDate, Integer projectId,Integer deptId, HttpServletRequest request);
-
-    HttpRespMsg timeCostAndExpenseByProject(HttpServletRequest request, String startDate, String endDate, Integer projectId);
-
-    HttpRespMsg nearProject(HttpServletRequest request);
-
-    HttpRespMsg getFTEData(Integer pageIndex, Integer pageSize, String month, String area, HttpServletRequest request);
-
-    HttpRespMsg exportFTEData(String month, String area, HttpServletRequest request);
-}

+ 83 - 81
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ReportService.java

@@ -24,92 +24,94 @@ import java.util.Map;
  */
 public interface ReportService extends IService<Report> {
     HttpRespMsg getReportList(String date, Integer deptId, String userId, HttpServletRequest request);
-
-    HttpRespMsg exportReport(@RequestParam String startDate, @RequestParam String endDate, Integer projectId,Integer stateKey,Integer departmentId, HttpServletRequest request);
-
-    HttpRespMsg getReport(String date, HttpServletRequest request);
-
-    HttpRespMsg getCardTime(String date, HttpServletRequest request);
-
-    HttpRespMsg editReport(List<Report> reportList, String date, List<User> userList, BigDecimal hourCost, Integer companyId);
-
-    HttpRespMsg deleteReport(String userId, String date);
-
-    HttpRespMsg getListByState(Integer state, Integer departmentId,
-                               Integer projectId,
-                               String date,
-                               String startDate,
-                               String endDate,
-                               String userId,
-                               HttpServletRequest request);
-
-
+//
+//    HttpRespMsg exportReport(@RequestParam String startDate, @RequestParam String endDate, Integer projectId,Integer stateKey,Integer departmentId, HttpServletRequest request);
+//
+//    HttpRespMsg getReport(String date, HttpServletRequest request);
+//
+//    HttpRespMsg getCardTime(String date, HttpServletRequest request);
+//
+//    HttpRespMsg editReport(List<Report> reportList, String date, List<User> userList, BigDecimal hourCost, Integer companyId);
+//
+//    HttpRespMsg deleteReport(String userId, String date);
+//
+//    HttpRespMsg getListByState(Integer state, Integer departmentId,
+//                               Integer projectId,
+//                               String date,
+//                               String startDate,
+//                               String endDate,
+//                               String userId,
+//                               HttpServletRequest request);
+//
+//
     HttpRespMsg getMembList(String date, HttpServletRequest request);
-
-    HttpRespMsg cancelReport(String userId, String reportIds, HttpServletRequest request);
-
+//
+//    HttpRespMsg cancelReport(String userId, String reportIds, HttpServletRequest request);
+//
     HttpRespMsg getReportFillStatus(String startDate, String endDate, String userId, HttpServletRequest request);
-
-    HttpRespMsg listByStateProfession(Integer state, Integer departmentId, Integer projectId, String date, HttpServletRequest request);
-
-    HttpRespMsg listByStateDepartment(Integer state, Integer projectId, String date, HttpServletRequest request);
-
+//
+//    HttpRespMsg listByStateProfession(Integer state, Integer departmentId, Integer projectId, String date, HttpServletRequest request);
+//
+//    HttpRespMsg listByStateDepartment(Integer state, Integer projectId, String date, HttpServletRequest request);
+//
     HttpRespMsg getUserDailyWorkTime(HttpServletRequest request, String startDate, String endDate);
-
+//
     HttpRespMsg exportUserDailyWorkTime(HttpServletRequest request, String startDate, String endDate);
-
-    HttpRespMsg importData(Integer companyId, Integer withCheckIn, MultipartFile file, HttpServletRequest request);
-
-    HttpRespMsg saveProjectTime(Integer companyId, List<Report> reportList, JSONArray userReportArray);
-
-    HttpRespMsg listDeptImportByState(String leaderId,
-                               Integer projectId,
-                               Integer dateType,
-                               String date,
-                                      Integer pageIndex, Integer pageSize,
-                                      Integer deprarmtentId, HttpServletRequest request);
-
-    HttpRespMsg getlastWeekFillTime(String userId);
-
+//
+//    HttpRespMsg importData(Integer companyId, Integer withCheckIn, MultipartFile file, HttpServletRequest request);
+//
+//    HttpRespMsg saveProjectTime(Integer companyId, List<Report> reportList, JSONArray userReportArray);
+//
+//    HttpRespMsg listDeptImportByState(String leaderId,
+//                               Integer projectId,
+//                               Integer dateType,
+//                               String date,
+//                                      Integer pageIndex, Integer pageSize,
+//                                      Integer deprarmtentId, HttpServletRequest request);
+//
+//    HttpRespMsg getlastWeekFillTime(String userId);
+//
     HttpRespMsg getNoReportUserList(HttpServletRequest request, String startDate, String endDate);
 
     HttpRespMsg exportNoReportUserList(HttpServletRequest request, String startDate, String endDate);
-
-    HttpRespMsg approveAllImport(HttpServletRequest request);
-
-    HttpRespMsg denyHisReport(Integer hisId, String reason, HttpServletRequest request);
-
-    HttpRespMsg getReportListByToken(String json);
-
-    HttpRespMsg getWeeklyCardTime(String dateStr, HttpServletRequest request);
-
-    HttpRespMsg getWeeklyWorkTime(String dateStr, HttpServletRequest request);
-
-    HttpRespMsg getProcessErrorData();
-
-    HttpRespMsg uploadThirdReportData(String yearMonth,HttpServletRequest request);
-
-    HttpRespMsg pushReportDataToThird(String yearMonth,HttpServletRequest request);
-
-    List<Map<String, Object>> getTaskReportList(Integer taskId);
-
-    HttpRespMsg correctWorkingTime(String userIds, String startDate, String endDate);
-
-    HttpRespMsg defaultDegree(Integer projectId, HttpServletRequest request);
-
-	HttpRespMsg approveDeptAuditReport(User user, String auditDeptId);
-
-    void moveReport(User sourceUser,User targetUser);
-
-    HttpRespMsg fillWorkingHours(String yearMonth, MonthWorkingTimeVO monthVO, HttpServletRequest request);
-
-    HttpRespMsg fillAll(String month, String userId, Integer departmentId, Integer whether,HttpServletRequest request);
-
-    HttpRespMsg getAIReport(HttpServletRequest request);
-
-    HttpRespMsg getWeeklyReportData(String targetDate, HttpServletRequest request);
-
-    HttpRespMsg batchDelete(String userIds, String startDate, String endDate, HttpServletRequest request);
-
-    HttpRespMsg batchApproveByDate(String startDate, String endDate, HttpServletRequest request);
+//
+//    HttpRespMsg approveAllImport(HttpServletRequest request);
+//
+//    HttpRespMsg denyHisReport(Integer hisId, String reason, HttpServletRequest request);
+//
+//    HttpRespMsg getReportListByToken(String json);
+//
+//    HttpRespMsg getWeeklyCardTime(String dateStr, HttpServletRequest request);
+//
+//    HttpRespMsg getWeeklyWorkTime(String dateStr, HttpServletRequest request);
+//
+//    HttpRespMsg getProcessErrorData();
+//
+//    HttpRespMsg uploadThirdReportData(String yearMonth,HttpServletRequest request);
+//
+//    HttpRespMsg pushReportDataToThird(String yearMonth,HttpServletRequest request);
+//
+//    List<Map<String, Object>> getTaskReportList(Integer taskId);
+//
+//    HttpRespMsg correctWorkingTime(String userIds, String startDate, String endDate);
+//
+//    HttpRespMsg defaultDegree(Integer projectId, HttpServletRequest request);
+//
+//	HttpRespMsg approveDeptAuditReport(User user, String auditDeptId);
+//
+//    void moveReport(User sourceUser,User targetUser);
+//
+//    HttpRespMsg fillWorkingHours(String yearMonth, MonthWorkingTimeVO monthVO, HttpServletRequest request);
+//
+//    HttpRespMsg fillAll(String month, String userId, Integer departmentId, Integer whether,HttpServletRequest request);
+//
+//    HttpRespMsg getAIReport(HttpServletRequest request);
+//
+//    HttpRespMsg getWeeklyReportData(String targetDate, HttpServletRequest request);
+//
+//    HttpRespMsg batchDelete(String userIds, String startDate, String endDate, HttpServletRequest request);
+//
+//    HttpRespMsg batchApproveByDate(String startDate, String endDate, HttpServletRequest request);
+
+    HttpRespMsg submitReport(Report report, HttpServletRequest request);
 }

+ 0 - 136
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/CompanyServiceImpl.java

@@ -33,8 +33,6 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
     @Resource
     private ProjectMapper projectMapper;
     @Resource
-    private ProjectService projectService;
-    @Resource
     private ReportMapper reportMapper;
     @Resource
     private CustomerInfoMapper customerInfoMapper;
@@ -54,138 +52,4 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
     private UserService userService;
     @Resource
     private ReportService reportService;
-    @Override
-    public HttpRespMsg dataMigration(Integer oldCompanyId,Integer targetCompanyId) {
-        HttpRespMsg msg=new HttpRespMsg();
-        List<User> oldUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", oldCompanyId));
-        List<User> targetUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", targetCompanyId));
-        List<Department> oldDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", oldCompanyId));
-        List<Department> targetDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", targetCompanyId));
-        //处理部门负责人
-        List<User> updateUserList=new ArrayList<>();
-        List<Department> updateDepartmentList=new ArrayList<>();
-        for (Department oldDepartment : oldDepartmentList) {
-            for (Department targetDepartment : targetDepartmentList) {
-                if(oldDepartment.getDepartmentName().equals(targetDepartment.getDepartmentName())){
-                    if(oldDepartment.getManagerId()!=null){
-                        Optional<User> oldUser = oldUserList.stream().filter(ou -> ou.getId().equals(oldDepartment.getManagerId())).findFirst();
-                        Optional<User> targetUser = targetUserList.stream().filter(tu -> tu.getDingdingUserid().equals(oldUser.get().getDingdingUserid())).findFirst();
-                        targetDepartment.setManagerId(targetUser.get().getId());
-                        targetUser.get().setDepartmentId(targetDepartment.getDepartmentId());
-                        targetUser.get().setDepartmentName(targetDepartment.getDepartmentName());
-                        updateUserList.add(targetUser.get());
-                        updateDepartmentList.add(targetDepartment);
-                    }
-                }
-            }
-        }
-        userService.updateBatchById(updateUserList);
-        departmentService.updateBatchById(updateDepartmentList);
-        List<String> ids=new ArrayList<>();
-        //获取在目标公司也存在的人员
-        for (User targetUser : targetUserList) {
-            for (User oldUser : oldUserList) {
-                if(targetUser.getDingdingUserid().equals(oldUser.getDingdingUserid())){
-                    ids.add(oldUser.getId());
-                }
-            }
-        }
-        List<Participation> participationList = participationMapper.selectList(new QueryWrapper<Participation>().in("user_id", ids));
-        //取项目id  按照项目参与人
-        List<Integer> projectIds = participationList.stream().map(pc -> pc.getProjectId()).collect(Collectors.toList());
-        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", projectIds));
-        List<Project> targetProjectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", targetCompanyId));
-        List<String> list = targetProjectList.stream().map(tp -> tp.getProjectCode()).collect(Collectors.toList());
-        List<ProjectAuditor> oldProjectAuditorList = projectAuditorMapper.selectList(new QueryWrapper<ProjectAuditor>().in("project_id", projectIds));
-        //处理相关项目
-        List<Project> newProjectList=new ArrayList<>();
-        List<ProjectAuditor> newProjectAuditorList=new ArrayList<>();
-        List<Participation> newParticipationList=new ArrayList<>();
-        for (Project pro: projectList) {
-            //此前的项目负责人不存在当前组织架构
-            Optional<User> inchargerUser = oldUserList.stream().filter(ou -> ou.getId().equals(pro.getInchargerId())).findFirst();
-            boolean flag = targetUserList.stream().anyMatch(tu -> tu.getDingdingUserid().equals(inchargerUser.get().getDingdingUserid()));
-            if(!flag){
-                //msg.setError("当前项目["+pro.getProjectName()+"]负责人["+inchargerUser.get().getName()+"]不存在");
-                msg.setError(MessageUtils.message("project.masterNull",pro.getProjectName(),inchargerUser.get().getName()));
-                return msg;
-            }else {
-                Optional<User> targetInchargerUser = targetUserList.stream().filter(tu -> tu.getDingdingUserid().equals(inchargerUser.get().getDingdingUserid())).findFirst();
-                pro.setInchargerId(targetInchargerUser.get().getId());
-            }
-            //在新公司创建相同的客户信息
-            /*CustomerInfo customerInfo = customerInfoMapper.selectById(pro.getCustomerId());
-            customerInfo.setId(null);
-            customerInfo.setCompanyId(targetCompanyId);
-            customerInfoMapper.insert(customerInfo);
-            pro.setCustomerId(customerInfo.getId());*/
-            List<ProjectAuditor> projectAuditorList = oldProjectAuditorList.stream().filter(pa -> pa.getProjectId().equals(pro.getId())).collect(Collectors.toList());
-            Optional<User> creatorUser = oldUserList.stream().filter(ou -> ou.getName().equals("李婷婷")).findFirst();
-            Optional<User> targetCreatorUser = targetUserList.stream().filter(tu -> tu.getDingdingUserid().equals(creatorUser.get().getDingdingUserid())).findFirst();
-            pro.setCreatorId(targetCreatorUser.get().getId());
-            //当前项目的相关参与人
-            List<String> userList = participationList.stream().filter(pc -> pc.getProjectId().equals(pro.getId())).collect(Collectors.toList()).stream().map(o -> o.getUserId()).collect(Collectors.toList());
-            pro.setId(null);
-            pro.setCompanyId(targetCompanyId);
-            if(list.contains(pro.getProjectCode())){
-                continue;
-            }
-            newProjectList.add(pro);
-            //处理项目审核人
-            for (ProjectAuditor projectAuditor : projectAuditorList) {
-                projectAuditor.setProjectId(pro.getId());
-                projectAuditor.setId(null);
-                Optional<User> first = targetUserList.stream().filter(tu -> tu.getName().equals(projectAuditor.getAuditorName())).findFirst();
-                if(first.isPresent()){
-                    projectAuditor.setAuditorId(first.get().getId());
-                    projectAuditor.setAuditorName(first.get().getName());
-                    newProjectAuditorList.add(projectAuditor);
-                }
-            }
-            for(String s:userList){
-               Participation participation=new Participation();
-               participation.setProjectId(pro.getId());
-                Optional<User> user = oldUserList.stream().filter(ou -> ou.getId().equals(s)).findFirst();
-                Optional<User> targetUser = targetUserList.stream().filter(tu -> tu.getDingdingUserid().equals(user.get().getDingdingUserid())).findFirst();
-                participation.setUserId(targetUser.get().getId());
-                newParticipationList.add(participation);
-            }
-        }
-        projectService.saveBatch(newProjectList);
-        projectAuditorService.saveBatch(newProjectAuditorList);
-        participationService.saveBatch(newParticipationList);
-        List<Project> oldProjectList = projectMapper.selectList(new QueryWrapper<Project>().in("id", projectIds));
-        //处理日报
-        List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().in("creator_id", ids));
-        List<Report> changeReportList=new ArrayList<>();
-        for (Report report : reportList) {
-            //项目关联
-            Optional<Project> oldProject = oldProjectList.stream().filter(op -> op.getId().equals(report.getProjectId())).findFirst();
-            Optional<Project> targetProject = projectList.stream().filter(pro -> pro.getProjectCode().equals(oldProject.get().getProjectCode())).findFirst();
-            report.setProjectId(targetProject.get().getId());
-            Optional<User> oldUser = oldUserList.stream().filter(ou -> ou.getId().equals(report.getCreatorId())).findFirst();
-            Optional<User> targetUser = targetUserList.stream().filter(tu -> tu.getDingdingUserid().equals(oldUser.get().getDingdingUserid())).findFirst();
-            report.setCreatorId(targetUser.get().getId());
-            //部门数据
-            Optional<Department> oldDepart = oldDepartmentList.stream().filter(od -> od.getDepartmentId().equals(report.getDeptId())).findFirst();
-            Optional<Department> targetDepart = targetDepartmentList.stream().filter(td -> td.getDepartmentName().equals(oldDepart.get().getDepartmentName())).findFirst();
-            report.setDeptId(targetDepart.get().getDepartmentId());
-            //当前审核部门数据
-            Optional<Department> oldAuditDepart = oldDepartmentList.stream().filter(od -> od.getDepartmentId().equals(report.getAuditDeptid())).findFirst();
-            if(oldAuditDepart.isPresent()){
-                Optional<Department> targetAuditDepart =targetDepartmentList.stream().filter(td -> td.getDepartmentName().equals(oldAuditDepart.get().getDepartmentName())).findFirst();
-                report.setAuditDeptid(targetAuditDepart.get().getDepartmentId());
-                report.setAuditDeptManagerid(targetAuditDepart.get().getManagerId());
-            }
-            //是否被驳回
-            if(!StringUtils.isNullOrEmpty(report.getRejectUsername())){
-                Optional<User> rejectUser = targetUserList.stream().filter(tu -> tu.getName().equals(report.getRejectUsername())).findFirst();
-                report.setRejectUserid(rejectUser.get().getId());
-            }
-            report.setCompanyId(targetCompanyId);
-            changeReportList.add(report);
-        }
-        reportService.updateBatchById(changeReportList);
-        return msg;
-    }
 }

+ 0 - 12
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java

@@ -183,18 +183,6 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
 
                                     userMapper.updateById(manageDeptOldUser);
                                 }
-
-                                //如果存在审核中的日报,需要切换部门的审核人为新的负责人
-                                List<Report> oldReportList = reportMapper.selectList(new QueryWrapper<Report>().select("id")
-                                        .eq("audit_dept_managerid", manageDeptOldUser.getId())
-                                        .eq("audit_deptid", departmentId)
-                                        .eq("state", 0)
-                                        .eq("company_id", companyId));
-                                if (oldReportList.size() > 0) {
-                                    Report r = new Report();
-                                    r.setAuditDeptManagerid(managerId);
-                                    reportMapper.update(r, new QueryWrapper<Report>().in("id", oldReportList.stream().map(Report::getId).collect(Collectors.toList())));
-                                }
                             }
                         }
                     } else {

+ 5 - 12
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PlanServiceImpl.java

@@ -184,18 +184,11 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
             for (Plan plan : planList) {
                 Optional<User> first = userList.stream().filter(ul -> ul.getId().equals(plan.getForemanId())).findFirst();
                 if(first.isPresent()){
-                    //推送到企业微信
-                    JSONObject json=new JSONObject();
-                    JSONArray dataJson=new JSONArray();
-                    JSONObject jsonObj=new JSONObject();
-                    jsonObj.put("key",planType==0?"今日计划":planType==1?"明日计划":"插单计划");
-                    jsonObj.put("value",planType==2?"任务名称"+plan.getTaskName()+"\n"+"任务变更通知号"+plan.getTaskChangeNoticeNum():"产品名称"+plan.getProductName()+"\n"+"排产工单号"+plan.getProductSchedulingNum());
-                    dataJson.add(jsonObj);
-                    //todo:配置消息模板以及推送后入口
-                    json.put("template_id","tty9TkCAAALUiWvjdoDg_PZf48gwucZA");
-                    json.put("url","https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww4e237fd6abb635af&redirect_uri=http://worktime.ttkuaiban.com/api/corpWXAuth&response_type=code&scope=snsapi_base&state=expense#wechat_redirect");
-                    json.put("content_item",dataJson);
-                    wxCorpInfoService.sendWXCorpTemplateMsg(wxCorpInfo,first.get().getCorpwxUserid(), json);
+                    //todo:推送到企业微信
+                    StringBuilder stringBuilder=new StringBuilder();
+                    stringBuilder.append(planType==0?"今日计划":planType==1?"明日计划":"插单计划"+": ");
+                    stringBuilder.append(planType==2?"任务名称"+plan.getTaskName()+"\n"+"任务变更通知号"+plan.getTaskChangeNoticeNum():"产品名称"+plan.getProductName()+"\n"+"排产工单号"+plan.getProductSchedulingNum());
+                    wxCorpInfoService.sendWXCorpMsg(wxCorpInfo,first.get().getCorpwxUserid(),stringBuilder.toString(),planType==0?"plan/today":planType==1?"plan/tomorrow":"plan/orderInsert",null);
                 }else msg.setError("验证失败");
             }
         }

+ 23 - 2
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProdMaterialServiceImpl.java

@@ -2,8 +2,6 @@ package com.management.platform.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.management.platform.entity.PlanMaterial;
-import com.management.platform.entity.ProdMaterial;
 import com.management.platform.entity.ProdMaterial;
 import com.management.platform.entity.User;
 import com.management.platform.mapper.PlanMaterialMapper;
@@ -18,6 +16,8 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -137,4 +137,25 @@ public class ProdMaterialServiceImpl extends ServiceImpl<ProdMaterialMapper, Pro
 
         return msg;
     }
+
+    @Override
+    public HttpRespMsg getLastProdMaterialList(Integer productId, HttpServletRequest request) {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        HashMap<String,Object> map=new HashMap<>();
+
+        List<String> versionList= (List<String>) getVersion(request,productId).getData();
+        List<ProdMaterial> prodMaterialList=new ArrayList<>();
+        if(versionList!=null&&versionList.size()>0){
+            HttpRespMsg info = getInfo(request, versionList.get(versionList.size() - 1), productId);
+            prodMaterialList= (List<ProdMaterial>) info.data;
+            map.put("version",versionList.get(versionList.size() - 1));
+        }else{
+            map.put("version","");
+        }
+
+        map.put("prodMaterialList",prodMaterialList);
+        System.out.println(map);
+        httpRespMsg.data=map;
+        return httpRespMsg;
+    }
 }

+ 54 - 44
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProdProcedureServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.ProdProcedure;
 import com.management.platform.entity.User;
 import com.management.platform.mapper.ProdProcedureMapper;
+import com.management.platform.mapper.ProductMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.ProdProcedureService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -17,6 +18,7 @@ import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -34,67 +36,75 @@ public class ProdProcedureServiceImpl extends ServiceImpl<ProdProcedureMapper, P
     private ProdProcedureMapper prodProcedureMapper;
     @Resource
     private UserMapper userMapper;
+    @Resource
+    private ProductMapper productMapper;
 
 
     @Override
-    public HttpRespMsg changeProdProcedure(HttpServletRequest request, List<ProdProcedure> prodProcedureList, Integer productId,String version) {
+    public HttpRespMsg changeProdProcedure(HttpServletRequest request, List<ProdProcedure> prodProcedureList, Integer productId, String productName, String version) {
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
+        //检查有没有重复的工序名称
+        Map<String,ProdProcedure> map=new HashMap<>();
+        long count = prodProcedureList.stream().filter(prodProcedure -> map.put(prodProcedure.getName(), prodProcedure) == null).count();
+        if(count==prodProcedureList.size()){
+
+
+            prodProcedureList.stream().forEach(prodProcedure -> {
+                user.getCompanyId();
+                prodProcedure.setCompanyId(user.getCompanyId());
+                prodProcedure.setProductId(productId);
+                prodProcedure.setVersionNumber(version);
+                prodProcedure.setProductName(productName);
+            });
+
+            //1.获取原有的工序id
+            List<ProdProcedure> oldList = prodProcedureMapper.selectList(new LambdaQueryWrapper<ProdProcedure>()
+                    .eq(user.getCompanyId() != null, ProdProcedure::getCompanyId, user.getCompanyId())
+                    .eq(productId != null, ProdProcedure::getProductId, productId)
+                    .eq(StringUtils.isNotBlank(version),ProdProcedure::getVersionNumber,version)
+                    .select(ProdProcedure::getId)
+            );
+
+            if(oldList!=null&&oldList.size()>0){
+
+                //2.要删除的id
+                List<ProdProcedure> deleteList = oldList.stream().filter(old -> {
+                    for (ProdProcedure prodProcedure : prodProcedureList) {
+                        if (prodProcedure.getId() == old.getId()) {
+                            return false;
+                        }
+                    }
+                    return true;
 
-        prodProcedureList.stream().forEach(prodProcedure -> {
-            user.getCompanyId();
-            prodProcedure.setCompanyId(user.getCompanyId());
-            prodProcedure.setProductId(productId);
-            prodProcedure.setVersionNumber(version);
-
-        });
-
-
-        //1.获取原有的工序id
-        List<ProdProcedure> oldList = prodProcedureMapper.selectList(new LambdaQueryWrapper<ProdProcedure>()
-                .eq(user.getCompanyId() != null, ProdProcedure::getCompanyId, user.getCompanyId())
-                .eq(productId != null, ProdProcedure::getProductId, productId)
-                .eq(StringUtils.isNotBlank(version),ProdProcedure::getVersionNumber,version)
-                .select(ProdProcedure::getId)
-        );
-
-        if(oldList!=null&&oldList.size()>0){
+                }).collect(Collectors.toList());
+                if (deleteList != null && deleteList.size() > 0) {
 
-            //2.要删除的id
-            List<ProdProcedure> deleteList = oldList.stream().filter(old -> {
-                for (ProdProcedure prodProcedure : prodProcedureList) {
-                    if (prodProcedure.getId() == old.getId()) {
-                        return false;
-                    }
+                    List<Integer> deleteIdList = deleteList.stream().map(delete -> delete.getId()).collect(Collectors.toList());
+                    prodProcedureMapper.deleteBatchIds(deleteIdList);
                 }
-                return true;
 
-            }).collect(Collectors.toList());
-            if (deleteList != null && deleteList.size() > 0) {
+                //3.编辑的id
+                List<ProdProcedure> updateList = prodProcedureList.stream().filter(prodProcedure -> prodProcedure.getId() != null).collect(Collectors.toList());
+                if (updateList != null&&updateList.size()>0) {
+                    this.updateBatchById(updateList);
+                }
+                //4.新增的id
+                List<ProdProcedure> insertList = prodProcedureList.stream().filter(prodProcedure -> prodProcedure.getId() == null).collect(Collectors.toList());
+                if (insertList != null&&insertList.size()>0) {
+                    this.saveBatch(insertList);
+                }
+            }else{
 
-                List<Integer> deleteIdList = deleteList.stream().map(delete -> delete.getId()).collect(Collectors.toList());
-                prodProcedureMapper.deleteBatchIds(deleteIdList);
+                this.saveBatch(prodProcedureList);
             }
 
-            //3.编辑的id
-            List<ProdProcedure> updateList = prodProcedureList.stream().filter(prodProcedure -> prodProcedure.getId() != null).collect(Collectors.toList());
-            if (updateList != null&&updateList.size()>0) {
-                this.updateBatchById(updateList);
-            }
-            //4.新增的id
-            List<ProdProcedure> insertList = prodProcedureList.stream().filter(prodProcedure -> prodProcedure.getId() == null).collect(Collectors.toList());
-            if (insertList != null&&insertList.size()>0) {
-                this.saveBatch(insertList);
-            }
         }else{
-
-            this.saveBatch(prodProcedureList);
+            msg.setError("工序名称重复");
         }
 
 
-
-
         return msg;
     }
 

+ 421 - 116
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java

@@ -1,9 +1,11 @@
 package com.management.platform.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
 import com.management.platform.entity.*;
 import com.management.platform.mapper.*;
 import com.management.platform.service.ProdMaterialService;
@@ -13,12 +15,15 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MessageUtils;
 import org.apache.poi.EncryptedDocumentException;
+import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
-import org.apache.poi.ss.usermodel.CellType;
+import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.usermodel.XSSFCell;
 import org.apache.poi.xssf.usermodel.XSSFRow;
 import org.apache.poi.xssf.usermodel.XSSFSheet;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
@@ -27,10 +32,8 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.io.*;
-import java.time.format.DateTimeFormatter;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.util.*;
 
 /**
  * <p>
@@ -43,6 +46,8 @@ import java.util.Map;
 @Service
 @Transactional
 public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
+    /*@Value(value = "${upload.path}")
+    private String path;*/
     @Resource
     ProductMapper productMapper;
     @Resource
@@ -93,17 +98,41 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
 
     @Override
     public HttpRespMsg saveProductInfo(Product product, HttpServletRequest request) {
+        HttpRespMsg msg = new HttpRespMsg();
+
         String token = request.getHeader("Token");
         User user = userMapper.selectById(token);
+
         product.setCompanyId(user.getCompanyId());
         if (product.getId() == null) {
-            productMapper.insert(product);
+            Integer count = productMapper.selectCount(new LambdaQueryWrapper<Product>()
+                    .eq(user.getCompanyId() != null, Product::getCompanyId, user.getCompanyId())
+                    .eq(!StringUtils.isEmpty(product.getName()), Product::getName, product.getName())
+            );
+            if(count==0){
+                productMapper.insert(product);
+
+            }else{
+                msg.setError("产品名重复");
+            }
         } else {
-            productMapper.updateById(product);
+            Product selectOne = productMapper.selectOne(new LambdaQueryWrapper<Product>()
+                    .eq(user.getCompanyId() != null, Product::getCompanyId, user.getCompanyId())
+                    .eq(!StringUtils.isEmpty(product.getName()), Product::getName, product.getName())
+            );
+            if(selectOne.getId()==product.getId()){
+                productMapper.updateById(product);
+            }else{
+                msg.setError("产品名重复");
+            }
+
         }
-        HttpRespMsg msg = new HttpRespMsg();
+
         System.out.println(product);
         msg.setData(product);
+
+
+
         return msg;
     }
 
@@ -156,7 +185,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
     }
 
     /**
-     * todo  待定
+     *
      * @param multipartFile
      * @param categoryId
      * @param request
@@ -165,7 +194,12 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
     @Override
     public HttpRespMsg importData(MultipartFile multipartFile, Integer categoryId, HttpServletRequest request) {
         HttpRespMsg msg=new HttpRespMsg();
-        DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        List<Product> productList=new ArrayList<>();
+        List<ProdProcedure> prodProcedureList=new ArrayList<>();
+
+
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+
         String fileName = multipartFile.getOriginalFilename();
         File file = new File(fileName == null ? "file" : fileName);
         InputStream inputStream = null;
@@ -183,138 +217,229 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             }
             inputStream.close();
             outputStream.close();
+
+
             //然后解析表格
+
             XSSFWorkbook workbook = new XSSFWorkbook(file);
-            //我们只需要第一个sheet
+            //第一个sheet 产品信息
             XSSFSheet sheet = workbook.getSheetAt(0);
             int rowNum = sheet.getLastRowNum();
 
             //获取相关数据
-            Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+
             for(int rowIndex=1;rowIndex<=rowNum;rowIndex++){
                 XSSFRow row = sheet.getRow(rowIndex);
                 //跳过空行
                 if(row==null){
                     continue;
                 }
-                if(rowIndex==1){
-                    //产品基本信息
-                    XSSFCell nameCell = row.getCell(0);
-                    XSSFCell codeCell = row.getCell(1);
-                    XSSFCell orderNumberCell = row.getCell(2);
-                    XSSFCell unitCell = row.getCell(3);
-                    XSSFCell groupNumberCell = row.getCell(4);
-                    XSSFCell columnNumberCell = row.getCell(5);
-                    XSSFCell vehicleNumberCell = row.getCell(6);
-                    XSSFCell descriptionCell = row.getCell(7);
-                    XSSFCell categoryNameCell = row.getCell(8);
-                    if(nameCell!=null){
-                        nameCell.setCellType(CellType.STRING);
-                    }
-                    if(codeCell!=null){
-                        codeCell.setCellType(CellType.STRING);
-                    }
-                    if(orderNumberCell!=null){
-                        orderNumberCell.setCellType(CellType.NUMERIC);
-                    }
-                    if(unitCell!=null){
-                        unitCell.setCellType(CellType.STRING);
-                    }
-                    if(groupNumberCell!=null){
-                        groupNumberCell.setCellType(CellType.NUMERIC);
-                    }
-                    if(columnNumberCell!=null){
-                        columnNumberCell.setCellType(CellType.NUMERIC);
-                    }
-                    if(vehicleNumberCell!=null){
-                        vehicleNumberCell.setCellType(CellType.NUMERIC);
-                    }
-                    if(descriptionCell!=null){
-                        descriptionCell.setCellType(CellType.STRING);
-                    }
-                    if(categoryNameCell!=null){
-                        categoryNameCell.setCellType(CellType.STRING);
-                    }
 
-                    Product product=new Product();
-                    product.setCompanyId(companyId);
-                    if(nameCell!=null){
+                //产品基本信息
+                XSSFCell nameCell = row.getCell(0);
+                XSSFCell codeCell = row.getCell(1);
+                XSSFCell orderNumberCell = row.getCell(2);
+                XSSFCell unitCell = row.getCell(3);
+                XSSFCell groupNumberCell = row.getCell(4);
+                XSSFCell columnNumberCell = row.getCell(5);
+                XSSFCell vehicleNumberCell = row.getCell(6);
+                XSSFCell descriptionCell = row.getCell(7);
+
+                if(nameCell!=null){
+                    nameCell.setCellType(CellType.STRING);
+                }
+                if(codeCell!=null){
+                    codeCell.setCellType(CellType.STRING);
+                }
+                if(orderNumberCell!=null){
+                    orderNumberCell.setCellType(CellType.NUMERIC);
+                }
+                if(unitCell!=null){
+                    unitCell.setCellType(CellType.STRING);
+                }
+                if(groupNumberCell!=null){
+                    groupNumberCell.setCellType(CellType.NUMERIC);
+                }
+                if(columnNumberCell!=null){
+                    columnNumberCell.setCellType(CellType.NUMERIC);
+                }
+                if(vehicleNumberCell!=null){
+                    vehicleNumberCell.setCellType(CellType.NUMERIC);
+                }
+                if(descriptionCell!=null){
+                    descriptionCell.setCellType(CellType.STRING);
+                }
+
+
+                Product product=new Product();
+                product.setCompanyId(companyId);
+                product.setCategoryId(categoryId);
+                if(nameCell!=null){
+                    Integer count = productMapper.selectCount(new LambdaQueryWrapper<Product>()
+                            .eq(companyId != null, Product::getCompanyId, companyId)
+                            .eq(!StringUtils.isEmpty( nameCell.getStringCellValue()), Product::getName,  nameCell.getStringCellValue())
+                    );
+                    if(count==0){
                         product.setName(nameCell.getStringCellValue());
-                    }else{
-                        msg.setError("产品名称不能为空");
-                        return msg;
-                    }
-                    if(codeCell!=null){
-                       product.setCode(codeCell.getStringCellValue());
-                    }else{
-                        msg.setError("项目代码不能为空");
-                        return msg;
-                    }
-                    if(orderNumberCell!=null){
-                        product.setOrderNumber(Integer.valueOf(String.valueOf(orderNumberCell.getNumericCellValue())));
 
                     }else{
-                        msg.setError("订单数量不能为空");
+                        msg.setError("产品名和已存在的产品重复");
                         return msg;
                     }
-                    if(unitCell!=null){
-                        product.setUnit(unitCell.getStringCellValue());
 
-                    }else{
-                        msg.setError("单位不能为空");
-                        return msg;
-                    }
-                    if(groupNumberCell!=null){
-                        product.setGroupNumber(Integer.valueOf(String.valueOf(groupNumberCell.getStringCellValue())));
-                    }else{
-                        msg.setError("编组不能为空");
-                        return msg;
-                    }
-                    if(columnNumberCell!=null){
-                        product.setColumnNumber(Integer.valueOf(String.valueOf(columnNumberCell.getStringCellValue())));
-                    }
-                    if(vehicleNumberCell!=null){
-                        product.setVehicleNumber(Integer.valueOf(String.valueOf(vehicleNumberCell.getStringCellValue())));
+                }else{
+                    msg.setError("产品名称不能为空");
+                    return msg;
+                }
+                if(codeCell!=null){
+                    product.setCode(codeCell.getStringCellValue());
+                }else{
+                    msg.setError("项目代码不能为空");
+                    return msg;
+                }
+                if(orderNumberCell!=null){
+                    product.setOrderNumber((int) Math.round(orderNumberCell.getNumericCellValue()));
 
+                }else{
+                    msg.setError("订单数量不能为空");
+                    return msg;
+                }
+                if(unitCell!=null){
+                    product.setUnit(unitCell.getStringCellValue());
+
+                }else{
+                    msg.setError("单位不能为空");
+                    return msg;
+                }
+                if(groupNumberCell!=null){
+                    product.setGroupNumber((int) Math.round(groupNumberCell.getNumericCellValue()));
+                }else{
+                    msg.setError("编组不能为空");
+                    return msg;
+                }
+                if(columnNumberCell!=null){
+                    product.setColumnNumber((int) Math.round(columnNumberCell.getNumericCellValue()));
+                }
+                if(vehicleNumberCell!=null){
+                    product.setVehicleNumber((int) Math.round(vehicleNumberCell.getNumericCellValue()));
+
+                }
+                if(descriptionCell!=null){
+                    product.setDescription(descriptionCell.getStringCellValue());
+                }
+                productList.add(product);
+
+            }
+
+            //获取派工单信息
+            sheet = workbook.getSheetAt(1);
+            rowNum = sheet.getLastRowNum();
+
+            for(int indexNum=1;indexNum<rowNum;indexNum++){
+                XSSFRow row = sheet.getRow(indexNum);
+                //跳过空行
+                if(row==null){
+                    continue;
+                }
+
+                //工序信息
+                XSSFCell productNameCell = row.getCell(0);
+                XSSFCell versionNumberCell = row.getCell(1);
+                XSSFCell nameCell = row.getCell(2);
+                XSSFCell workingTimeCell = row.getCell(3);
+                XSSFCell unitPriceCell = row.getCell(4);
+                XSSFCell checkTypeCell = row.getCell(5);
+                if( productNameCell!=null){
+                    productNameCell.setCellType(CellType.STRING);
+                }
+                if(versionNumberCell!=null){
+                    versionNumberCell.setCellType(CellType.STRING);
+                }
+                if(nameCell!=null){
+                    nameCell.setCellType(CellType.STRING);
+                }
+                if(workingTimeCell!=null){
+                    workingTimeCell.setCellType(CellType.NUMERIC);
+                }
+                if(unitPriceCell!=null){
+                    unitPriceCell.setCellType(CellType.NUMERIC);
+                }
+                if(checkTypeCell!=null){
+                    checkTypeCell.setCellType(CellType.STRING);
+                }
+
+                ProdProcedure prodProcedure=new ProdProcedure();
+                if( productNameCell!=null){
+                    prodProcedure.setProductName(productNameCell.getStringCellValue());
+                }else{
+                    msg.setError("产品名称不能为空");
+                }
+                if(versionNumberCell!=null){
+                    prodProcedure.setVersionNumber(versionNumberCell.getStringCellValue());
+
+                }else{
+                    msg.setError("版本号不能为空");
+                }
+                if(nameCell!=null){
+                    prodProcedure.setName(nameCell.getStringCellValue());
+
+                }else{
+                    msg.setError("工序名称不能为空");
+                }
+                if(workingTimeCell!=null){
+                    prodProcedure.setWorkingTime((int) Math.round(workingTimeCell.getNumericCellValue()));
+
+                }else{
+                    msg.setError("单件工时不能为空");
+                }
+                if(unitPriceCell!=null){
+                    prodProcedure.setUnitPrice(new BigDecimal(unitPriceCell.getNumericCellValue()));
+                }else{
+                    msg.setError("单件工价不能为空");
+                }
+                if(checkTypeCell!=null){
+                    String checkType = String.valueOf(checkTypeCell.getStringCellValue());
+                    switch (checkType){
+                        case "自检" : prodProcedure.setCheckType(0);break;
+                        case "互检" : prodProcedure.setCheckType(1);break;
+                        case "专检" : prodProcedure.setCheckType(2);break;
+                        default: msg.setError("质检类型只能为:自检,互检,专检");return msg;
                     }
-                    if(descriptionCell!=null){
-                        product.setDescription(descriptionCell.getStringCellValue());
-                        descriptionCell.setCellType(CellType.STRING);
-                    }
-                    if(categoryNameCell!=null){
-
-                        ProdCategory category = prodCategoryMapper.selectOne(new QueryWrapper<ProdCategory>().eq("name", categoryNameCell.getStringCellValue()));
-                        if(category==null){
-                            msg.setError("该分类不存在");
-                            return msg;
-                        }
-                        product.setCategoryName(category.getName());
-                        product.setCategoryId(category.getId());
-                    }else{
-                        msg.setError("分类名称不能为空");
-                        return msg;
-                    }
-                    rowIndex+=3;
                 }else{
-                    //工序和物料信息
-                    XSSFCell versionNumberPCell = row.getCell(0);
-                    XSSFCell namePCell = row.getCell(1);
-                    XSSFCell workingTimeCell = row.getCell(2);
-                    XSSFCell unitPriceCell = row.getCell(3);
-                    XSSFCell checkTypeCell = row.getCell(4);
-                    XSSFCell columnNumberCell = row.getCell(5);
-                    XSSFCell versionNumberMCell = row.getCell(6);
-                    XSSFCell nameMCell = row.getCell(7);
-                    XSSFCell companyCodeCell = row.getCell(8);
-                    XSSFCell materialQualityCell = row.getCell(9);
-                    XSSFCell thicknessCell = row.getCell(10);
-                    XSSFCell numberProductCell = row.getCell(11);
-                    XSSFCell numberVehicleCell = row.getCell(11);
+                    msg.setError("质检类型不能为空");
+                }
 
+                prodProcedureList.add(prodProcedure);
+            }
+
+            //检查同一版本的同一版本号工序中有没有重复的
+            for (ProdProcedure prodProcedure : prodProcedureList) {
 
+                long count = prodProcedureList.stream()
+                        .filter(procedure -> procedure.getProductName().equals(prodProcedure.getProductName()) && procedure.getVersionNumber().equals(prodProcedure.getVersionNumber()) && procedure.getName().equals(prodProcedure.getName()))
+                        .count();
+                if(count>1){
+                    msg.setError("产品"+prodProcedure.getProductName()+"的"+prodProcedure.getVersionNumber()+"版本工序重复了");
+                    return msg;
                 }
             }
 
+            System.out.println(productList);
+            System.out.println(prodProcedureList);
+            //插入数据
+            if(saveBatch(productList)) {
+
+                for (Product product : productList) {
+                    prodProcedureList.stream()
+                            .filter(prodProcedure -> prodProcedure.getProductName().equals(product.getName()))
+                            .forEach(prodProcedure ->{
+                                prodProcedure.setProductId(product.getId());
+                                prodProcedure.setCompanyId(companyId);
+
+                            } );
+                }
+            }
+            prodProcedureService.saveBatch(prodProcedureList);
 
         } catch (IOException e) {
             e.printStackTrace();
@@ -351,10 +476,190 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
 //            file.deleteOnExit();//程序退出时删除临时文件
             System.out.println(file.delete());
         }
-        return null;
+        return msg;
+    }
+
+
+    @Override
+    public HttpRespMsg exportData(String date, Integer productType)  {
+        HttpRespMsg msg=new HttpRespMsg();
+
+        List<Integer> productIdList =Arrays.asList( JSONObject.parseObject(date, Integer[].class));
+
+        if(productIdList!=null&&productIdList.size()>0) {
+
+            //获取数据
+            List<Product> productList = productMapper.selectBatchIds(productIdList);
+            List<ProdProcedure> prodProcedureList = prodProcedureMapper.selectList(new LambdaQueryWrapper<ProdProcedure>().in(ProdProcedure::getProductId, productIdList));
+
+            //表格
+            List<String> pdTitles; //列的名称
+            pdTitles = Arrays.asList("产品名称", "项目代码", "订单数量", "单位", "编组", "每列数量", "每辆数量", "描述");
+            List<String> pcTitles; //列的名称
+            pcTitles = Arrays.asList("产品名称", "版本号", "工序名称", "单件工时", "单件工价", "质检类型");
+
+            //设置表格格式
+            HSSFWorkbook wb = new HSSFWorkbook();
+
+            HSSFCellStyle style = wb.createCellStyle();
+            style.setBorderBottom(BorderStyle.valueOf((short) 1));
+            style.setBorderLeft(BorderStyle.valueOf((short) 1));
+            style.setBorderRight(BorderStyle.valueOf((short) 1));
+            style.setBorderTop(BorderStyle.valueOf((short) 1));
+            //水平居中
+            style.setAlignment(HorizontalAlignment.CENTER);
+            //垂直对齐
+            style.setVerticalAlignment(VerticalAlignment.CENTER);
+            style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+            style.setBottomBorderColor(IndexedColors.BLACK.index);
+            //背景颜色
+            style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
+            HSSFFont headerFont1 = (HSSFFont) wb.createFont();
+            //字体加粗
+            headerFont1.setBold(true);
+            //字体类型
+            headerFont1.setFontName("黑体");
+            //字体大小
+            headerFont1.setFontHeightInPoints((short) 15);
+            style.setFont(headerFont1);
+
+
+            HSSFSheet sheet=wb.createSheet("产品基本信息");
+            //设置每一列的列宽
+            sheet.setColumnWidth(0,256*15);
+            sheet.setColumnWidth(1,256*15);
+            sheet.setColumnWidth(2,256*15);
+            sheet.setColumnWidth(3,256*15);
+            sheet.setColumnWidth(4,256*15);
+            sheet.setColumnWidth(5,256*15);
+            sheet.setColumnWidth(6,256*15);
+            sheet.setColumnWidth(7,256*40);
+
+            HSSFRow row = sheet.createRow(0);
+            //创建标题
+            HSSFCell cell = null;
+            for (int i = 0; i < pdTitles.size(); i++) {
+                cell = row.createCell(i);
+                cell.setCellValue(pdTitles.get(i));
+                cell.setCellStyle(style);
+            }
+            //写入产品基本信息
+            for(int i=1;i<=productList.size();i++){
+                row=sheet.createRow(i);
+                row.createCell(0).setCellValue(productList.get(i-1).getName());
+                row.createCell(1).setCellValue(productList.get(i-1).getCode());
+                row.createCell(2).setCellValue(productList.get(i-1).getOrderNumber());
+                row.createCell(3).setCellValue(productList.get(i-1).getUnit());
+                row.createCell(4).setCellValue(productList.get(i-1).getGroupNumber());
+                row.createCell(5).setCellValue(productList.get(i-1).getColumnNumber());
+                row.createCell(6).setCellValue(productList.get(i-1).getVehicleNumber());
+                row.createCell(7).setCellValue(productList.get(i-1).getDescription());
+            }
+
+
+
+
+
+             sheet=wb.createSheet("派工单");
+            //设置每一列的列宽
+            sheet.setColumnWidth(0,256*15);
+            sheet.setColumnWidth(1,256*15);
+            sheet.setColumnWidth(2,256*15);
+            sheet.setColumnWidth(3,256*15);
+            sheet.setColumnWidth(4,256*15);
+            sheet.setColumnWidth(5,256*15);
+
+
+            row = sheet.createRow(0);
+            //创建标题
+             cell = null;
+            for (int i = 0; i < pcTitles.size(); i++) {
+                cell = row.createCell(i);
+                cell.setCellValue(pcTitles.get(i));
+                cell.setCellStyle(style);
+            }
+            //写入工序基本信息
+            for(int i=1;i<=prodProcedureList.size();i++){
+                row=sheet.createRow(i);
+                row.createCell(0).setCellValue(prodProcedureList.get(i-1).getProductName());
+                row.createCell(1).setCellValue(prodProcedureList.get(i-1).getVersionNumber());
+                row.createCell(2).setCellValue(prodProcedureList.get(i-1).getName());
+                row.createCell(3).setCellValue(prodProcedureList.get(i-1).getWorkingTime());
+                row.createCell(4).setCellValue(prodProcedureList.get(i-1).getUnitPrice().toString());
+
+                String chekType="";
+                switch(prodProcedureList.get(i-1).getCheckType()){
+                    case 0: chekType="自检";break;
+                    case 1: chekType="互检";break;
+                    case 2: chekType="专检";
+                }
+
+                row.createCell(5).setCellValue(chekType);
+            }
+
+
+            //导出excel
+            String result="系统提示:Excel文件导出成功!";
+
+            String title= "产品详情"+System.currentTimeMillis();
+            String fileName= title+".xlsx";
+            String path="D://cloud/upload/";
+            try {
+                File dir = null;
+                dir = new File(path);
+                // D://cloud/upload 文件上传后所存储的位置,部署到服务器上时配置服务器地址即可
+                if (!dir.exists()) {
+                    dir.mkdirs();
+                }
+                FileOutputStream os = new FileOutputStream(path+fileName);//保存到本地
+                wb.write(os);
+                os.flush();
+                os.close();
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+
+            msg.data ="/upload/"+fileName;
 
+        }
+        return msg;
+    }
 
+    @Override
+    public HttpRespMsg insertProductInfo(String name, Integer id, HttpServletRequest request) {
+        HttpRespMsg msg=new HttpRespMsg();
+        String token = request.getHeader("Token");
+        Integer companyId = userMapper.selectById(token).getCompanyId();
 
+        if(count(new LambdaQueryWrapper<Product>()
+                .eq(!StringUtils.isEmpty(name),Product::getName,name).eq(companyId!=null,Product::getCompanyId,companyId))>0){
+            msg.setError("产品名称重复");
+            return msg;
+        }
 
+
+        //1.查询目标产品的信息
+        Product product = productMapper.selectById(id);
+        List<ProdProcedure> prodProcedureList = prodProcedureMapper.selectList(new LambdaQueryWrapper<ProdProcedure>()
+                .eq(id != null, ProdProcedure::getProductId, id)
+                .eq(companyId != null, ProdProcedure::getCompanyId, companyId)
+        );
+        System.out.println(prodProcedureList);
+
+        //2.修改
+        product.setName(name);
+        product.setId(null);
+
+        System.out.println(product);
+
+        productMapper.insert(product);
+        prodProcedureList.stream().forEach(prodProcedure ->{
+            prodProcedure.setProductId(product.getId());
+            prodProcedure.setProductName(name);
+        });
+
+        prodProcedureService.saveBatch(prodProcedureList);
+
+        return msg;
     }
 }

+ 0 - 109
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProjectMainServiceImpl.java

@@ -1,109 +0,0 @@
-package com.management.platform.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.management.platform.entity.Project;
-import com.management.platform.entity.ProjectCategory;
-import com.management.platform.entity.ProjectMain;
-import com.management.platform.entity.ProjectSeparate;
-import com.management.platform.mapper.ProjectCategoryMapper;
-import com.management.platform.mapper.ProjectMainMapper;
-import com.management.platform.mapper.ProjectMapper;
-import com.management.platform.mapper.UserMapper;
-import com.management.platform.service.ProjectMainService;
-import com.management.platform.service.ProjectService;
-import com.management.platform.util.HttpRespMsg;
-import com.management.platform.util.MessageUtils;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
-
-/**
- * <p>
- *  服务实现类
- * </p>
- *
- * @author Seyason
- * @since 2022-06-28
- */
-@Service
-public class ProjectMainServiceImpl extends ServiceImpl<ProjectMainMapper, ProjectMain> implements ProjectMainService {
-
-    @Resource
-    private ProjectMainMapper projectMainMapper;
-    @Resource
-    private UserMapper userMapper;
-    @Resource
-    private ProjectCategoryMapper projectCategoryMapper;
-    @Resource
-    private ProjectMapper projectMapper;
-    @Resource
-    private ProjectService projectService;
-    @Override
-    public HttpRespMsg addOrMod(HttpServletRequest request,ProjectMain projectMain) {
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        projectMain.setCompanyId(companyId);
-        ProjectCategory projectCategory = projectCategoryMapper.selectById(projectMain.getCategoryId());
-        projectMain.setCategoryName(projectCategory.getName());
-        if(projectMain.getId()!=null){
-            ProjectMain oldProject = projectMainMapper.selectById(projectMain.getId());
-            Integer count = projectMainMapper.selectCount(new QueryWrapper<ProjectMain>().eq("company_id", projectMain.getCompanyId())
-                    .eq("code", projectMain.getCode()).ne("id", projectMain.getId()));
-            if(count>0){
-                //httpRespMsg.setError("编号已存在");
-                httpRespMsg.setError(MessageUtils.message("other.NumAlreadyExists"));
-                return httpRespMsg;
-            }
-            Integer count1 = projectMainMapper.selectCount(new QueryWrapper<ProjectMain>().eq("company_id", projectMain.getCompanyId())
-                    .eq("name", projectMain.getName()).ne("id", projectMain.getId()));
-            if(count1>0){
-                //httpRespMsg.setError("名称已存在");
-                httpRespMsg.setError(MessageUtils.message("name.nameRepeat"));
-                return httpRespMsg;
-            }
-            boolean nameChanged = !oldProject.getName().equals(projectMain.getName());
-            boolean categoryChanged = !oldProject.getCategoryId().equals(projectMain.getCategoryId());
-            projectMainMapper.updateById(projectMain);
-            //修改主项目名称  更新项目表
-            Project updateP = new Project();
-            if (nameChanged) {
-                updateP.setProjectMainName(projectMain.getName());
-            }
-            if (categoryChanged) {
-                updateP.setCategory(projectMain.getCategoryId());
-                updateP.setCategoryName(projectMain.getCategoryName());
-            }
-            if (nameChanged || categoryChanged) {
-                projectService.update(updateP, new QueryWrapper<Project>().eq("project_main_id", projectMain.getId()));
-            }
-        }else {
-            Integer count2 = projectMainMapper.selectCount(new QueryWrapper<ProjectMain>().eq("company_id", projectMain.getCompanyId())
-                    .eq("code", projectMain.getCode()));
-            Integer count3 = projectMainMapper.selectCount(new QueryWrapper<ProjectMain>().eq("company_id", projectMain.getCompanyId())
-                    .eq("name", projectMain.getName()));
-            if(count2>0){
-                //httpRespMsg.setError("编号已存在");
-                httpRespMsg.setError(MessageUtils.message("other.NumAlreadyExists"));
-                return httpRespMsg;
-            }
-            if(count3>0){
-                //httpRespMsg.setError("名称已存在");
-                httpRespMsg.setError(MessageUtils.message("name.nameRepeat"));
-                return httpRespMsg;
-            }
-            projectMainMapper.insert(projectMain);
-        }
-        return httpRespMsg;
-    }
-
-    @Override
-    public HttpRespMsg getListByCategory(Integer categoryId) {
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        List<ProjectMain> projectMainList = projectMainMapper.selectList(new QueryWrapper<ProjectMain>().eq("category_id", categoryId));
-        httpRespMsg.data=projectMainList;
-        return httpRespMsg;
-    }
-}

Разница между файлами не показана из-за своего большого размера
+ 0 - 9846
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java


Разница между файлами не показана из-за своего большого размера
+ 3292 - 3542
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java


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

@@ -196,8 +196,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     @Resource
     private ReportFormMapper reportFormMapper;
     @Resource
-    private ProjectService projectService;
-    @Resource
     private ProjectAuditorService projectAuditorService;
     @Resource
     private TaskService taskService;
@@ -773,7 +771,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         }else {
             try {
                 Integer companyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
-                TimeType timeType = timeTypeMapper.selectById(companyId);
                 long total;
                 List<Map<String, Object>> list;
                 Page<User> page = new Page<>(pageIndex, pageSize);
@@ -801,13 +798,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                     total = page.getTotal();
                 }
                 Map<String, Object> resultMap = new HashMap<>();
-                if (timeType.getIsSecretSalary() == 1) {
-                    //秘薪处理
-                    list.forEach(li->{
-                        li.put("monthCost", 0.0);
-                        li.put("cost", 0.0);
-                    });
-                }
+
                 List<UserCustom> userCustomList = userCustomMapper.selectList(new QueryWrapper<UserCustom>().eq("company_id", companyId));
                 if(!StringUtils.isEmpty(list)){
                     for(Map<String,Object> u:list) {
@@ -867,6 +858,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 httpRespMsg.data = resultMap;
             } catch (NullPointerException e) {
                 //httpRespMsg.setError("验证失败");
+                e.printStackTrace();
                 httpRespMsg.setError(MessageUtils.message("access.verificationError"));
                 return httpRespMsg;
             }
@@ -1338,11 +1330,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                                 .eq("state", 0)
                                 .eq("project_auditor_id", oldSuperiorId);
                         Integer count = reportMapper.selectCount(queryWrapper);
-                        if (count > 0) {
-                            //更新日报审核人为新的superiorId
-                            Report updateReport = new Report().setProjectAuditorId(superiorId).setProjectAuditorName(userMapper.selectById(superiorId).getName());
-                            reportMapper.update(updateReport, queryWrapper);
-                        }
                     }
                 }
                 //更新人员专业证书表
@@ -2632,8 +2619,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         User sourceUser = userMapper.selectById(sourceId);
         //目标
         User targetUser = userMapper.selectById(targetId);
-        //转移日报
-        reportService.moveReport(sourceUser,targetUser);
+//        //转移日报
+//        reportService.moveReport(sourceUser,targetUser);
 
         //转移用户负责的项目
         List<Project> projectInchargerList = projectMapper.selectList(new QueryWrapper<Project>().eq("incharger_id", sourceUser.getId()));
@@ -2641,7 +2628,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
             for (Project project : projectInchargerList) {
                 project.setInchargerId(targetUser.getId());
             }
-            projectService.updateBatchById(projectInchargerList);
+//            projectService.updateBatchById(projectInchargerList);
         }
 
         //转移用户创建的项目
@@ -2651,7 +2638,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 project.setCreatorId(targetUser.getId());
                 project.setCreatorName(targetUser.getName());
             }
-            projectService.updateBatchById(projectCreatorList);
+//            projectService.updateBatchById(projectCreatorList);
         }
 
         //转移项目审核人

+ 38 - 10
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java

@@ -74,6 +74,8 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
     //获取日程
     public static final String ADD_SCHEDULE = " https://qyapi.weixin.qq.com/cgi-bin/oa/schedule/add?access_token=ACCESS_TOKEN";
 
+    public static final String GET_CORP_TOKEN = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET";
+
 
     public static final int TEXT_CARD_MSG_BUSTRIP_WAITING_AUDIT = 0;//出差待审核
     public static final int TEXT_CARD_MSG_BUSTRIP_AGREE = 1;//出差审核通过
@@ -250,7 +252,7 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
             if (isDev) return;
             log.info("发送企业微信消息===" + corpUserid);
             System.out.println("发送企业微信消息===" + corpUserid);
-            String accessToken = getCorpAccessToken(corpInfo);
+            String accessToken = getAppConcactAccessToken(corpInfo);
             String url = URL_SEND_WXCORP_MSG.replaceAll("ACCESS_TOKEN", accessToken);
             HttpHeaders headers = new HttpHeaders();
             headers.setContentType(MediaType.APPLICATION_JSON);
@@ -267,15 +269,17 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
             }else {
                 jumpUrl="https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww4e237fd6abb635af&redirect_uri=http://worktime.ttkuaiban.com/api/corpWXAuth&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
             }
-
-            if (StringUtils.isEmpty(pageRouter)) {
-                title = "消息通知";
-                jumpUrl = jumpUrl.replace("STATE", "0");
-                if (msgType.equals(TEXT_CARD_MSG_REPORT_DENY)) {
-                    title = "日报驳回";
-                } else if (msgType.equals(TEXT_CARD_MSG_REPORT_AGREE)) {
-                    title = "日报审核通过";
-                }
+            jumpUrl = jumpUrl.replace("STATE", pageRouter);
+            if ("plan/today".equals(pageRouter)) {
+                //出差
+                title = "收到新的今日计划";
+            } else if ("plan/tomorrow".equals(pageRouter)) {
+                //费用报销
+                title = "收到新的明日计划";
+            }
+            else if ("plan/orderInsert".equals(pageRouter)) {
+                //费用报销
+                title = "收到新的插单计划";
             }
             cardJson.put("title", title);
             cardJson.put("description", msg);
@@ -505,6 +509,30 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
         return userOpenIdList;
     }
 
+    /**
+     * 获取应用的AccessToken
+     * @param corpInfo
+     * @return
+     * @throws Exception
+     */
+    private String getAppConcactAccessToken(WxCorpInfo corpInfo) throws Exception {
+        String url = GET_CORP_TOKEN.replace("ID", corpInfo.getCorpid()).replace("SECRET", corpInfo.getAgentSecret());
+        ResponseEntity<String> responseEntity = this.restTemplate.exchange(url,
+                HttpMethod.GET, null, String.class);
+        if (responseEntity.getStatusCode() == HttpStatus.OK) {
+            String resp = responseEntity.getBody();
+            JSONObject json = JSONObject.parseObject(resp);
+            if (json.getIntValue("errcode") == 0) {
+                String access_token = json.getString("access_token");
+                System.out.println("获取到access_token=="+access_token);
+                corpInfo.setAccessToken(access_token);
+            } else {
+                throw new Exception(json.toJSONString());
+            }
+        }
+        return corpInfo.getAccessToken();
+    }
+
     //获取企业AccessToken
     private String getCorpAccessToken(WxCorpInfo corpInfo) throws Exception {
         if (corpInfo.getExpireTime().isBefore(LocalDateTime.now())) {

Разница между файлами не показана из-за своего большого размера
+ 18 - 914
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ReportMapper.xml


+ 22 - 14
fhKeeper/formulahousekeeper/timesheet-workshop-h5/babel.config.js

@@ -1,16 +1,24 @@
 module.exports = {
-    plugins: [
-        [
-            "import",
-            {
-                libraryName: "vant",
-                libraryDirectory: "es",
-                // 指定样式路径
-                // style: name => `${name}/style/less`
-                style: true
-            },
-            "vant"
-        ],
-        ["@babel/plugin-syntax-dynamic-import"]
-    ]
+  presets: [["@babel/preset-env", { modules: false }]],
+  plugins: [
+    [
+      "import",
+      {
+        libraryName: "vant",
+        libraryDirectory: "es",
+        // 指定样式路径
+        // style: name => `${name}/style/less`
+        style: true,
+      },
+      "vant",
+    ],
+    ["@babel/plugin-syntax-dynamic-import"],
+    [
+      "component",
+      {
+        libraryName: "element-ui",
+        styleLibraryName: "theme-chalk",
+      },
+    ],
+  ],
 };

+ 90 - 2
fhKeeper/formulahousekeeper/timesheet-workshop-h5/package-lock.json

@@ -2507,6 +2507,14 @@
       "integrity": "sha1-3TeelPDbgxCwgpH51kwyCXZmF/0=",
       "dev": true
     },
+    "async-validator": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-1.8.5.tgz",
+      "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
+      "requires": {
+        "babel-runtime": "6.x"
+      }
+    },
     "asynckit": {
       "version": "0.4.0",
       "resolved": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz",
@@ -2653,6 +2661,11 @@
         "resolve": "^1.12.0"
       }
     },
+    "babel-helper-vue-jsx-merge-props": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
+      "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg=="
+    },
     "babel-loader": {
       "version": "8.2.2",
       "resolved": "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.2.2.tgz?cache=0&sync_timestamp=1606424647115&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-loader%2Fdownload%2Fbabel-loader-8.2.2.tgz",
@@ -2693,6 +2706,38 @@
         }
       }
     },
+    "babel-plugin-component": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/babel-plugin-component/-/babel-plugin-component-1.1.1.tgz",
+      "integrity": "sha512-WUw887kJf2GH80Ng/ZMctKZ511iamHNqPhd9uKo14yzisvV7Wt1EckIrb8oq/uCz3B3PpAW7Xfl7AkTLDYT6ag==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "7.0.0-beta.35"
+      },
+      "dependencies": {
+        "@babel/helper-module-imports": {
+          "version": "7.0.0-beta.35",
+          "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.35.tgz",
+          "integrity": "sha512-vaC1KyIZSuyWb3Lj277fX0pxivyHwuDU4xZsofqgYAbkDxNieMg2vuhzP5AgMweMY7fCQUMTi+BgPqTLjkxXFg==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "7.0.0-beta.35",
+            "lodash": "^4.2.0"
+          }
+        },
+        "@babel/types": {
+          "version": "7.0.0-beta.35",
+          "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.0.0-beta.35.tgz",
+          "integrity": "sha512-y9XT11CozHDgjWcTdxmhSj13rJVXpa5ZXwjjOiTedjaM0ba5ItqdS02t31EhPl7HtOWxsZkYCCUNrSfrOisA6w==",
+          "dev": true,
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.2.0",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
     "babel-plugin-dynamic-import-node": {
       "version": "2.3.3",
       "resolved": "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.3.tgz",
@@ -2762,6 +2807,22 @@
         "@babel/helper-define-polyfill-provider": "^0.2.0"
       }
     },
+    "babel-runtime": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz",
+      "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
+      "requires": {
+        "core-js": "^2.4.0",
+        "regenerator-runtime": "^0.11.0"
+      },
+      "dependencies": {
+        "regenerator-runtime": {
+          "version": "0.11.1",
+          "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+          "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+        }
+      }
+    },
     "balanced-match": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz",
@@ -4477,8 +4538,7 @@
     "deepmerge": {
       "version": "1.5.2",
       "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz?cache=0&sync_timestamp=1612354180346&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-1.5.2.tgz",
-      "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M=",
-      "dev": true
+      "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M="
     },
     "default-gateway": {
       "version": "5.0.5",
@@ -4927,6 +4987,19 @@
       "integrity": "sha1-hX4xDKAPC3XaTh22/w4HPMSpHd8=",
       "dev": true
     },
+    "element-ui": {
+      "version": "2.15.13",
+      "resolved": "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.13.tgz",
+      "integrity": "sha512-LJoatEYX6WV74FqXBss8Xfho9fh9rjDSzrDrTyREdGb1h1R3uRvmLh5jqp2JU137aj4/BgqA3K06RQpQBX33Bg==",
+      "requires": {
+        "async-validator": "~1.8.1",
+        "babel-helper-vue-jsx-merge-props": "^2.0.0",
+        "deepmerge": "^1.2.0",
+        "normalize-wheel": "^1.0.1",
+        "resize-observer-polyfill": "^1.5.0",
+        "throttle-debounce": "^1.0.1"
+      }
+    },
     "elliptic": {
       "version": "6.5.4",
       "resolved": "https://registry.nlark.com/elliptic/download/elliptic-6.5.4.tgz",
@@ -8247,6 +8320,11 @@
       "integrity": "sha1-suHE3E98bVd0PfczpPWXjRhlBVk=",
       "dev": true
     },
+    "normalize-wheel": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
+      "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA=="
+    },
     "npm-run-path": {
       "version": "2.0.2",
       "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz",
@@ -10218,6 +10296,11 @@
       "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=",
       "dev": true
     },
+    "resize-observer-polyfill": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
+      "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
+    },
     "resolve": {
       "version": "1.20.0",
       "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.20.0.tgz",
@@ -11508,6 +11591,11 @@
         "neo-async": "^2.6.0"
       }
     },
+    "throttle-debounce": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
+      "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg=="
+    },
     "through": {
       "version": "2.3.8",
       "resolved": "https://registry.npm.taobao.org/through/download/through-2.3.8.tgz",

+ 2 - 0
fhKeeper/formulahousekeeper/timesheet-workshop-h5/package.json

@@ -17,6 +17,7 @@
     "css-loader": "^3.6.0",
     "dingtalk-jsapi": "^2.13.42",
     "echarts": "^4.9.0",
+    "element-ui": "^2.15.13",
     "font-awesome": "^4.7.0",
     "jquery": "^3.6.1",
     "pdfh5": "^1.4.2",
@@ -33,6 +34,7 @@
     "autoprefixer": "^9.8.6",
     "axios": "^0.26.1",
     "babel-eslint": "^10.1.0",
+    "babel-plugin-component": "^1.1.1",
     "eslint": "^5.16.0",
     "eslint-plugin-vue": "^5.2.3",
     "less": "^3.13.1",

+ 3 - 0
fhKeeper/formulahousekeeper/timesheet-workshop-h5/public/index.html

@@ -70,6 +70,9 @@
         .popupSearch .van-search__content {
             background-color: #FFFFFF !important;
         }
+        .chooseSomeoneo_group .van-radio__label, .chooseSomeoneo_group .van-checkbox__label {
+          flex: 1 !important;
+        }
     </style>
 </head>
 

+ 31 - 1
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/App.vue

@@ -1,5 +1,5 @@
 <template>
-    <div>
+    <div class="h100">
         <keep-alive>
             <router-view v-if="$route.meta.keepAlive"></router-view>
         </keep-alive>
@@ -42,6 +42,36 @@ export default {
 </script>
 
 <style>
+  * {
+    font-family: '微软雅黑';
+  }
+  .h100 {
+    height: 100vh;
+    box-sizing: border-box;
+  }
+  /* flex */
+  .flexCoum {
+    display: flex;
+    flex-wrap: wrap;
+    flex-direction: column;
+    height: 100%;
+  }
+  /* 超出隐藏 */
+  .textBeyondHiding {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+
+  .flexCoum-box {
+    flex: 1;
+    overflow: auto;
+  }
+  /* 去除滚动条 */
+  .contentRoll::-webkit-scrollbar { width: 0 !important }
+  .contentRoll { -ms-overflow-style: none; }
+  .contentRoll { overflow: -moz-scrollbars-none; }
+
   .popupDiv {
     background: #F4F4F4;
     position: relative;

+ 75 - 0
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/assets/collapse.js

@@ -0,0 +1,75 @@
+
+const elTransition =
+  "0.3s height ease-in-out, 0.3s padding-top ease-in-out, 0.3s padding-bottom ease-in-out";
+const Transition = {
+  "before-enter"(el) {
+    el.style.transition = elTransition;
+    if (!el.dataset) el.dataset = {};
+ 
+    el.dataset.oldPaddingTop = el.style.paddingTop;
+    el.dataset.oldPaddingBottom = el.style.paddingBottom;
+ 
+    el.style.height = 0;
+    el.style.paddingTop = 0;
+    el.style.paddingBottom = 0;
+  },
+ 
+  enter(el) {
+    el.dataset.oldOverflow = el.style.overflow;
+    if (el.scrollHeight !== 0) {
+      el.style.height = el.scrollHeight + "px";
+      el.style.paddingTop = el.dataset.oldPaddingTop;
+      el.style.paddingBottom = el.dataset.oldPaddingBottom;
+    } else {
+      el.style.height = "";
+      el.style.paddingTop = el.dataset.oldPaddingTop;
+      el.style.paddingBottom = el.dataset.oldPaddingBottom;
+    }
+ 
+    el.style.overflow = "hidden";
+  },
+ 
+  "after-enter"(el) {
+    el.style.transition = "";
+    el.style.height = "";
+    el.style.overflow = el.dataset.oldOverflow;
+  },
+ 
+  "before-leave"(el) {
+    if (!el.dataset) el.dataset = {};
+    el.dataset.oldPaddingTop = el.style.paddingTop;
+    el.dataset.oldPaddingBottom = el.style.paddingBottom;
+    el.dataset.oldOverflow = el.style.overflow;
+ 
+    el.style.height = el.scrollHeight + "px";
+    el.style.overflow = "hidden";
+  },
+ 
+  leave(el) {
+    if (el.scrollHeight !== 0) {
+      el.style.transition = elTransition;
+      el.style.height = 0;
+      el.style.paddingTop = 0;
+      el.style.paddingBottom = 0;
+    }
+  },
+ 
+  "after-leave"(el) {
+    el.style.transition = "";
+    el.style.height = "";
+    el.style.overflow = el.dataset.oldOverflow;
+    el.style.paddingTop = el.dataset.oldPaddingTop;
+    el.style.paddingBottom = el.dataset.oldPaddingBottom;
+  }
+};
+ 
+export default {
+  name: "collapseTransition",
+  functional: true,
+  render(h, { children }) {
+    const data = {
+      on: Transition
+    };
+    return h("transition", data, children);
+  }
+};

+ 6 - 0
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/components/Element.js

@@ -0,0 +1,6 @@
+import Vue from 'vue'
+import { Tree, Radio, Checkbox } from 'element-ui'
+import 'element-ui/lib/theme-chalk/index.css';
+Vue.use(Tree)
+Vue.use(Radio)
+Vue.use(Checkbox)

+ 225 - 0
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/components/chooseSomeone.vue

@@ -0,0 +1,225 @@
+<template>
+  <div class="chooseSomeone">
+    <div class="chooseSomeone_selsect">
+      <van-search v-model="selectValue" shape="round" background="#F4F4F4" placeholder="请输入姓名"
+        @search="onSearch"></van-search>
+    </div>
+    <div class="chooseSomeone_Con contentRoll">
+      <!-- 单选 -->
+      <van-radio-group v-model="radioVal" class="chooseSomeone_radio_group" v-if="groupView == 1">
+        <van-radio :name="item.id" v-for="item, index in personnelList" :key="index">
+          <div class="chooseSomeone_radio_group_item">
+            <div>{{ item.name }}</div>
+            <div class="textBeyondHiding">{{ item.workStation }}</div>
+          </div>
+        </van-radio>
+      </van-radio-group>
+
+      <!-- 复选 -->
+      <van-checkbox-group v-model="groupVal" class="chooseSomeoneo_group" v-if="groupView == 2">
+        <van-checkbox :name="item.id" v-for="item, index in personnelList" :key="index">
+          <div class="chooseSomeone_group_item">
+            <div>{{ item.name }}</div>
+            <div class="textBeyondHiding">{{ item.workStation }}</div>
+          </div>
+        </van-checkbox>
+      </van-checkbox-group>
+
+      <!-- tree -->
+      <div class="treeBox" v-if="groupView == 3">
+        <div class="treeBox_tree_text"><van-icon name="arrow-left" />返回</div>
+        <div class="treeBox_tree">
+          <el-tree v-model="treeVal" show-checkbox node-key="id" :data="personnelTree" :props="defaultProps"></el-tree>
+        </div>
+      </div>
+    </div>
+    <div class="chooseSomeone_btn">
+      <van-button round size="small">从其他工位选择员工</van-button>
+      <van-button round type="info" size="small">确定</van-button>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    groupView: {
+      type: Number,
+      default: () => 3 // 1单选 2复选 3tree
+    }
+  },
+  components: {},
+  data() {
+    return {
+      selectValue: '',
+      radioVal: '',
+      groupVal: [],
+      treeVal: [],
+      // 人员数组
+      personnelList: [
+        { id: 1, name: '张山', workNumber: '123', workStation: '工位1' },
+        { id: 2, name: '李四', workNumber: '123', workStation: '工位2' },
+        { id: 3, name: '王五', workNumber: '123', workStation: '工位3' },
+        { id: 4, name: '赵六', workNumber: '123', workStation: '工位4' },
+        { id: 5, name: '张山', workNumber: '123', workStation: '工位5' },
+        { id: 6, name: '李四', workNumber: '123', workStation: '工位6' },
+        { id: 7, name: '王五', workNumber: '123', workStation: '工位7' },
+        { id: 8, name: '赵六', workNumber: '123', workStation: '工位8' },
+        { id: 9, name: '张山', workNumber: '123', workStation: '工位9' },
+        { id: 10, name: '李四', workNumber: '123', workStation: '工位10' },
+        { id: 11, name: '王五', workNumber: '123', workStation: '工位11' },
+        { id: 12, name: '赵六', workNumber: '123', workStation: '工位12' },
+        { id: 13, name: '张山', workNumber: '123', workStation: '工位13' },
+        { id: 14, name: '李四', workNumber: '123', workStation: '工位14' },
+      ],
+      personnelTree: [{
+        label: '一级 1',
+        children: [{
+          label: '二级 1-1',
+          children: [{
+            label: '三级 1-1-1'
+          }]
+        }]
+      }, {
+        label: '一级 2',
+        children: [{
+          label: '二级 2-1',
+          children: [{
+            label: '三级 2-1-1'
+          }]
+        }, {
+          label: '二级 2-2',
+          children: [{
+            label: '三级 2-2-1'
+          }]
+        }]
+      }, {
+        label: '一级 3',
+        children: [{
+          label: '二级 3-1',
+          children: [{
+            label: '三级 3-1-1'
+          }]
+        }, {
+          label: '二级 3-2',
+          children: [{
+            label: '三级 3-2-1'
+          }]
+        }]
+      }],
+      defaultProps: {
+        children: 'children',
+        label: 'label'
+      }
+    };
+  },
+  computed: {},
+  watch: {},
+  created() { },
+  mounted() { },
+  methods: {
+    onSearch() {
+      console.log('搜索', this.selectValue)
+    }
+  },
+};
+</script>
+
+<style scoped lang="less">
+* {
+  box-sizing: border-box;
+}
+
+.chooseSomeone {
+  display: flex;
+  flex-wrap: wrap;
+  flex-direction: column;
+  width: 100%;
+  height: 100%;
+  padding: 10px 15px 0px 15px;
+
+  .chooseSomeone_selsect {
+    .van-search__content {
+      background-color: #fff;
+    }
+  }
+
+  .treeBox {
+    width: 100%;
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+
+    .treeBox_tree {
+      flex: 1;
+      overflow-y: auto;
+      padding: 10px;
+    }
+    .treeBox_tree_text{
+      font-size: 14px;
+      color: #999;
+      display: flex;
+      align-items: center;
+      padding: 8px;
+      .van-icon {
+        margin-right: 6px;
+      }
+    }
+
+    // 调整组件的默认样式
+    .el-tree-node__content {
+      height: 30px;
+    }
+  }
+  .chooseSomeone_Con {
+    flex: 1;
+    background-color: #fff;
+    border-radius: 10px;
+    overflow-y: auto;
+    padding: 10px;
+
+    .chooseSomeoneo_group {
+
+      .van-radio,
+      .van-checkbox {
+        width: 100%;
+        padding: 10px;
+        font-size: 16px;
+        color: #333;
+        border-bottom: 1px solid #F4F4F4;
+
+        .van-radio__label {
+          flex: 1 !important;
+        }
+
+        .van-checkbox__label {
+          flex: 1 !important;
+        }
+      }
+
+      .chooseSomeone_group_item {
+        display: flex;
+        justify-content: space-between;
+
+        div:last-child {
+          font-size: 12px;
+          color: #999;
+          width: 50%;
+          text-align: right;
+        }
+      }
+    }
+  }
+
+  .chooseSomeone_btn {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    height: 50px;
+
+    .van-button {
+      width: 48%;
+    }
+  }
+}
+</style>

+ 3 - 2
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/main.js

@@ -12,20 +12,21 @@ import axios from 'axios'; /* 引入axios进行地址访问*/
 Vue.prototype.$http = axios;
 
 import "@/components/Vant";
+import './components/Element.js'
 
 import { Form , Toast , Grid, GridItem , DatetimePicker , Popover,
 Picker , Dialog , NumberKeyboard , Sticky , Skeleton ,
 Panel , Divider , List , pullRefresh , SwipeCell, Checkbox, 
 Search, Slider,Stepper,Tag, Calendar, Row, Col, RadioGroup, Radio, 
 Loading ,DropdownMenu, DropdownItem, Button, ActionSheet, PullRefresh,Tabbar,
-TabbarItem,Uploader,Collapse, CollapseItem,Empty} from 'vant';
+TabbarItem,Uploader,Collapse, CollapseItem,Empty, CheckboxGroup, } from 'vant';
 
 Vue.use(Form).use(Toast).use(Grid).use(GridItem).use(DatetimePicker)
 .use(Picker).use(Dialog).use(NumberKeyboard).use(Sticky).use(Skeleton)
 .use(Panel).use(Divider).use(List).use(pullRefresh).use(SwipeCell)
 .use(Checkbox).use(Search).use(Slider).use(Stepper).use(Tag).use(Calendar).use(RadioGroup).use(Radio)
 .use(Row).use(Col).use(Loading).use(DropdownMenu).use(DropdownItem).use(Button).use(ActionSheet)
-.use(PullRefresh).use(Tabbar).use(TabbarItem).use(Popover).use(Uploader).use(Collapse).use(CollapseItem).use(Empty);
+.use(PullRefresh).use(Tabbar).use(TabbarItem).use(Popover).use(Uploader).use(Collapse).use(CollapseItem).use(Empty).use(CheckboxGroup);
 
 // rem
 import "amfe-flexible";

+ 9 - 0
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/router/index.js

@@ -40,6 +40,15 @@ const router = new Router({
             keepAlive: false
         }
     },
+    {
+        path: "/distribution",
+        name: "distribution",
+        component: () => import("@/views/planView/todayPlan/distribution"),
+        meta: {
+            title: "计划详情",
+            keepAlive: false
+        }
+    },
     {
         path: "/tomorrowPlan",
         component: () => import("@/views/planView/tomorrowPlan/tomorrowPlan"),

+ 195 - 10
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/component/planComponent.vue

@@ -1,26 +1,211 @@
 <template>
-  <div>
-    公共组件
+  <div class="planComponent">
+    <div class="planComponent_con contentRoll">
+      <div class="planComponent_box" v-for="item, index in productList" :key="index">
+        <div class="planComponent_Item">
+          <div class="planComponent_ItemTop">
+            <div>产品1</div>
+            <div>001</div>
+            <div>
+              <p>20220616-2020618</p><span @click="workShowHide(index)">{{ item.flg ? paiArr[0] : paiArr[1] }}</span>
+            </div>
+          </div>
+          <collapse>
+            <div v-if="item.flg">
+              <div :class="`planComponent_ItemBom planComponent_show`">
+                <div class="PlanItem">
+                  <div>项目代码:</div><span>年后年后年后年后年后年后年后年后年后年后年后年后年后年后年后年后年后</span>
+                </div>
+                <div class="PlanItem">
+                  <div>计划总工价:</div><span class="textBeyondHiding">321</span>
+                </div>
+                <div class="PlanItem">
+                  <div>数量:</div><span class="textBeyondHiding">123</span>
+                </div>
+                <div class="PlanItem">
+                  <div>单位:</div><span class="textBeyondHiding">321</span>
+                </div>
+                <div class="PlanItem">
+                  <div>订单数量:</div><span class="textBeyondHiding">123</span>
+                </div>
+                <div class="PlanItem">
+                  <div>编组:</div><span class="textBeyondHiding">321</span>
+                </div>
+                <div class="PlanItem">
+                  <div>每列数量:</div><span class="textBeyondHiding">123</span>
+                </div>
+                <div class="PlanItem">
+                  <div>每辆数量:</div><span class="textBeyondHiding">321</span>
+                </div>
+                <div class="PlanItemBtn">
+                  <van-button type="info" size="small" @click="toDistribution(item)">派工单</van-button>
+                </div>
+              </div>
+            </div>
+          </collapse>
+        </div>
+      </div>
+    </div>
   </div>
 </template>
 
 <script>
+import collapse from '../../../assets/collapse.js'
 export default {
-  props: {},
-  components: {},
+  props: {
+    titleText: {
+      type: String,
+      default: '今日计划'
+    }
+  },
+  components: {
+    collapse
+  },
   data() {
     return {
-
+      activeNames: ['1'],
+      productList: [{ flg: false }, { flg: false }, { flg: false }, { flg: false }, { flg: false }, { flg: false }, { flg: false }, { flg: false }, { flg: false }, { flg: false }, { flg: false }],
+      paiArr: ['收起', '派工']
     };
   },
   computed: {},
   watch: {},
-  created() {},
-  mounted() {},
-  methods: {},
+  created() { },
+  mounted() { 
+    console.log(this.titleText)
+    if(this.titleText == '今日计划') {
+      this.paiArr = ['收起', '派工']
+    } else {
+      this.paiArr = ['收起', '展开']
+    }
+   },
+  methods: {
+    workShowHide(index) {
+      this.productList[index].flg = !this.productList[index].flg;
+    },
+    toDistribution(item) {
+      this.$router.push({
+        path: '/distribution',
+        query: {
+          // id: item.id
+          titleText: this.titleText
+        }
+      })
+    }
+  },
 };
 </script>
 
-<style scoped>
+<style scoped lang="less">
+* {
+  box-sizing: border-box;
+}
+
+.planComponent {
+  width: 100%;
+  height: 100%;
+  padding: 15px;
+  display: flex;
+  flex-direction: column;
+  flex-wrap: wrap;
+
+  .planComponent_header {}
+
+  .planComponent_con {
+    flex: 1;
+    overflow: auto;
+  }
+
+  .planComponent_box {
+    width: 100%;
+    background-color: #fff;
+    border-radius: 4px;
+    padding: 10px;
+    margin-bottom: 15px;
+    overflow: hidden;
+    position: relative;
+
+    .planComponent_Item {
+      .planComponent_ItemTop {
+        div {
+          width: 100%;
+          display: flex;
+          align-items: center;
+          justify-content: space-between;
+          font-size: 16px;
+          color: #333;
+          margin-bottom: 8px;
+          overflow: hidden;
+          text-overflow: ellipsis;
+          white-space: nowrap;
+
+          span {
+            color: #1989fa;
+          }
+
+          p {
+            max-width: 280px;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+          }
+
+          &:last-child {
+            margin-bottom: 0;
+          }
+        }
+      }
+
+      .planComponent_hide {
+        overflow: hidden;
+      }
+
+      .planComponent_show {
+        height: auto !important;
+        margin-top: 10px;
+        padding: 0px 6px 6px 6px;
+        border-top: 1px solid #E6E6E6;
+      }
+
+      .planComponent_ItemBom {
+        height: 0;
+        font-size: 16px;
+        display: flex;
+        flex-wrap: wrap;
+
+        .PlanItem {
+          width: 50%;
+          display: flex;
+          padding-top: 8px;
+
+          &:first-child {
+            width: 100%;
+
+            span {
+              width: 230px;
+              word-break: break-all;
+            }
+          }
+
+          div {
+            width: 100px;
+            text-align: right;
+            color: #666;
+          }
+
+          span {
+            display: inline-block;
+            color: #333;
+          }
+        }
 
-</style>
+        .PlanItemBtn {
+          width: 100%;
+          display: flex;
+          justify-content: flex-end;
+          margin: 12px 0 0 0;
+        }
+      }
+    }
+  }
+}</style>

+ 180 - 0
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/todayPlan/distribution.vue

@@ -0,0 +1,180 @@
+<template>
+  <div class="distribution">
+    <van-nav-bar :title="titleText" left-text="返回" :right-text="!todayAndTomorrow ? '下发计划' : ''" @click-left="back" @click-right="placeAnOrder" fixed left-arrow/>
+    <div class="distribution_header">
+      <div>东湾2号线电池箱</div>
+      <div>00001</div>
+      <div>20230620</div>
+    </div>
+    <div class="distribution_con contentRoll">
+      <div class="distribution_box" v-for="item,index in distributionList" :key="index">
+        <div class="distribution_ItemBom">
+          <div class="PlanItem">
+            <span>东湾2号线电池箱东湾2号线电池箱</span>
+          </div>
+          <div class="PlanItem" v-show="todayAndTomorrow">
+            <div>组员:</div>
+            <span class="textBeyondHiding" v-if="item.personnel" @click="distributionProp(item,index)">{{ item.personnel }} <van-icon name="edit" color="#1989fa" /> </span>
+            <span style="color: #1989fa;" v-if="!item.personnel" @click="distributionProp(item,index)">分配</span>
+          </div>
+          <div class="PlanItem">
+            <div>单件工价:</div><span class="textBeyondHiding">123</span>
+          </div>
+          <div class="PlanItem">
+            <div>总工价:</div><span class="textBeyondHiding">123</span>
+          </div>
+          <div class="PlanItem">
+            <div>单件工时:</div><span class="textBeyondHiding">123</span>
+          </div>
+          <div class="PlanItem">
+            <div>总工时:</div><span class="textBeyondHiding">123</span>
+          </div>
+          <div class="PlanItem" v-if="todayAndTomorrow">
+            <div>进度:</div><span class="textBeyondHiding">123</span>
+          </div>
+          <div class="PlanItem">
+            <div>质检类型:</div><span class="textBeyondHiding">123</span>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- 弹出层选人 -->
+    <van-popup v-model="popupShow" round position="bottom" :style="{ height: '80%',background: '#F4F4F4' }" >
+      <ChooseSomeone></ChooseSomeone>
+    </van-popup>
+  </div>
+</template>
+
+<script>
+import ChooseSomeone from '../../../components/chooseSomeone.vue'
+export default {
+  props: {},
+  components: {
+    ChooseSomeone
+  },
+  data() {
+    return {
+      distributionList: [
+        {personnel: ''},
+        {personnel: '张三'},
+        {personnel: ''},
+        {personnel: '李四'},
+        {personnel: '王五'},
+        {personnel: ''},
+        {personnel: ''},
+        {personnel: ''},
+        {personnel: ''},
+        {personnel: ''},
+      ],
+      distributionIndex: null,
+      popupShow: false,
+      titleText: '今日计划', // 默认文字
+      todayAndTomorrow: true, // true 今日计划,false 明日计划
+    };
+  },
+  computed: {},
+  watch: {},
+  created() {},
+  mounted() {
+    this.titleText = this.$route.query.titleText
+    if(this.titleText == '今日计划') {
+      this.todayAndTomorrow = true
+    } else {
+      this.todayAndTomorrow = false
+    }
+  },
+  methods: {
+    back() {
+      this.$router.go(-1);
+    },
+    // 下单计划
+    placeAnOrder() {
+      console.log('点击了下单计划')
+    },
+    distributionProp(item, index) {
+      this.distributionIndex = index
+      this.popupShow = true
+    }
+  },
+};
+</script>
+
+<style scoped lang="less">
+  * {
+    box-sizing: border-box;
+  }
+  .distribution {
+    width: 100%;
+    height: 100%;
+    padding: 54px 15px 15px 15px;
+    display: flex;
+    flex-direction: column;
+    flex-wrap: wrap;
+    background-color: #F4F4F4;
+    color: #333;
+
+    .distribution_header {
+      font-size: 16px;
+      div {
+        margin-top: 6px;
+      }
+    }
+
+    .distribution_con {
+      flex: 1;
+      overflow: auto;
+      margin-top: 14px;
+
+      .distribution_box {
+        width: 100%;
+        background-color: #fff;
+        border-radius: 4px;
+        padding: 10px;
+        margin-bottom: 15px;
+        position: relative;
+        overflow: hidden;
+
+        .distribution_ItemBom {
+          font-size: 16px;
+          display: flex;
+          flex-wrap: wrap;
+          padding: 0px 6px 6px 6px;
+
+          .PlanItem {
+            width: 50%;
+            display: flex;
+            padding-top: 12px;
+
+            &:first-child {
+              width: 100%;
+              padding-top: 10px;
+              span {
+                font-size: 18px;
+                color: #333;
+              }
+            }
+
+            &:nth-child(2) {
+              width: 100%;
+              span {
+                width: 230px;
+                word-break: break-all;
+              }
+            }
+
+            div {
+              width: 80px;
+              text-align: right;
+              color: #666;
+            }
+
+            span {
+              display: inline-block;
+              color: #333;
+            }
+          }
+        }
+      }
+    }
+  }
+</style>

+ 22 - 5
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/todayPlan/todayPlan.vue

@@ -1,13 +1,19 @@
 <template>
-  <div>
-    今日计划
+  <div class="flexCoum">
+    <van-nav-bar title="今日计划" left-text="返回" @click-left="back" fixed left-arrow/>
+    <div class="todayPlan flexCoum-box">
+      <PlanComponent :titleText="'今日计划'"></PlanComponent>
+    </div>
   </div>
 </template>
 
 <script>
+import PlanComponent from '../component/planComponent.vue'
 export default {
   props: {},
-  components: {},
+  components: {
+    PlanComponent
+  },
   data() {
     return {
 
@@ -17,10 +23,21 @@ export default {
   watch: {},
   created() {},
   mounted() {},
-  methods: {},
+  methods: {
+    back() {
+      this.$router.go(-1);
+    },
+  },
 };
 </script>
 
 <style scoped>
-
+  * {
+    box-sizing: border-box;
+  }
+  .todayPlan {
+    height: 100%;
+    background-color: #F4F4F4;
+    padding-top: 46px;
+  }
 </style>

+ 22 - 5
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/tomorrowPlan/tomorrowPlan.vue

@@ -1,13 +1,19 @@
 <template>
-  <div>
-    明日计划
+  <div class="flexCoum">
+    <van-nav-bar title="明日计划" left-text="返回" @click-left="back" fixed left-arrow/>
+    <div class="todayPlan flexCoum-box">
+      <PlanComponent :titleText="'明日计划'"></PlanComponent>
+    </div>
   </div>
 </template>
 
 <script>
+import PlanComponent from '../component/planComponent.vue'
 export default {
   props: {},
-  components: {},
+  components: {
+    PlanComponent
+  },
   data() {
     return {
 
@@ -17,10 +23,21 @@ export default {
   watch: {},
   created() {},
   mounted() {},
-  methods: {},
+  methods: {
+    back() {
+      this.$router.go(-1);
+    },
+  },
 };
 </script>
 
 <style scoped>
-
+  * {
+    box-sizing: border-box;
+  }
+  .todayPlan {
+    height: 100%;
+    background-color: #F4F4F4;
+    padding-top: 46px;
+  }
 </style>

+ 39 - 1
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/plan/planComponent.vue

@@ -68,6 +68,7 @@
         :data="tableData"
         style="width: 100%; flex: 1"
         v-loading="tableDataLoading"
+        @selection-change="handleSelectionChange"
       >
         <el-table-column type="selection" width="55"> </el-table-column>
         <el-table-column
@@ -104,6 +105,7 @@
       </el-table>
     </div>
     <div class="layout-container-floor">
+      <el-button type="primary" size="mini" @click="allocationPlan">下发计划</el-button>
       <el-pagination
         @size-change="handleSizeChange"
         @current-change="handleCurrentChange"
@@ -328,6 +330,7 @@ export default {
       total: 0,
       hasChooseDept: "",
       productList: [],
+      multipleSelection: [],
       // 表单规则验证
       todayPlanFormrules: {
         productSchedulingNum: [
@@ -737,7 +740,42 @@ export default {
           });
           }
       );
-    }
+    },
+    handleSelectionChange(val) {
+        this.multipleSelection = val.map(item => item.id);
+        console.log(this.multipleSelection)
+    },
+    allocationPlan(){
+      if(this.multipleSelection.length==0){
+          return
+      }
+      this.http.post(
+        "/plan/allocationPlan",
+        {
+          ids:this.multipleSelection.join(","),
+          planType:this.planType
+        },
+        (res) => {
+          if (res.code == "ok") {
+            this.$message({
+              message:'下发成功',
+              type: "success",
+            });
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error",
+            });
+          }
+        },
+        (error) => {
+          this.$message({
+            message: error,
+            type: "error",
+          });
+        }
+      );
+    },
   },
 };
 </script>

Разница между файлами не показана из-за своего большого размера
+ 2387 - 2474
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/product/list.vue


+ 5 - 86
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/team/index.vue

@@ -101,55 +101,22 @@
                     <el-form-item style="float:right;" v-if="permissions.structureExport">
                         <el-link type="primary" :underline="false" @click="showExportDialog">{{ $t('exportpersonnel') }}</el-link>
                     </el-form-item>
-                    <el-form-item style="float:right;" v-if="user.timeType.syncDingding == 0 && permissions.structureAdd && user.userNameNeedTranslate != '1' && user.dingdingUserid == null">
-                        <el-link type="primary" :underline="false" @click="openInsertDialog(null)">{{ $t('addpersonnel') }}</el-link>
-                    </el-form-item>
-                    <!--导入薪资-->
+           
                     <el-form-item style="float:right;" v-if="permissions.structurePersonnel">
                         <el-link type="primary" :underline="false" @click="importUserSalary(null)">{{ $t('importSalary') }}</el-link>
                     </el-form-item>
-                    
-                    <el-form-item style="float:right;" v-if="user.timeType.syncDingding == 0 && permissions.structureImport && user.userNameNeedTranslate != '1' && user.dingdingUserid == null">
-                        <el-link type="primary" :underline="false" @click="importUserC">{{ $t('bulkimport') }}</el-link>
-                    </el-form-item>
-                    <el-form-item style="float:right;" v-if="user.corpwxUserid != null && permissions.structureImport && user.companyId==469">
-                        <el-link type="primary" :underline="false" @click="syncMembByCardTime">{{ $t('associateenterprisemicroidentity') }}</el-link>
-                    </el-form-item>
+              
                     <el-form-item style="float:right;" v-if="user.corpwxUserid != null && permissions.structureImport && user.companyId!=469">
-                        <!-- <el-link type="primary" v-if="user.userNameNeedTranslate != '1'" :underline="false" @click="syncWithCorpWxDayload">{{ $t('synchronizetheenterprisemicrodirectory') }}</el-link>
-                        <el-link type="primary" v-if="user.userNameNeedTranslate == '1'" :underline="false" @click="newSyncWithCorpWx">{{ $t('synchronizetheenterprisemicrodirectory') }}</el-link> -->
-                        <el-link type="primary" v-if="user.userNameNeedTranslate != '1'" :underline="false" @click="syncWithCorpWx">{{ $t('synchronizetheenterprisemicrodirectory') }}</el-link>
-                        <el-link type="primary" v-if="user.userNameNeedTranslate == '1'" :underline="false" @click="newSyncWithCorpWxDayload = true">{{ $t('synchronizetheenterprisemicrodirectory') }}</el-link>
+                        <el-link type="primary"  :underline="false" @click="syncWithCorpWx">{{ $t('synchronizetheenterprisemicrodirectory') }}</el-link>
                     </el-form-item>
 
                     <el-form-item style="float:right;" v-if="user.dingdingUserid != null && permissions.structureImport">
                         <el-link type="primary" :underline="false" @click="showCorpDDSyncDialog">{{ $t('synchronizetheaddressbook') }}</el-link>
                     </el-form-item>
-
-                    <el-form-item style="float:right;" v-if="user.timeType.syncAd==1">
-                        <el-link type="primary" :underline="false" @click="syncAd">{{ '同步AD域控通讯录'}}</el-link>
-                    </el-form-item>
-
-                    <!-- <el-form-item style="float:right;" v-if="user.dingdingUserid == null && permissions.structureImport">
-                        <el-link type="primary" :underline="false" href="./upload/人员导入模板.xlsx" download="人员导入模板.xlsx">模板下载</el-link>
-                    </el-form-item> -->
-                    <!-- <el-form-item  v-if="depData != null && depData.id != -1 && depData.id != 0" style="float:right;border: 0.5px solid #20a0ff;height: 27px;margin-top: 6px;">
-                    </el-form-item> -->
-                    <!-- <el-form-item style="float:right;">
-                        <el-link type="danger" v-if="depData != null && depData.id != -1 && depData.id != 0" :underline="false" @click="deleteDep(null)">删除部门</el-link>
-                    </el-form-item>
-                    <el-form-item style="float:right;">
-                        <el-link type="primary" v-if="depData != null && depData.id != -1 && depData.id != 0" :underline="false" @click="createDepartment(-2)">新增子部门</el-link>
-                    </el-form-item> -->
+                    
                     <el-form-item style="float:right;">
                         <span style="color: #666666">{{ $t('jiao-se') }}</span>
                         <el-select v-model="roleId" :placeholder="$t('defaultText.pleaseChoose')" @change="getUser()" style="width: 120px" clearable size="small">
-                            <!-- <el-option
-                            v-for="item in rolesa"
-                            :key="item.value"
-                            :label="item.label"
-                            :value="item.value">
-                            </el-option> -->
                             <el-option v-for="item in acquireRoleList" :key="item.id" :label="item.rolename" :value="item.id"></el-option>
                         </el-select>
                     </el-form-item>
@@ -220,14 +187,6 @@
                 <el-table-column :label="$t('jiao-se')" width="100">
                     <template slot-scope="scope">{{scope.row.roleName}}</template>
                 </el-table-column>
-                <el-table-column prop="monthCost" :label="$t('monthcost')" align="right" v-if="permissions.structurePersonnel" width="140">
-                    <template slot-scope="scope">{{user.timeType.isSecretSalary==0?(scope.row.monthCost==null?0:scope.row.monthCost.toFixed(2)):'*'}} {{ $t('yuan') }}</template>
-                </el-table-column>
-                <el-table-column prop="cost" :label="$t('hourlywage')"  v-if="permissions.structurePersonnel" width="150" align="right">
-                    <template slot-scope="scope">{{user.timeType.isSecretSalary==0?(scope.row.cost==null?0:scope.row.cost):'*'}} {{ $t('yuan') }}
-                        <el-link v-if="user.timeType.isSecretSalary==0" @click.native="showSalaryList(scope.row)"><i class="iconfont firerock-iconrecord"></i></el-link>
-                    </template>
-                </el-table-column>
                 <el-table-column :label="$t('state.states')" width="100">
                     <template slot-scope="scope">
                         <span>{{scope.row.isActive==0 ? $t('ting-yong')+(scope.row.inactiveDate != null? '(' + scope.row.inactiveDate + ')':''): $t('zai-zhi')}}</span>
@@ -359,13 +318,6 @@
                     </el-select>
                     <selectCat :size="'medium'" :widthStr="'360'" v-if="user.userNameNeedTranslate == '1'" :subject="users" :subjectId="depForm.otherManagerIds" :distinction="'4'" @selectCal="selectCal"></selectCat>
                 </el-form-item>
-                <!-- 直属领导 -->
-                <el-form-item :label="$t('leadership')" prop="reportAuditUserid" v-if="user.timeType.needDeptAudit">
-                    <el-select v-model="depForm.reportAuditUserid" v-if="user.userNameNeedTranslate != '1'" filterable  clearable  :placeholder="$t('defaultText.pleaseChoose')" style="width: 100%">
-                        <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id"></el-option>
-                    </el-select>
-                    <selectCat :size="'medium'" :widthStr="'360'" v-if="user.userNameNeedTranslate == '1'" :subject="users" :subjectId="depForm.reportAuditUserid" :distinction="'5'" @selectCal="selectCal"></selectCat>
-                </el-form-item>
             </el-form>
             <span slot="footer" class="dialog-footer">
                 <el-button @click="departmentVisible = false">{{ $t('btn.cancel') }}</el-button>
@@ -389,12 +341,6 @@
                   <el-form-item :label="$t('Worknumber')" prop="jobNumber">
                       <el-input v-model="insertForm.jobNumber" :placeholder="$t('peaseenterthe')" clearable></el-input>
                   </el-form-item>
-                  <el-form-item :label="$t('payway')" prop="salaryType" v-if="permissions.structurePersonnel&&user.timeType.isSecretSalary==0">
-                      <el-radio-group v-model="insertForm.salaryType" @change="onSalaryTypeChange">
-                      <el-radio  :label="0" >{{ $t('fixedmonthlycost') }}</el-radio>
-                      <el-radio  :label="1">{{ $t('hourlywages') }}</el-radio>
-                      </el-radio-group>
-                  </el-form-item>
                   <el-form-item :label="$t('monthcost')" prop="monthCost" v-if="insertForm.salaryType == 0 && permissions.structurePersonnel&&user.timeType.isSecretSalary==0">
                       <el-input v-model="insertForm.monthCost" id="mc" @input="oninput" :placeholder="$t('yuechengben')" clearable @keyup.native="restrictNumber('mc')"></el-input>
                       <span style="color:orange;font-size:12px;">{{ $t('yuegongzuoo') }}{{timeType.monthDays}}{{ $t('time.day') }},{{$t('meitian')}}{{timeType.allday}}{{ $t('xiaoshi') }}</span>
@@ -2339,33 +2285,7 @@ export default {
         this.timeType.allday
       ).toFixed(4);
     },
-    // 获取本公司的工作时间设置
-    getCompanyTimeSetting() {
-      this.http.post(
-        "/time-type/getCompanyTimeSetting",
-        {
-          companyId: this.user.companyId,
-        },
-        (res) => {
-          if (res.code == "ok") {
-            this.timeType = res.data;
-            this.saasSyncContact = res.saasSyncContact
-          } else {
-            this.$message({
-              message: res.msg,
-              type: "error",
-            });
-          }
-        },
-        (error) => {
-          this.listLoading = false;
-          this.$message({
-            message: error,
-            type: "error",
-          });
-        }
-      );
-    },
+    
 
     importUserC() {
       this.importDialog = true;
@@ -3768,7 +3688,6 @@ export default {
     this.ymonth = util.formatDate.format(new Date(), "yyyy-MM");
     this.getDepartment();
     this.getUser();
-    this.getCompanyTimeSetting();
     this.getUsers();
     this.acquireRole();
     this.getProfessional();

+ 70 - 155
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/workReport/daily.vue

@@ -34,14 +34,7 @@
                                 <el-input :placeholder="$t('defaultText.PleaseEnterYourName')" v-if="user.userNameNeedTranslate != 1" size="small" v-model="seluserText" style="width:100%;margin-bottom:10px" clearable>
                                     <el-button slot="append" icon="el-icon-search" @click="seluserforText()"></el-button>
                                 </el-input>
-                                <el-select v-model="selectState" size="small" @change="stateChange" style="width:100%">
-                                <el-option value="-1" :label="$t('state.allState')">{{$t('state.allState')}}</el-option>
-                                <el-option value="-2" :label="$t('state.DidNotFillIn')">{{$t('state.DidNotFillIn')}}</el-option>
-                                <el-option value="1" :label="$t('state.alreadyPassed')">{{$t('state.alreadyPassed')}}</el-option>
-                                <el-option value="0" :label="$t('state.WaitingAudit')">{{$t('state.WaitingAudit')}}</el-option>
-                                <el-option value="2" :label="$t('state.notThrough')">{{$t('state.notThrough')}}</el-option>
-                                <el-option value="3" :label="$t('state.waitingsubmit')">{{$t('state.waitingsubmit')}}</el-option>
-                                </el-select>
+                                
                             </div>
                             <div>
                                 <el-tree :data="data"  @node-click="handleNodeClick" node-key="id" :default-expanded-keys="expandDate" v-loading="dataLoading">
@@ -1924,7 +1917,7 @@
                 deptId:null,
                 targetUid: null,
                 membCount:0,
-                selectState:"-1",
+                
                 user: JSON.parse(sessionStorage.getItem("user")),
                 allUsersList: [],
                 showAddMore:false,
@@ -2138,19 +2131,17 @@
             var startStr = util.formatDate.format(new Date(), 'yyyy-MM') + "-01";
             this.exportParam.dateRange = [startStr,t];
             this.getAllDate(1);
-            this.getReportList();
+            // this.getReportList();
             this.getProjectList();
             this.getFillProjectList();
-            this.getTimeType();
+            // this.getTimeType();
             this.getDepartment();
             this.scrollFunction()
-            this.userssHu();
+            // this.userssHu();
             if(this.user.timeType.reportAuditType == 3){
                 this.getAllUsersList()
             }
-            if (this.user.company.packageProject == 1) {
-                this.getBasecostItemList();
-            }
+            
             if(this.user.timeType.lockWorktime){
                 this.timeRange = this.timeRange.filter(item => {return item <= this.user.timeType.allday})
             }
@@ -2903,23 +2894,23 @@
                     });
                 }
             },
-            userssHu() {
-                this.http.post('/time-type/getCompanyTimeSetting',{ 
-                    companyId: this.user.companyId
-                },
-                res => {
-                    if (res.code == "ok") {
-                        this.yonghuUser = res.data
-                    } 
-                },
-                error => {
-                    this.$message({
-                        message: error,
-                        type: "error"
-                    });
-                    }
-                );
-            },
+            // userssHu() {
+            //     this.http.post('/time-type/getCompanyTimeSetting',{ 
+            //         companyId: this.user.companyId
+            //     },
+            //     res => {
+            //         if (res.code == "ok") {
+            //             this.yonghuUser = res.data
+            //         } 
+            //     },
+            //     error => {
+            //         this.$message({
+            //             message: error,
+            //             type: "error"
+            //         });
+            //         }
+            //     );
+            // },
             iptBlur(i) {
                 if(this.isBatch == 0) {
                     return
@@ -4148,49 +4139,7 @@
                     list[i].membCount = cnt;
                 }
             },
-            stateChange() {
-                // console.log(this.allData,'alldate');
-                this.membCount = 0;
-                if (this.selectState == -1) {
-                    //全部状态
-                    this.data = this.allData;
-                } else {
-                    //未填报
-                    this.seluserText = ''
-                    var newData = JSON.parse(JSON.stringify(this.allData));
-                    this.filterState(this.selectState, newData);
-                    this.data = newData;
-                }
-                this.calculateMembCount(this.data);
-                this.data[0].membCount = this.membCount;//总人数
-            },
-            //按状态过滤部门人员
-            filterState(state, list) {
-                for (var i =0;i<list.length; i++) {
-                    var obj = list[i];
-                    if (obj.isUser == 1) {
-                        var match = false;
-                        if (state == -2) {
-                            if (obj.state == null) {
-                                match = true;
-                            }
-                        } else {
-                            if (obj.state == state) {
-                                match = true;
-                            }
-                        }
-                        if (!match) {
-                            list.splice(i, 1);
-                            i--;
-                        } else {
-                        }
-                    } else {
-                        if (obj.children != null) {
-                            this.filterState(state, obj.children);
-                        }
-                    }
-                }
-            },
+            
             //a按名称过滤部门人员
             
             seluserforText(){
@@ -4506,50 +4455,50 @@
                     }
                 }
             },
-            getTimeType() {
-                this.http.post('/time-type/getCompanyTimeSetting', { companyId: this.user.companyId},
-                    res => {
-                        if (res.code == "ok") {
-                            var t = res.data;
-                            this.reportTimeType = t;
-                            if (this.reportTimeType.type > 0) {
-                                this.showAddMore = true;
-                            }
-                            //转化时间格式
-                            if (t.allday != null) {
-                                this.timeType.push({value:0, label:this.$t('other.allDay') +' - '+t.allday+this.$t('time.hour'), hours:t.allday});
-                            }
-                            if (t.am != null) {
-                                this.timeType.push({value:1, label:this.$t('other.morning') +' - '+t.am+this.$t('time.hour'), hours: t.am});
-                            }
-                            if (t.pm != null) {
-                                this.timeType.push({value:2, label:this.$t('other.afternoon') +' - '+t.pm+this.$t('time.hour'), hours: t.pm});
-                            }
-
-                            let arr = []
-                            for(var i in res.data.excludeTimeList) {
-                                let obj = {
-                                    s: res.data.excludeTimeList[i].startTime,
-                                    e: res.data.excludeTimeList[i].endTime,
-                                }
-                                arr.push(obj)
-                            }
-                            this.vacationTime = arr
-                        } else {
-                            this.$message({
-                                message: res.msg,
-                                type: "error"
-                            });
-                        }
-                    },
-                    error => {
-                        this.listLoading = false;
-                        this.$message({
-                            message: error,
-                            type: "error"
-                        });
-                    });
-            },  
+            // getTimeType() {
+            //     this.http.post('/time-type/getCompanyTimeSetting', { companyId: this.user.companyId},
+            //         res => {
+            //             if (res.code == "ok") {
+            //                 var t = res.data;
+            //                 this.reportTimeType = t;
+            //                 if (this.reportTimeType.type > 0) {
+            //                     this.showAddMore = true;
+            //                 }
+            //                 //转化时间格式
+            //                 if (t.allday != null) {
+            //                     this.timeType.push({value:0, label:this.$t('other.allDay') +' - '+t.allday+this.$t('time.hour'), hours:t.allday});
+            //                 }
+            //                 if (t.am != null) {
+            //                     this.timeType.push({value:1, label:this.$t('other.morning') +' - '+t.am+this.$t('time.hour'), hours: t.am});
+            //                 }
+            //                 if (t.pm != null) {
+            //                     this.timeType.push({value:2, label:this.$t('other.afternoon') +' - '+t.pm+this.$t('time.hour'), hours: t.pm});
+            //                 }
+
+            //                 let arr = []
+            //                 for(var i in res.data.excludeTimeList) {
+            //                     let obj = {
+            //                         s: res.data.excludeTimeList[i].startTime,
+            //                         e: res.data.excludeTimeList[i].endTime,
+            //                     }
+            //                     arr.push(obj)
+            //                 }
+            //                 this.vacationTime = arr
+            //             } else {
+            //                 this.$message({
+            //                     message: res.msg,
+            //                     type: "error"
+            //                 });
+            //             }
+            //         },
+            //         error => {
+            //             this.listLoading = false;
+            //             this.$message({
+            //                 message: error,
+            //                 type: "error"
+            //             });
+            //         });
+            // },  
             // 改变月份     -------
             changeMonthOut() {
                 this.getAllDate();
@@ -4721,31 +4670,7 @@
                     });
                 });
             },
-            // 处理数据
-            // dealWith() {
-            //     var tianxie = 0
-            //     var weixtianxie = 0
-            //     if(this.selectState == -1) {
-
-            //     } else {
-            //         var arr = []
-            //         for (var i in this.reportList) {
-            //             arr.push(this.reportList[i].id)
-            //         }
-            //         this.getDealWith(this.dealList.children, tianxie, weixtianxie, arr)
-            //     }
-            // },
-            // getDealWith(item, tx, wtx, arr) {
-            //     for(var i in item) {
-            //         if(item[i].children) {
-            //             this.getDealWith(item[i].children, tx, wtx, arr)
-            //         } else {
-            //             if(arr.indexOf(item[i].id) != '-1') {
-            //                 tx = +tx + 1
-            //             }
-            //         }
-            //     }
-            // },
+            
             //导出员工工时统计
             exportUserTime() {
                 this.listLoading = true;
@@ -4868,17 +4793,7 @@
                     });
                 });
             },
-            getBasecostItemList() {
-                this.http.post('/project-basecost-setting/getReportBasecostList', {
-                    companyId: this.user.companyId
-                },
-                res => {
-                    if (res.code == "ok") {
-                        this.timeBasecostList = res.data;
-                    }
-                    });
-                
-            },
+            
             getAIReport(createDate) {
                 this.http.post('/report/getAIReport', {},
                 res => {