Browse Source

Merge remote-tracking branch 'origin/test_performance' into test_performance

hcst_sunzhen 5 years ago
parent
commit
b94c4093c2
63 changed files with 2283 additions and 321 deletions
  1. 27 0
      jeecg-boot-module-system/pom.xml
  2. 3 4
      jeecg-boot-module-system/src/main/java/org/jeecg/JeecgApplication.java
  3. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/config/ShiroConfig.java
  4. 7 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/CrawlerController.java
  5. 3 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderDmainController.java
  6. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderMainController.java
  7. 11 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/fegin/LogService.java
  8. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/performanceappraisal/controller/OptimizerRoleInfoController.java
  9. 25 25
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java
  10. 21 21
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementSendController.java
  11. 19 19
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserAgentController.java
  12. 7 1
      jeecg-boot-module-system/src/main/resources/application.yml
  13. 0 3
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  14. 118 0
      log-server/.mvn/wrapper/MavenWrapperDownloader.java
  15. BIN
      log-server/.mvn/wrapper/maven-wrapper.jar
  16. 2 0
      log-server/.mvn/wrapper/maven-wrapper.properties
  17. 376 0
      log-server/pom.xml
  18. 13 0
      log-server/src/main/java/cn/com/ctop/logserver/LogServerApplication.java
  19. 17 0
      log-server/src/main/java/cn/com/ctop/logserver/controller/LogController.java
  20. 160 0
      log-server/src/main/resources/application-dev.yml
  21. 159 0
      log-server/src/main/resources/application-prod.yml
  22. 161 0
      log-server/src/main/resources/application-test.yml
  23. 15 0
      log-server/src/main/resources/application.yml
  24. 14 0
      log-server/src/main/resources/banner.txt
  25. 4 0
      log-server/src/main/resources/log4j.properties
  26. 57 0
      log-server/src/main/resources/logback-dev.xml
  27. 57 0
      log-server/src/main/resources/logback-prod.xml
  28. 57 0
      log-server/src/main/resources/logback-test.xml
  29. 6 0
      log-server/src/main/resources/quartz.properties
  30. 3 3
      mondule-jbpm/src/test/java/cn/com/ctop/jbpm/JbpmApplicationTests.java
  31. 1 1
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java
  32. 2 0
      module-common/src/main/java/cn/com/ctop/common/module/utils/CtopAdConstant.java
  33. 6 0
      module-common/src/main/java/cn/com/ctop/common/module/utils/ResultMapUtils.java
  34. 3 0
      module-common/src/main/java/cn/com/ctop/common/module/utils/StatusCode.java
  35. 0 49
      mondule-jbpm/pom.xml
  36. 0 13
      mondule-jbpm/src/main/java/cn/com/ctop/jbpm/JbpmApplication.java
  37. 0 29
      mondule-jbpm/src/main/java/cn/com/ctop/jbpm/service/ActivitiTable.java
  38. 0 1
      mondule-jbpm/src/main/resources/application.properties
  39. 0 76
      mondule-jbpm/src/main/resources/processes/testbpm.bpmn
  40. 118 0
      moudule-eureca/.mvn/wrapper/MavenWrapperDownloader.java
  41. BIN
      moudule-eureca/.mvn/wrapper/maven-wrapper.jar
  42. 2 0
      moudule-eureca/.mvn/wrapper/maven-wrapper.properties
  43. 62 0
      moudule-eureca/pom.xml
  44. 15 0
      moudule-eureca/src/main/java/cn/com/ctop/eureca/server/ServerApplication.java
  45. 14 0
      moudule-eureca/src/main/resources/application.yml
  46. 13 0
      moudule-eureca/src/test/java/cn/com/ctop/eureca/server/ServerApplicationTests.java
  47. 0 13
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/PerformanceAppraisalApplication.java
  48. 248 0
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/controller/PerformanceConfigController.java
  49. 6 4
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/controller/PerformanceOptimizerController.java
  50. 9 0
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/entity/OptimizerConfig.java
  51. 63 0
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/entity/PerformanceConfig.java
  52. 15 0
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/mapper/PerformanceConfigMapper.java
  53. 5 0
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/mapper/xml/PerformanceConfigMapper.xml
  54. 1 1
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/IOptimizerConfigService.java
  55. 1 1
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/IOptimizerRoleInfoService.java
  56. 16 0
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/IPerformanceConfigService.java
  57. 2 2
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/IPerformanceOptimizerService.java
  58. 6 2
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/impl/OptimizerConfigServiceImpl.java
  59. 3 3
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/impl/OptimizerRoleInfoServiceImpl.java
  60. 34 0
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/impl/PerformanceConfigServiceImpl.java
  61. 195 39
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/impl/PerformanceOptimizerServiceImpl.java
  62. 96 0
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/vo/UserPerformanceDetailVO.java
  63. 1 0
      pom.xml

+ 27 - 0
jeecg-boot-module-system/pom.xml

@@ -11,6 +11,11 @@
         <version>2.0.2</version>
     </parent>
 
+    <properties>
+        <java.version>1.8</java.version>
+        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
+    </properties>
+
     <repositories>
         <repository>
             <id>aliyun</id>
@@ -36,6 +41,16 @@
     </repositories>
 
     <dependencies>
+        <!--<dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>-->
+
         <!-- rabbitmq 依赖jar包-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -121,6 +136,18 @@
         </dependency>
     </dependencies>
 
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.cloud</groupId>
+                <artifactId>spring-cloud-dependencies</artifactId>
+                <version>${spring-cloud.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
     <build>
         <plugins>
             <plugin>

+ 3 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/JeecgApplication.java

@@ -4,7 +4,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.servlet.MultipartConfigFactory;
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
@@ -13,7 +12,6 @@ import org.springframework.core.env.Environment;
 import org.springframework.web.client.RestTemplate;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
-import javax.servlet.MultipartConfigElement;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 
@@ -23,8 +21,9 @@ import java.net.UnknownHostException;
 @ComponentScan(basePackages = {"cn.com.ctop", "org.jeecg"})
 @EnableAutoConfiguration
 @Configuration
-
-
+/*@EnableEurekaClient
+@EnableDiscoveryClient
+@EnableFeignClients*/
 public class JeecgApplication {
     public static void main(String[] args) throws UnknownHostException {
         ConfigurableApplicationContext application = SpringApplication.run(JeecgApplication.class, args);

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/config/ShiroConfig.java

@@ -73,7 +73,7 @@ public class ShiroConfig {
 		filterChainDefinitionMap.put("/ctop/bytedanceAreaInfo/**", "anon");
 		filterChainDefinitionMap.put("/ctop/bytedanceInterestCategory/**", "anon");
 		filterChainDefinitionMap.put("/template/creative/words/get", "anon");
-        filterChainDefinitionMap.put("/appium/crawler/startJob", "anon");
+		filterChainDefinitionMap.put("/appium/crawler/*", "anon");
 
 		//优化师相关
 		//filterChainDefinitionMap.put("/ctop/performanceOptimizer/detail", "anon");

+ 7 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/CrawlerController.java

@@ -3,10 +3,7 @@ package org.jeecg.modules.ctop.controller;
 import org.jeecg.modules.ctop.service.ICrawlerService;
 import org.jeecg.modules.ctop.vo.KuaishouAppiumJobVO;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.Map;
 
@@ -20,4 +17,10 @@ public class CrawlerController {
     public Map<String, Object> runTask(@RequestBody KuaishouAppiumJobVO jobVO) {
         return crawlerService.startJob(jobVO);
     }
+
+    public static void main(String[] args) {
+        int a = 2;
+        int b = 7791;
+        System.out.println(a & b);
+    }
 }

+ 3 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderDmainController.java

@@ -32,7 +32,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 
 /**
- * @Title: Controller
+ * @Title: controller
  * @Description: 订单模拟
  * @Author: ZhiLin
  * @Date: 2019-02-20
@@ -322,7 +322,7 @@ public class JeecgOrderDmainController {
         }
         return result;
     }
-//===========================以下是机票的相关API====================================	
+//===========================以下是机票的相关API====================================
 
     /**
      * 添加
@@ -422,4 +422,4 @@ public class JeecgOrderDmainController {
         return result;
     }
 
-}
+}

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderMainController.java

@@ -33,7 +33,7 @@ import java.util.List;
 import java.util.Map;
 
 /**
- * @Title: Controller
+ * @Title: controller
  * @Description: 订单
  * @Author: jeecg-boot
  * @Date:2019-02-15

+ 11 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/fegin/LogService.java

@@ -0,0 +1,11 @@
+//package org.jeecg.modules.fegin;
+//
+//import org.springframework.cloud.openfeign.FeignClient;
+//import org.springframework.web.bind.annotation.GetMapping;
+//import org.springframework.web.bind.annotation.RequestParam;
+//
+//@FeignClient(name = "log-service")
+//public interface LogService {
+//    @GetMapping("hi")
+//    String home(@RequestParam(value = "name") String name);
+//}

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/performanceappraisal/controller/OptimizerRoleInfoController.java

@@ -175,7 +175,7 @@ public class OptimizerRoleInfoController {
      * 获取优化师经理的统计数据
      */
     @GetMapping("manager/detail")
-    public Map<String, Object> managerDetail(Integer appType) {
-        return optimizerRoleInfoService.getmanagerDetail(appType);
+    public Map<String, Object> managerDetail(@RequestParam(name = "orgCode", defaultValue = "A01") String orgCode, @RequestParam(name = "appType", defaultValue = "2") String appType) {
+        return optimizerRoleInfoService.getManagerDetail(appType, orgCode);
     }
 }

+ 25 - 25
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java

@@ -48,7 +48,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 
 /**
- * @Title: Controller
+ * @Title: controller
  * @Description: 系统通告表
  * @Author: jeecg-boot
  * @Date: 2019-01-02
@@ -99,8 +99,8 @@ public class SysAnnouncementController {
 		result.setResult(pageList);
 		return result;
 	}
-	
-	/**
+
+    /**
 	  *   添加
 	 * @param sysAnnouncement
 	 * @return
@@ -120,8 +120,8 @@ public class SysAnnouncementController {
 		}
 		return result;
 	}
-	
-	/**
+
+    /**
 	  *  编辑
 	 * @param sysAnnouncement
 	 * @return
@@ -139,11 +139,11 @@ public class SysAnnouncementController {
 				result.success("修改成功!");
 			}
 		}
-		
-		return result;
+
+        return result;
 	}
-	
-	/**
+
+    /**
 	  *   通过id删除
 	 * @param id
 	 * @return
@@ -161,11 +161,11 @@ public class SysAnnouncementController {
 				result.success("删除成功!");
 			}
 		}
-		
-		return result;
+
+        return result;
 	}
-	
-	/**
+
+    /**
 	  *  批量删除
 	 * @param ids
 	 * @return
@@ -186,8 +186,8 @@ public class SysAnnouncementController {
 		}
 		return result;
 	}
-	
-	/**
+
+    /**
 	  * 通过id查询
 	 * @param id
 	 * @return
@@ -204,8 +204,8 @@ public class SysAnnouncementController {
 		}
 		return result;
 	}
-	
-	/**
+
+    /**
 	 *	 更新发布操作
 	 * @param id
 	 * @return
@@ -227,11 +227,11 @@ public class SysAnnouncementController {
 				result.success("该系统通知发布成功");
 			}
 		}
-		
-		return result;
+
+        return result;
 	}
-	
-	/**
+
+    /**
 	 *	 更新撤销操作
 	 * @param id
 	 * @return
@@ -251,11 +251,11 @@ public class SysAnnouncementController {
 				result.success("该系统通知撤销成功");
 			}
 		}
-		
-		return result;
+
+        return result;
 	}
-	
-	/**
+
+    /**
 	 * @功能:补充用户数据,并返回系统消息
 	 * @return
 	 */

+ 21 - 21
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementSendController.java

@@ -33,7 +33,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 
  /**
- * @Title: Controller
+  * @Title: controller
  * @Description: 用户通告阅读标记表
  * @Author: jeecg-boot
  * @Date:  2019-02-21
@@ -45,8 +45,8 @@ import lombok.extern.slf4j.Slf4j;
 public class SysAnnouncementSendController {
 	@Autowired
 	private ISysAnnouncementSendService sysAnnouncementSendService;
-	
-	/**
+
+     /**
 	  * 分页列表查询
 	 * @param sysAnnouncementSend
 	 * @param pageNo
@@ -81,8 +81,8 @@ public class SysAnnouncementSendController {
 		result.setResult(pageList);
 		return result;
 	}
-	
-	/**
+
+     /**
 	  *   添加
 	 * @param sysAnnouncementSend
 	 * @return
@@ -99,8 +99,8 @@ public class SysAnnouncementSendController {
 		}
 		return result;
 	}
-	
-	/**
+
+     /**
 	  *  编辑
 	 * @param sysAnnouncementSend
 	 * @return
@@ -118,11 +118,11 @@ public class SysAnnouncementSendController {
 				result.success("修改成功!");
 			}
 		}
-		
-		return result;
+
+        return result;
 	}
-	
-	/**
+
+     /**
 	  *   通过id删除
 	 * @param id
 	 * @return
@@ -139,11 +139,11 @@ public class SysAnnouncementSendController {
 				result.success("删除成功!");
 			}
 		}
-		
-		return result;
+
+        return result;
 	}
-	
-	/**
+
+     /**
 	  *  批量删除
 	 * @param ids
 	 * @return
@@ -159,8 +159,8 @@ public class SysAnnouncementSendController {
 		}
 		return result;
 	}
-	
-	/**
+
+     /**
 	  * 通过id查询
 	 * @param id
 	 * @return
@@ -177,8 +177,8 @@ public class SysAnnouncementSendController {
 		}
 		return result;
 	}
-	
-	/**
+
+     /**
 	 * @功能:更新用户系统消息阅读状态
 	 * @param json
 	 * @return
@@ -198,8 +198,8 @@ public class SysAnnouncementSendController {
 		result.setSuccess(true);
 		return result;
 	}
-	
-	/**
+
+     /**
 	 * @功能:获取我的消息
 	 * @return
 	 */

+ 19 - 19
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserAgentController.java

@@ -49,7 +49,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 
  /**
- * @Title: Controller
+  * @Title: controller
  * @Description: 用户代理人设置
  * @Author: jeecg-boot
  * @Date:  2019-04-17
@@ -61,8 +61,8 @@ import lombok.extern.slf4j.Slf4j;
 public class SysUserAgentController {
 	@Autowired
 	private ISysUserAgentService sysUserAgentService;
-	
-	/**
+
+     /**
 	  * 分页列表查询
 	 * @param sysUserAgent
 	 * @param pageNo
@@ -83,8 +83,8 @@ public class SysUserAgentController {
 		result.setResult(pageList);
 		return result;
 	}
-	
-	/**
+
+     /**
 	  *   添加
 	 * @param sysUserAgent
 	 * @return
@@ -101,8 +101,8 @@ public class SysUserAgentController {
 		}
 		return result;
 	}
-	
-	/**
+
+     /**
 	  *  编辑
 	 * @param sysUserAgent
 	 * @return
@@ -120,11 +120,11 @@ public class SysUserAgentController {
 				result.success("代理人设置成功!");
 			}
 		}
-		
-		return result;
+
+        return result;
 	}
-	
-	/**
+
+     /**
 	  *   通过id删除
 	 * @param id
 	 * @return
@@ -141,11 +141,11 @@ public class SysUserAgentController {
 				result.success("删除成功!");
 			}
 		}
-		
-		return result;
+
+        return result;
 	}
-	
-	/**
+
+     /**
 	  *  批量删除
 	 * @param ids
 	 * @return
@@ -161,8 +161,8 @@ public class SysUserAgentController {
 		}
 		return result;
 	}
-	
-	/**
+
+     /**
 	  * 通过id查询
 	 * @param id
 	 * @return
@@ -179,8 +179,8 @@ public class SysUserAgentController {
 		}
 		return result;
 	}
-	
-	/**
+
+     /**
 	  * 通过userName查询
 	 * @param userName
 	 * @return

+ 7 - 1
jeecg-boot-module-system/src/main/resources/application.yml

@@ -1,9 +1,15 @@
 spring:
   profiles:
     active: @activatedProperties@
+  application:
+    name: system-web
+eureka:
+  client:
+    serviceUrl:
+      defaultZone: http://localhost:8761/eureka/
 swagger:
   production: false
   basic:
     enable: true
     username: jeecg
-    password: jeecg1314
+    password: jeecg1314

+ 0 - 3
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -2,7 +2,6 @@ package org.jeecg;
 
 import cn.com.ctop.common.module.utils.HttpUtils;
 import cn.com.ctop.common.module.utils.HttpUtils2;
-import cn.com.ctop.common.module.utils.PropertiesUtils;
 import cn.com.ctop.crawler.modules.appium.service.IAppiumJobService;
 import cn.com.ctop.crawler.modules.appium.service.IAppiumTaskService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
@@ -167,8 +166,6 @@ public class SampleTest {
         JSONObject jsonObject = JSONObject.parseObject(result);
         System.err.println(jsonObject);
     }
-
-
 }
 
 

+ 118 - 0
log-server/.mvn/wrapper/MavenWrapperDownloader.java

@@ -0,0 +1,118 @@
+/*
+ * Copyright 2007-present the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.net.*;
+import java.io.*;
+import java.nio.channels.*;
+import java.util.Properties;
+
+public class MavenWrapperDownloader {
+
+    private static final String WRAPPER_VERSION = "0.5.6";
+    /**
+     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
+     */
+    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
+            + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
+
+    /**
+     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
+     * use instead of the default one.
+     */
+    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
+            ".mvn/wrapper/maven-wrapper.properties";
+
+    /**
+     * Path where the maven-wrapper.jar will be saved to.
+     */
+    private static final String MAVEN_WRAPPER_JAR_PATH =
+            ".mvn/wrapper/maven-wrapper.jar";
+
+    /**
+     * Name of the property which should be used to override the default download url for the wrapper.
+     */
+    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
+
+    public static void main(String args[]) {
+        System.out.println("- Downloader started");
+        File baseDirectory = new File(args[0]);
+        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
+
+        // If the maven-wrapper.properties exists, read it and check if it contains a custom
+        // wrapperUrl parameter.
+        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
+        String url = DEFAULT_DOWNLOAD_URL;
+        if (mavenWrapperPropertyFile.exists()) {
+            FileInputStream mavenWrapperPropertyFileInputStream = null;
+            try {
+                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
+                Properties mavenWrapperProperties = new Properties();
+                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
+                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
+            } catch (IOException e) {
+                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
+            } finally {
+                try {
+                    if (mavenWrapperPropertyFileInputStream != null) {
+                        mavenWrapperPropertyFileInputStream.close();
+                    }
+                } catch (IOException e) {
+                    // Ignore ...
+                }
+            }
+        }
+        System.out.println("- Downloading from: " + url);
+
+        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
+        if (!outputFile.getParentFile().exists()) {
+            if (!outputFile.getParentFile().mkdirs()) {
+                System.out.println(
+                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
+            }
+        }
+        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
+        try {
+            downloadFileFromURL(url, outputFile);
+            System.out.println("Done");
+            System.exit(0);
+        } catch (Throwable e) {
+            System.out.println("- Error downloading");
+            e.printStackTrace();
+            System.exit(1);
+        }
+    }
+
+    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
+        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
+            String username = System.getenv("MVNW_USERNAME");
+            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
+            Authenticator.setDefault(new Authenticator() {
+                @Override
+                protected PasswordAuthentication getPasswordAuthentication() {
+                    return new PasswordAuthentication(username, password);
+                }
+            });
+        }
+        URL website = new URL(urlString);
+        ReadableByteChannel rbc;
+        rbc = Channels.newChannel(website.openStream());
+        FileOutputStream fos = new FileOutputStream(destination);
+        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
+        fos.close();
+        rbc.close();
+    }
+
+}

BIN
log-server/.mvn/wrapper/maven-wrapper.jar


+ 2 - 0
log-server/.mvn/wrapper/maven-wrapper.properties

@@ -0,0 +1,2 @@
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar

+ 376 - 0
log-server/pom.xml

@@ -0,0 +1,376 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.2.2.RELEASE</version>
+        <relativePath/>
+    </parent>
+    <groupId>cn.com.ctop</groupId>
+    <artifactId>log-server</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>log-server</name>
+    <description>Demo project for Spring Boot</description>
+
+    <properties>
+        <java.version>1.8</java.version>
+        <spring-cloud.version>Hoxton.SR1</spring-cloud.version>
+        <jeecgboot.common.version>2.0.2</jeecgboot.common.version>
+        <java.version>1.8</java.version>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <mybatis-plus.version>3.0.6</mybatis-plus.version>
+        <druid.version>1.1.10</druid.version>
+        <commons.version>2.6</commons.version>
+        <aliyun-java-sdk-core.version>3.5.0</aliyun-java-sdk-core.version>
+        <aliyun-java-sdk-dysmsapi.version>1.0.0</aliyun-java-sdk-dysmsapi.version>
+    </properties>
+
+    <dependencies>
+
+        <!--集成springmvc框架并实现自动配置 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>ch.qos.logback</groupId>
+                    <artifactId>logback-classic</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-mail</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+        <!-- <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <optional>true</optional>
+        </dependency> -->
+
+        <!-- commons -->
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>${commons.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+            <version>${commons.version}</version>
+        </dependency>
+
+        <!-- freemarker -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-freemarker</artifactId>
+        </dependency>
+
+        <!-- Lombok -->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
+        <!-- mybatis-plus -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>${mybatis-plus.version}</version>
+        </dependency>
+
+        <!-- druid -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+            <version>${druid.version}</version>
+        </dependency>
+
+        <!-- 动态数据源 -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
+            <version>2.5.4</version>
+        </dependency>
+
+        <!-- json -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.56</version>
+        </dependency>
+
+        <!--mysql-->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.47</version>
+            <scope>runtime</scope>
+        </dependency>
+        <!--sqlserver-->
+        <dependency>
+            <groupId>net.sourceforge.jtds</groupId>
+            <artifactId>jtds</artifactId>
+            <version>1.3.1</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.microsoft.sqlserver</groupId>
+            <artifactId>mssql-jdbc</artifactId>
+            <version>7.2.1.jre8</version>
+            <scope>runtime</scope>
+        </dependency>
+
+        <!-- Quartz定时任务 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-quartz</artifactId>
+        </dependency>
+
+        <!--JWT-->
+        <dependency>
+            <groupId>com.auth0</groupId>
+            <artifactId>java-jwt</artifactId>
+            <version>3.7.0</version>
+        </dependency>
+
+        <!--shiro-->
+        <dependency>
+            <groupId>org.apache.shiro</groupId>
+            <artifactId>shiro-spring-boot-starter</artifactId>
+            <version>1.4.0</version>
+        </dependency>
+
+        <!-- Swagger API文档 -->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.github.xiaoymin</groupId>
+            <artifactId>swagger-bootstrap-ui</artifactId>
+            <version>1.9.3</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-bean-validators</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+
+
+        <!-- Redis -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-pool2</artifactId>
+        </dependency>
+
+        <!-- 代码生成器 -->
+
+        <!-- AutoPoi Excel工具类-->
+        <dependency>
+            <groupId>org.jeecgframework</groupId>
+            <artifactId>autopoi-web</artifactId>
+            <version>1.0.3</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>commons-codec</groupId>
+                    <artifactId>commons-codec</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.5.9</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpcore</artifactId>
+            <version>4.4</version>
+        </dependency>
+        <dependency>
+            <groupId>com.squareup.retrofit2</groupId>
+            <artifactId>retrofit</artifactId>
+            <version>2.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.pdfbox</groupId>
+            <artifactId>fontbox</artifactId>
+            <version>2.0.15</version>
+        </dependency>
+        <dependency>
+            <groupId>org.seleniumhq.selenium</groupId>
+            <artifactId>selenium-java</artifactId>
+            <version>3.141.59</version>
+        </dependency>
+        <dependency>
+            <groupId>org.seleniumhq.selenium</groupId>
+            <artifactId>selenium-firefox-driver</artifactId>
+            <version>3.141.59</version>
+        </dependency>
+        <dependency>
+            <groupId>org.json</groupId>
+            <artifactId>json</artifactId>
+            <version>LATEST</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>25.0-jre</version>
+        </dependency>
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-cp</artifactId>
+            <version>3.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>us.codecraft</groupId>
+            <artifactId>webmagic-core</artifactId>
+            <version>0.7.3</version>
+        </dependency>
+        <dependency>
+            <groupId>us.codecraft</groupId>
+            <artifactId>webmagic-extension</artifactId>
+            <version>0.7.3</version>
+        </dependency>
+        <dependency>
+            <groupId>net.sourceforge.htmlunit</groupId>
+            <artifactId>htmlunit</artifactId>
+            <version>2.36.0</version>
+        </dependency>
+        <dependency>
+            <groupId>io.appium</groupId>
+            <artifactId>java-client</artifactId>
+            <version>7.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>1.11</version>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>4.5.11</version>
+        </dependency>
+
+        <!-- 阿里云短信 -->
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
+            <version>${aliyun-java-sdk-dysmsapi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-core</artifactId>
+            <version>${aliyun-java-sdk-core.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun.oss</groupId>
+            <artifactId>aliyun-sdk-oss</artifactId>
+            <version>2.8.3</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-mts</artifactId>
+            <version>2.5.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.junit.vintage</groupId>
+                    <artifactId>junit-vintage-engine</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.jeecgframework.boot</groupId>
+                <artifactId>jeecg-boot-base-common</artifactId>
+                <version>${jeecgboot.common.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.springframework.cloud</groupId>
+                <artifactId>spring-cloud-dependencies</artifactId>
+                <version>${spring-cloud.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>dev</id>
+            <properties>
+                <!-- 环境标识,需要与配置文件的名称相对应 -->
+                <activatedProperties>dev</activatedProperties>
+            </properties>
+            <activation>
+                <!-- 默认环境 -->
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <id>test</id>
+            <properties>
+                <activatedProperties>test</activatedProperties>
+            </properties>
+        </profile>
+        <profile>
+            <id>prod</id>
+            <properties>
+                <activatedProperties>prod</activatedProperties>
+            </properties>
+        </profile>
+    </profiles>
+</project>

+ 13 - 0
log-server/src/main/java/cn/com/ctop/logserver/LogServerApplication.java

@@ -0,0 +1,13 @@
+package cn.com.ctop.logserver;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+
+@SpringBootApplication
+@EnableEurekaClient
+public class LogServerApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(LogServerApplication.class, args);
+    }
+}

+ 17 - 0
log-server/src/main/java/cn/com/ctop/logserver/controller/LogController.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.logserver.controller;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class LogController {
+    @Value("${server.port}")
+    String port;
+
+    @GetMapping("hi")
+    public String home(@RequestParam(value = "name", defaultValue = "forezp") String name) {
+        return "hi " + name + " ,i am from port:" + port;
+    }
+}

+ 160 - 0
log-server/src/main/resources/application-dev.yml

@@ -0,0 +1,160 @@
+server:
+  port: 8080
+  servlet:
+    context-path: /jeecg-boot
+    compression:
+      enabled: true
+      mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
+
+management:
+  endpoints:
+    web:
+      exposure:
+        include: metrics,httptrace
+
+spring:
+  rabbitmq:
+    host: 39.106.184.70
+    port: 5672
+    username: guest
+    password: guest
+  servlet:
+    multipart:
+      max-file-size: -1
+      max-request-size: -1
+  mail:
+    host: smtp.163.com
+    username: jeecgos@163.com
+    password: ??
+    properties:
+      mail:
+        smtp:
+          auth: true
+          starttls:
+            enable: true
+            required: true
+  ## quartz定时任务,采用数据库方式
+  quartz:
+    job-store-type: jdbc
+  #json 时间戳统一转换
+  jackson:
+    date-format:   yyyy-MM-dd HH:mm:ss
+    time-zone:   GMT+8
+  aop:
+    proxy-target-class: true
+  #配置freemarker
+  freemarker:
+    # 设置模板后缀名
+    suffix: .ftl
+    # 设置文档类型
+    content-type: text/html
+    # 设置页面编码格式
+    charset: UTF-8
+    # 设置页面缓存
+    cache: false
+    prefer-file-system-access: false
+    # 设置ftl文件路径
+    template-loader-path:
+      - classpath:/templates
+  # 设置静态文件路径,js,css等
+  mvc:
+    static-path-pattern: /**
+  resource:
+    static-locations: classpath:/static/,classpath:/public/
+  autoconfigure:
+    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
+  datasource:
+    druid:
+      stat-view-servlet:
+        enabled: true
+        loginUsername: admin
+        loginPassword: 123456
+      web-stat-filter:
+        enabled: true
+    dynamic:
+      druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
+        # 连接池的配置信息
+        # 初始化大小,最小,最大
+        connection-init-sql: set names utf8mb4
+
+        initial-size: 5
+        min-idle: 5
+        maxActive: 20
+        # 配置获取连接等待超时的时间
+        maxWait: 60000
+        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+        timeBetweenEvictionRunsMillis: 60000
+        # 配置一个连接在池中最小生存的时间,单位是毫秒
+        minEvictableIdleTimeMillis: 300000
+        validationQuery: SELECT 1 FROM DUAL
+        testWhileIdle: true
+        testOnBorrow: false
+        testOnReturn: false
+        # 打开PSCache,并且指定每个连接上PSCache的大小
+        poolPreparedStatements: true
+        maxPoolPreparedStatementPerConnectionSize: 20
+        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+        filters: stat,wall,slf4j
+        # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
+        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
+      datasource:
+        master:
+          url: jdbc:mysql://39.106.184.70:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
+          username: root
+          password: hcst2019
+          driver-class-name: com.mysql.jdbc.Driver
+          # 多数据源配置
+          #multi-datasource1:
+          #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true
+          #username: root
+          #password: root
+          #driver-class-name: com.mysql.jdbc.Driver
+  #redis 配置
+  redis:
+    database: 0
+    host: 127.0.0.1
+    lettuce:
+      pool:
+        max-active: 8   #最大连接数据库连接数,设 0 为没有限制
+        max-idle: 8     #最大等待连接中的数量,设 0 为没有限制
+        max-wait: -1ms  #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
+        min-idle: 0     #最小等待连接中的数量,设 0 为没有限制
+      shutdown-timeout: 100ms
+    password: ''
+    port: 6379
+#mybatis plus 设置
+mybatis-plus:
+  mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml,classpath*:cn/com/ctop/**/xml/*Mapper.xml
+  global-config:
+    # 关闭MP3.0自带的banner
+    banner: false
+    db-config:
+      #主键类型  0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
+      id-type: 4
+      # 默认数据库表下划线命名
+      table-underline: true
+    configuration:
+      # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
+      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+#jeecg专用配置
+jeecg:
+  path:
+    #文件上传根目录 设置
+    upload: D://upFiles
+    #webapp文件路径
+    webapp: D://webapp
+    video-upload: D://upFiles//video//
+    image-upload: D://upFiles//image//
+    chrome-driver: D://chromedriver.exe
+    csv-upload: D://upFiles//csv//
+kuaishou:
+  group-control:
+    path: http://39.106.184.70
+    port: 4723
+logging:
+  level:
+    root: info
+  config: classpath:logback-dev.xml
+chrome:
+  script:
+    clean: sh /mnt/webapp/cleanProcess.sh

+ 159 - 0
log-server/src/main/resources/application-prod.yml

@@ -0,0 +1,159 @@
+server:
+  port: 8080
+  servlet:
+    context-path: /jeecg-boot
+    compression:
+      enabled: true
+      mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
+
+management:
+  endpoints:
+    web:
+      exposure:
+        include: metrics,httptrace
+
+
+spring:
+  rabbitmq:
+    host: 39.106.184.70
+    port: 5672
+    username: guest
+    password: guest
+  servlet:
+    multipart:
+      max-file-size: -1
+      max-request-size: -1
+  mail:
+    host: smtp.163.com
+    username: jeecgos@163.com
+    password: ??
+    properties:
+      mail:
+        smtp:
+          auth: true
+          starttls:
+            enable: true
+            required: true
+  ## quartz定时任务,采用数据库方式
+  quartz:
+    job-store-type: jdbc
+  #json 时间戳统一转换
+  jackson:
+    date-format:   yyyy-MM-dd HH:mm:ss
+    time-zone:   GMT+8
+  aop:
+    proxy-target-class: true
+  #配置freemarker
+  freemarker:
+    # 设置模板后缀名
+    suffix: .ftl
+    # 设置文档类型
+    content-type: text/html
+    # 设置页面编码格式
+    charset: UTF-8
+    # 设置页面缓存
+    cache: false
+    prefer-file-system-access: false
+    # 设置ftl文件路径
+    template-loader-path:
+      - classpath:/templates
+  # 设置静态文件路径,js,css等
+  mvc:
+    static-path-pattern: /**
+  resource:
+    static-locations: classpath:/static/,classpath:/public/
+  autoconfigure:
+    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
+  datasource:
+    druid:
+      stat-view-servlet:
+        loginUsername: admin
+        loginPassword: hcst2016
+        enabled: true
+      web-stat-filter:
+        enabled: true
+    #      remove-abandoned: false
+    dynamic:
+      druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
+        # 连接池的配置信息
+        # 初始化大小,最小,最大
+        connection-init-sql: set names utf8mb4
+        initial-size: 5
+        min-idle: 5
+        maxActive: 20
+        # 配置获取连接等待超时的时间
+        maxWait: 60000
+        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+        timeBetweenEvictionRunsMillis: 60000
+        # 配置一个连接在池中最小生存的时间,单位是毫秒
+        minEvictableIdleTimeMillis: 300000
+        validationQuery: SELECT 1 FROM DUAL
+        testWhileIdle: true
+        testOnBorrow: false
+        testOnReturn: false
+        # 打开PSCache,并且指定每个连接上PSCache的大小
+        poolPreparedStatements: true
+        maxPoolPreparedStatementPerConnectionSize: 20
+        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+        filters: stat,wall,slf4j
+        # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
+        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
+      datasource:
+        master:
+          url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
+          username: hcst
+          password: test@20190531
+          driver-class-name: com.mysql.jdbc.Driver
+          # 多数据源配置
+          #multi-datasource1:
+          #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true
+          #username: root
+          #password: root
+          #driver-class-name: com.mysql.jdbc.Driver
+  #redis 配置
+  redis:
+    database: 0
+    host: 127.0.0.1
+    lettuce:
+      pool:
+        max-active: 8   #最大连接数据库连接数,设 0 为没有限制
+        max-idle: 8     #最大等待连接中的数量,设 0 为没有限制
+        max-wait: -1ms  #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
+        min-idle: 0     #最小等待连接中的数量,设 0 为没有限制
+      shutdown-timeout: 100ms
+    password: ''
+    port: 6379
+#mybatis plus 设置
+mybatis-plus:
+  mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml,classpath*:cn/com/ctop/**/xml/*Mapper.xml
+  global-config:
+    # 关闭MP3.0自带的banner
+    banner: false
+    db-config:
+      #主键类型  0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
+      id-type: 4
+      # 默认数据库表下划线命名
+      table-underline: true
+#jeecg专用配置
+jeecg:
+  path:
+    #文件上传根目录 设置
+    upload: /mnt/upload
+    #webapp文件路径
+    webapp: /mnt/webapp
+    video-upload: /mnt/upload/video/
+    image-upload: /mnt/upload/image/
+    chrome-driver: /usr/bin/chromedriver
+    csv-upload: /mnt/upload/csv/
+kuaishou:
+  group-control:
+    path: http://39.106.184.70
+    port: 4723
+logging:
+  level:
+    root: info
+  config: classpath:logback-prod.xml
+chrome:
+  script:
+    clean: sh /mnt/webapp/cleanProcess.sh
+

+ 161 - 0
log-server/src/main/resources/application-test.yml

@@ -0,0 +1,161 @@
+server:
+  port: 8080
+  servlet:
+    context-path: /jeecg-boot
+    compression:
+      enabled: true
+      mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
+
+management:
+  endpoints:
+    web:
+      exposure:
+        include: metrics,httptrace
+
+spring:
+  rabbitmq:
+    host: 127.0.0.1
+    port: 5672
+    username: guest
+    password: guest
+  servlet:
+    multipart:
+      max-file-size: -1
+      max-request-size: -1
+  mail:
+    host: smtp.163.com
+    username: jeecgos@163.com
+    password: ??
+    properties:
+      mail:
+        smtp:
+          auth: true
+          starttls:
+            enable: true
+            required: true
+  ## quartz定时任务,采用数据库方式
+  quartz:
+    job-store-type: jdbc
+  #json 时间戳统一转换
+  jackson:
+    date-format:   yyyy-MM-dd HH:mm:ss
+    time-zone:   GMT+8
+  aop:
+    proxy-target-class: true
+  #配置freemarker
+  freemarker:
+    # 设置模板后缀名
+    suffix: .ftl
+    # 设置文档类型
+    content-type: text/html
+    # 设置页面编码格式
+    charset: UTF-8
+    # 设置页面缓存
+    cache: false
+    prefer-file-system-access: false
+    # 设置ftl文件路径
+    template-loader-path:
+      - classpath:/templates
+  # 设置静态文件路径,js,css等
+  mvc:
+    static-path-pattern: /**
+  resource:
+    static-locations: classpath:/static/,classpath:/public/
+  autoconfigure:
+    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
+  datasource:
+    druid:
+      stat-view-servlet:
+        enabled: true
+        loginUsername: admin
+        loginPassword: 123456
+      web-stat-filter:
+        enabled: true
+    dynamic:
+      druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
+        # 连接池的配置信息
+        # 初始化大小,最小,最大
+        connection-init-sql: set names utf8mb4
+
+        initial-size: 5
+        min-idle: 5
+        maxActive: 20
+        # 配置获取连接等待超时的时间
+        maxWait: 60000
+        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+        timeBetweenEvictionRunsMillis: 60000
+        # 配置一个连接在池中最小生存的时间,单位是毫秒
+        minEvictableIdleTimeMillis: 300000
+        validationQuery: SELECT 1 FROM DUAL
+        testWhileIdle: true
+        testOnBorrow: false
+        testOnReturn: false
+        # 打开PSCache,并且指定每个连接上PSCache的大小
+        poolPreparedStatements: true
+        maxPoolPreparedStatementPerConnectionSize: 20
+        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+        filters: stat,wall,slf4j
+        # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
+        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
+      datasource:
+        master:
+          url: jdbc:mysql://39.106.184.70:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
+          username: root
+          password: hcst2019
+          driver-class-name: com.mysql.jdbc.Driver
+          # 多数据源配置
+          #multi-datasource1:
+          #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true
+          #username: root
+          #password: root
+          #driver-class-name: com.mysql.jdbc.Driver
+  #redis 配置
+  redis:
+    database: 0
+    host: 127.0.0.1
+    lettuce:
+      pool:
+        max-active: 8   #最大连接数据库连接数,设 0 为没有限制
+        max-idle: 8     #最大等待连接中的数量,设 0 为没有限制
+        max-wait: -1ms  #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
+        min-idle: 0     #最小等待连接中的数量,设 0 为没有限制
+      shutdown-timeout: 100ms
+    password: ''
+    port: 6379
+#mybatis plus 设置
+mybatis-plus:
+  mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml,classpath*:cn/com/ctop/**/xml/*Mapper.xml
+  global-config:
+    # 关闭MP3.0自带的banner
+    banner: false
+    db-config:
+      #主键类型  0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
+      id-type: 4
+      # 默认数据库表下划线命名
+      table-underline: true
+    configuration:
+      # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
+      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+#jeecg专用配置
+jeecg:
+  path:
+    #文件上传根目录 设置
+    #文件上传根目录 设置
+    upload: /data/upload
+    #webapp文件路径
+    webapp: /data/webapp
+    video-upload: /data/upload/video/
+    image-upload: /data/upload/image/
+    chrome-driver: /usr/bin/chromedriver
+    csv-upload: /data/upload/csv/
+kuaishou:
+  group-control:
+    path: http://127.0.0.1
+    port: 4723
+logging:
+  level:
+    root: info
+  config: classpath:logback-test.xml
+chrome:
+  script:
+    clean: sh /mnt/webapp/cleanProcess.sh

+ 15 - 0
log-server/src/main/resources/application.yml

@@ -0,0 +1,15 @@
+spring:
+  profiles:
+    active: @activatedProperties@
+  application:
+    name: system-web
+eureka:
+  client:
+    serviceUrl:
+      defaultZone: http://localhost:8761/eureka/
+swagger:
+  production: false
+  basic:
+    enable: true
+    username: jeecg
+    password: jeecg1314

+ 14 - 0
log-server/src/main/resources/banner.txt

@@ -0,0 +1,14 @@
+
+${AnsiColor.BRIGHT_BLUE}
+   (_)                          | |               | |
+    _  ___  ___  ___ __ _ ______| |__   ___   ___ | |_ 
+   | |/ _ \/ _ \/ __/ _` |______| '_ \ / _ \ / _ \| __|
+   | |  __/  __/ (_| (_| |      | |_) | (_) | (_) | |_ 
+   | |\___|\___|\___\__, |      |_.__/ \___/ \___/ \__|
+  _/ |               __/ |                             
+ |__/               |___/
+
+${AnsiColor.BRIGHT_GREEN}
+Jeecg  Boot Version: 2.0.2
+Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}
+${AnsiColor.BLACK}

+ 4 - 0
log-server/src/main/resources/log4j.properties

@@ -0,0 +1,4 @@
+log4j.rootLogger=INFO,stdout
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS}-[%p] [%t] %-5l - %m%n

+ 57 - 0
log-server/src/main/resources/logback-dev.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+
+    <contextName>logback</contextName>
+
+
+    <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
+    <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
+
+    <!-- 定义日志存储的路径,不要配置相对路径 -->
+    <property name="FILE_PATH" value="D:/Desktop/log/spring-log.%d{yyyy-MM-dd}.%i.log"/>
+
+    <!-- 控制台输出日志 -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <!-- 日志级别过滤INFO以下 -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+        <encoder>
+            <!-- 按照上面配置的LOG_PATTERN来打印日志 -->
+            <pattern>${LOG_PATTERN}</pattern>
+        </encoder>
+    </appender>
+
+    <!--每天生成一个日志文件,保存30天的日志文件。rollingFile用来切分文件的 -->
+    <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+
+            <fileNamePattern>${FILE_PATH}</fileNamePattern>
+
+            <!-- keep 15 days' worth of history -->
+            <maxHistory>30</maxHistory>
+
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <!-- 日志文件的最大大小 -->
+                <maxFileSize>2MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+
+            <!-- 超出删除老文件 -->
+            <totalSizeCap>1GB</totalSizeCap>
+        </rollingPolicy>
+
+        <encoder>
+            <pattern>${LOG_PATTERN}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- project default level -->
+    <logger name="net.sh.rgface.serive" level="ERROR"/>
+
+    <!-- 日志输出级别 -->
+    <root level="INFO">
+        <appender-ref ref="console"/>
+        <appender-ref ref="rollingFile"/>
+    </root>
+</configuration>

+ 57 - 0
log-server/src/main/resources/logback-prod.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+
+    <contextName>logback</contextName>
+
+
+    <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
+    <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
+
+    <!-- 定义日志存储的路径,不要配置相对路径 -->
+    <property name="FILE_PATH" value="/mnt/webapps/logs/spring-log.%d{yyyy-MM-dd}.%i.log"/>
+
+    <!-- 控制台输出日志 -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <!-- 日志级别过滤INFO以下 -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+        <encoder>
+            <!-- 按照上面配置的LOG_PATTERN来打印日志 -->
+            <pattern>${LOG_PATTERN}</pattern>
+        </encoder>
+    </appender>
+
+    <!--每天生成一个日志文件,保存30天的日志文件。rollingFile用来切分文件的 -->
+    <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+
+            <fileNamePattern>${FILE_PATH}</fileNamePattern>
+
+            <!-- keep 15 days' worth of history -->
+            <maxHistory>30</maxHistory>
+
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <!-- 日志文件的最大大小 -->
+                <maxFileSize>2MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+
+            <!-- 超出删除老文件 -->
+            <totalSizeCap>1GB</totalSizeCap>
+        </rollingPolicy>
+
+        <encoder>
+            <pattern>${LOG_PATTERN}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- project default level -->
+    <logger name="net.sh.rgface.serive" level="ERROR"/>
+
+    <!-- 日志输出级别 -->
+    <root level="INFO">
+        <appender-ref ref="console"/>
+        <appender-ref ref="rollingFile"/>
+    </root>
+</configuration>

+ 57 - 0
log-server/src/main/resources/logback-test.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+
+    <contextName>logback</contextName>
+
+
+    <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
+    <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
+
+    <!-- 定义日志存储的路径,不要配置相对路径 -->
+    <property name="FILE_PATH" value="/data/webapp/log/spring-log.%d{yyyy-MM-dd}.%i.log"/>
+
+    <!-- 控制台输出日志 -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <!-- 日志级别过滤INFO以下 -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+        <encoder>
+            <!-- 按照上面配置的LOG_PATTERN来打印日志 -->
+            <pattern>${LOG_PATTERN}</pattern>
+        </encoder>
+    </appender>
+
+    <!--每天生成一个日志文件,保存30天的日志文件。rollingFile用来切分文件的 -->
+    <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+
+            <fileNamePattern>${FILE_PATH}</fileNamePattern>
+
+            <!-- keep 15 days' worth of history -->
+            <maxHistory>30</maxHistory>
+
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <!-- 日志文件的最大大小 -->
+                <maxFileSize>2MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+
+            <!-- 超出删除老文件 -->
+            <totalSizeCap>1GB</totalSizeCap>
+        </rollingPolicy>
+
+        <encoder>
+            <pattern>${LOG_PATTERN}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- project default level -->
+    <logger name="net.sh.rgface.serive" level="ERROR"/>
+
+    <!-- 日志输出级别 -->
+    <root level="INFO">
+        <appender-ref ref="console"/>
+        <appender-ref ref="rollingFile"/>
+    </root>
+</configuration>

+ 6 - 0
log-server/src/main/resources/quartz.properties

@@ -0,0 +1,6 @@
+org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
+org.quartz.threadPool.threadCount=20
+org.quartz.threadPool.threadPriority=5
+org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
+org.quartz.jobStore.misfireThreshold=60000
+org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore

+ 3 - 3
mondule-jbpm/src/test/java/cn/com/ctop/jbpm/JbpmApplicationTests.java

@@ -1,10 +1,10 @@
-package cn.com.ctop.jbpm;
+package cn.com.ctop.logserver;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 
 @SpringBootTest
-class JbpmApplicationTests {
+class LogServerApplicationTests {
 
     @Test
     void contextLoads() {

+ 1 - 1
module-common/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java

@@ -58,7 +58,7 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
         String path = materialInfo.getUrl().substring(materialInfo.getUrl().indexOf("/", 10) + 1, materialInfo.getUrl().length());
         System.out.println(path);
         String jobId = mpsUtils.videoWaterMark(path, videoWatermarkTemplate.getTemplatePath(), videoWatermarkTemplate.getTemplateId(), videoWatermarkTemplate.getHeight());
-        QueryJobListResponse.Job job = mpsUtils.getJobStatus(jobId);
+        QueryJobListResponse.Job job = MpsUtils.getJobStatus(jobId);
         VideoWatermarkTask videoWatermarkTask = new VideoWatermarkTask();
         videoWatermarkTask.setJobId(jobId);
         videoWatermarkTask.setUserId(userId);

+ 2 - 0
module-common/src/main/java/cn/com/ctop/common/module/utils/CtopAdConstant.java

@@ -14,4 +14,6 @@ public class CtopAdConstant {
     public static final String BYTEDANCE_REPORT_TYPE_HOURLY = "STAT_TIME_GRANULARITY_HOURLY";
 
 
+    public static final String CTOP_ORGCODE_NORTH_CHINA_PREFIX = "A01";
+    public static final String CTOP_ORGCODE_EAST_CHINA_PREFIX = "A02";
 }

+ 6 - 0
module-common/src/main/java/cn/com/ctop/common/module/utils/ResultMapUtils.java

@@ -16,4 +16,10 @@ public class ResultMapUtils {
         map.put(MAP_MESSAGE, StatusCode.getDesc(statusCode));
         map.put(MAP_SUCCESS, StatusCode.getFlag(statusCode));
     }
+
+    public static void setResultMap(Map<String, Object> map, StatusCode statusCode) {
+        map.put(MAP_CODE, statusCode.getCode());
+        map.put(MAP_MESSAGE, statusCode.getDesc());
+        map.put(MAP_SUCCESS, statusCode.getFlag());
+    }
 }

+ 3 - 0
module-common/src/main/java/cn/com/ctop/common/module/utils/StatusCode.java

@@ -32,6 +32,7 @@ public enum StatusCode {
     ACCOUNT_HAS_NO_AUTHORIZE("该用户尚未进行授权", -209, false),
     FILE_HAS_UPLOAD("文件已经上传过", 0, false),
     COMMON_SERVER_ERROR("服务器内部错误", -102, false),
+    CTOP_HAS_NO_PERFORMANCE_STATISTIC_LOGIC("绩效统计逻辑尚未确定", -103, false),
     KUAISHOU_CRAWLER_APP_EXIT("快手app异常退出", -1001, false),
     KUAISHOU_CRAWLER_APP_ELEMENT_ERROR("快手元素异常", -1002, false),
     KUAISHOU_CRAWLER_APP_ELEMENT_IS_NULL("此快手元素获取不到", -1003, false),
@@ -40,6 +41,8 @@ public enum StatusCode {
     KUAISHOU_CRAWLER_APP_NO_ENABLED_DEVICE("暂无可用设备", -2001, false),
     KUAISHOU_OPTINIZER_CONFIG_IS_NULL("快手媒体优化师配置信息不全", -3001, false),
     KUAISHOU_OPTINIZER_PERSONNAL_DATA_IS_NULL("快手媒体优化师个人消耗数据不存在", -3002, false),
+    BYTEDANCE_OPTINIZER_PERSONNAL_DATA_IS_NULL("头条媒体优化师个人消耗数据不存在", -3003, false),
+    OPTINIZER_PERSONNAL_DATA_IS_NULL("优化师个人消耗数据不存在", -3004, false),
     KUAISHOU_CRAWLER_APP_SUCCESS("爬虫运行正常", 0, true),
     KUAISHOU_CRAWLER_APP_TASK_END("爬虫任务运行结束", 1, true),
     KUAISHOU_CRAWLER_APP_JOB_StART("任务开始执行开始", 0, true),

+ 0 - 49
mondule-jbpm/pom.xml

@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>jeecg-boot-parent</artifactId>
-        <groupId>org.jeecgframework.boot</groupId>
-        <version>2.0.2</version>
-    </parent>
-    <groupId>cn.com.ctop</groupId>
-    <artifactId>mondule-jbpm</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
-    <name>mondule-jbpm</name>
-
-    <properties>
-        <java.version>1.8</java.version>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>cn.com.ctop</groupId>
-            <artifactId>module-common</artifactId>
-            <version>2.0.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.activiti</groupId>
-            <artifactId>activiti-spring</artifactId>
-            <version>6.0.0</version>
-        </dependency>
-    </dependencies>
-    <build>
-        <resources>
-            <!-- 解决MyBatis配置文件引入问题 -->
-            <resource>
-                <directory>src/main/java</directory>
-                <includes>
-                    <include>**/*.properties</include>
-                    <include>**/*.xml</include>
-                </includes>
-                <!-- 是否替换资源中的属性-->
-                <filtering>false</filtering>
-            </resource>
-            <resource>
-                <directory>src/main/resources</directory>
-            </resource>
-        </resources>
-    </build>
-
-</project>

+ 0 - 13
mondule-jbpm/src/main/java/cn/com/ctop/jbpm/JbpmApplication.java

@@ -1,13 +0,0 @@
-package cn.com.ctop.jbpm;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-public class JbpmApplication {
-
-    public static void main(String[] args) {
-        SpringApplication.run(JbpmApplication.class, args);
-    }
-
-}

+ 0 - 29
mondule-jbpm/src/main/java/cn/com/ctop/jbpm/service/ActivitiTable.java

@@ -1,29 +0,0 @@
-package cn.com.ctop.jbpm.service;
-
-import org.activiti.engine.ProcessEngine;
-import org.activiti.engine.ProcessEngineConfiguration;
-
-/**
- * @author jeecg-boot
- * 2019年12月5日19:55:14
- */
-public class ActivitiTable {
-    public static void main(String[] args) {
-        // 引擎配置
-        ProcessEngineConfiguration pec = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
-        pec.setJdbcDriver("com.mysql.jdbc.Driver");
-        pec.setJdbcUrl("jdbc:mysql://39.106.184.70:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false");
-        pec.setJdbcUsername("hcst");
-        pec.setJdbcPassword("hcst2019");
-        /**
-         * false 不能自动创建表
-         * create-drop 先删除表再创建表
-         * true 自动创建和更新表
-         */
-        pec.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
-
-        // 获取流程引擎对象
-        ProcessEngine processEngine = pec.buildProcessEngine();
-
-    }
-}

+ 0 - 1
mondule-jbpm/src/main/resources/application.properties

@@ -1 +0,0 @@
-

File diff suppressed because it is too large
+ 0 - 76
mondule-jbpm/src/main/resources/processes/testbpm.bpmn


+ 118 - 0
moudule-eureca/.mvn/wrapper/MavenWrapperDownloader.java

@@ -0,0 +1,118 @@
+/*
+ * Copyright 2007-present the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.net.*;
+import java.io.*;
+import java.nio.channels.*;
+import java.util.Properties;
+
+public class MavenWrapperDownloader {
+
+    private static final String WRAPPER_VERSION = "0.5.6";
+    /**
+     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
+     */
+    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
+            + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
+
+    /**
+     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
+     * use instead of the default one.
+     */
+    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
+            ".mvn/wrapper/maven-wrapper.properties";
+
+    /**
+     * Path where the maven-wrapper.jar will be saved to.
+     */
+    private static final String MAVEN_WRAPPER_JAR_PATH =
+            ".mvn/wrapper/maven-wrapper.jar";
+
+    /**
+     * Name of the property which should be used to override the default download url for the wrapper.
+     */
+    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
+
+    public static void main(String args[]) {
+        System.out.println("- Downloader started");
+        File baseDirectory = new File(args[0]);
+        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
+
+        // If the maven-wrapper.properties exists, read it and check if it contains a custom
+        // wrapperUrl parameter.
+        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
+        String url = DEFAULT_DOWNLOAD_URL;
+        if (mavenWrapperPropertyFile.exists()) {
+            FileInputStream mavenWrapperPropertyFileInputStream = null;
+            try {
+                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
+                Properties mavenWrapperProperties = new Properties();
+                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
+                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
+            } catch (IOException e) {
+                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
+            } finally {
+                try {
+                    if (mavenWrapperPropertyFileInputStream != null) {
+                        mavenWrapperPropertyFileInputStream.close();
+                    }
+                } catch (IOException e) {
+                    // Ignore ...
+                }
+            }
+        }
+        System.out.println("- Downloading from: " + url);
+
+        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
+        if (!outputFile.getParentFile().exists()) {
+            if (!outputFile.getParentFile().mkdirs()) {
+                System.out.println(
+                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
+            }
+        }
+        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
+        try {
+            downloadFileFromURL(url, outputFile);
+            System.out.println("Done");
+            System.exit(0);
+        } catch (Throwable e) {
+            System.out.println("- Error downloading");
+            e.printStackTrace();
+            System.exit(1);
+        }
+    }
+
+    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
+        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
+            String username = System.getenv("MVNW_USERNAME");
+            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
+            Authenticator.setDefault(new Authenticator() {
+                @Override
+                protected PasswordAuthentication getPasswordAuthentication() {
+                    return new PasswordAuthentication(username, password);
+                }
+            });
+        }
+        URL website = new URL(urlString);
+        ReadableByteChannel rbc;
+        rbc = Channels.newChannel(website.openStream());
+        FileOutputStream fos = new FileOutputStream(destination);
+        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
+        fos.close();
+        rbc.close();
+    }
+
+}

BIN
moudule-eureca/.mvn/wrapper/maven-wrapper.jar


+ 2 - 0
moudule-eureca/.mvn/wrapper/maven-wrapper.properties

@@ -0,0 +1,2 @@
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar

+ 62 - 0
moudule-eureca/pom.xml

@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.2.2.RELEASE</version>
+        <relativePath/>
+    </parent>
+    <groupId>cn.com.ctop.eureca</groupId>
+    <artifactId>server</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>server</name>
+    <description>Demo project for Spring Boot</description>
+
+    <properties>
+        <java.version>1.8</java.version>
+        <spring-cloud.version>Hoxton.SR1</spring-cloud.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.junit.vintage</groupId>
+                    <artifactId>junit-vintage-engine</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.cloud</groupId>
+                <artifactId>spring-cloud-dependencies</artifactId>
+                <version>${spring-cloud.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 15 - 0
moudule-eureca/src/main/java/cn/com/ctop/eureca/server/ServerApplication.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.eureca.server;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
+
+@SpringBootApplication
+@EnableEurekaServer
+public class ServerApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(ServerApplication.class, args);
+    }
+
+}

+ 14 - 0
moudule-eureca/src/main/resources/application.yml

@@ -0,0 +1,14 @@
+server:
+  port: 8761
+
+eureka:
+  instance:
+    hostname: localhost
+  client:
+    registerWithEureka: false
+    fetchRegistry: false
+    serviceUrl:
+      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
+spring:
+  application:
+    name: eurka-server

+ 13 - 0
moudule-eureca/src/test/java/cn/com/ctop/eureca/server/ServerApplicationTests.java

@@ -0,0 +1,13 @@
+package cn.com.ctop.eureca.server;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class ServerApplicationTests {
+
+    @Test
+    void contextLoads() {
+    }
+
+}

+ 0 - 13
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/PerformanceAppraisalApplication.java

@@ -1,13 +0,0 @@
-package cn.com.ctop.performanceappraisal;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-public class PerformanceAppraisalApplication {
-
-    public static void main(String[] args) {
-        SpringApplication.run(PerformanceAppraisalApplication.class, args);
-    }
-
-}

+ 248 - 0
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/controller/PerformanceConfigController.java

@@ -0,0 +1,248 @@
+package cn.com.ctop.performanceappraisal.controller;
+
+import cn.com.ctop.performanceappraisal.entity.PerformanceConfig;
+import cn.com.ctop.performanceappraisal.service.IPerformanceConfigService;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 绩效配置文件表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-01-08
+ */
+@Slf4j
+@Api(tags = "绩效配置文件表")
+@RestController
+@RequestMapping("/ctop/performanceConfig")
+public class PerformanceConfigController {
+    @Autowired
+    private IPerformanceConfigService performanceConfigService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param performanceConfig
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "绩效配置文件表-分页列表查询")
+    @ApiOperation(value = "绩效配置文件表-分页列表查询", notes = "绩效配置文件表-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<PerformanceConfig>> queryPageList(PerformanceConfig performanceConfig,
+                                                          @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                          @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                          HttpServletRequest req) {
+        Result<IPage<PerformanceConfig>> result = new Result<IPage<PerformanceConfig>>();
+        QueryWrapper<PerformanceConfig> queryWrapper = QueryGenerator.initQueryWrapper(performanceConfig, req.getParameterMap());
+        Page<PerformanceConfig> page = new Page<PerformanceConfig>(pageNo, pageSize);
+        IPage<PerformanceConfig> pageList = performanceConfigService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    /**
+     * 添加
+     *
+     * @param performanceConfig
+     * @return
+     */
+    @AutoLog(value = "绩效配置文件表-添加")
+    @ApiOperation(value = "绩效配置文件表-添加", notes = "绩效配置文件表-添加")
+    @PostMapping(value = "/add")
+    public Result<PerformanceConfig> add(@RequestBody PerformanceConfig performanceConfig) {
+        Result<PerformanceConfig> result = new Result<PerformanceConfig>();
+        try {
+            performanceConfigService.save(performanceConfig);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param performanceConfig
+     * @return
+     */
+    @AutoLog(value = "绩效配置文件表-编辑")
+    @ApiOperation(value = "绩效配置文件表-编辑", notes = "绩效配置文件表-编辑")
+    @PutMapping(value = "/edit")
+    public Result<PerformanceConfig> edit(@RequestBody PerformanceConfig performanceConfig) {
+        Result<PerformanceConfig> result = new Result<PerformanceConfig>();
+        PerformanceConfig performanceConfigEntity = performanceConfigService.getById(performanceConfig.getId());
+        if (performanceConfigEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = performanceConfigService.updateById(performanceConfig);
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "绩效配置文件表-通过id删除")
+    @ApiOperation(value = "绩效配置文件表-通过id删除", notes = "绩效配置文件表-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            performanceConfigService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "绩效配置文件表-批量删除")
+    @ApiOperation(value = "绩效配置文件表-批量删除", notes = "绩效配置文件表-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<PerformanceConfig> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<PerformanceConfig> result = new Result<PerformanceConfig>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.performanceConfigService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "绩效配置文件表-通过id查询")
+    @ApiOperation(value = "绩效配置文件表-通过id查询", notes = "绩效配置文件表-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<PerformanceConfig> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<PerformanceConfig> result = new Result<PerformanceConfig>();
+        PerformanceConfig performanceConfig = performanceConfigService.getById(id);
+        if (performanceConfig == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(performanceConfig);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+        // Step.1 组装查询条件
+        QueryWrapper<PerformanceConfig> queryWrapper = null;
+        try {
+            String paramsStr = request.getParameter("paramsStr");
+            if (oConvertUtils.isNotEmpty(paramsStr)) {
+                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+                PerformanceConfig performanceConfig = JSON.parseObject(deString, PerformanceConfig.class);
+                queryWrapper = QueryGenerator.initQueryWrapper(performanceConfig, request.getParameterMap());
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<PerformanceConfig> pageList = performanceConfigService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME, "绩效配置文件表列表");
+        mv.addObject(NormalExcelConstants.CLASS, PerformanceConfig.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("绩效配置文件表列表数据", "导出人:Jeecg", "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<PerformanceConfig> listPerformanceConfigs = ExcelImportUtil.importExcel(file.getInputStream(), PerformanceConfig.class, params);
+                performanceConfigService.saveBatch(listPerformanceConfigs);
+                return Result.ok("文件导入成功!数据行数:" + listPerformanceConfigs.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.ok("文件导入失败!");
+    }
+
+}

+ 6 - 4
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/controller/PerformanceOptimizerController.java

@@ -273,8 +273,9 @@ public class PerformanceOptimizerController {
     @ResponseBody
     public Map<String, Object> getRankingList(@RequestParam(name = "mediaType", defaultValue = "2") String mediaType,
                                               @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
-                                              @RequestParam(name = "pageSize", defaultValue = "3") Integer pageSize) {
-        return performanceOptimizerService.getRankingList(mediaType, pageNo, pageSize);
+                                              @RequestParam(name = "pageSize", defaultValue = "3") Integer pageSize,
+                                              @RequestParam(name = "orgCode", defaultValue = "A01") String orgCode) {
+        return performanceOptimizerService.getRankingList(mediaType, pageNo, pageSize, orgCode);
     }
 
     /**
@@ -286,8 +287,9 @@ public class PerformanceOptimizerController {
      */
     @GetMapping(value = "/manager/detail")
     @ResponseBody
-    public Map<String, Object> getManagerPerformanceDetail(HttpServletRequest req, @RequestParam(name = "mediaType", defaultValue = "2") String mediaType) {
-        return performanceOptimizerService.getManagerPerformanceDetail(mediaType);
+    public Map<String, Object> getManagerPerformanceDetail(@RequestParam(name = "orgCode", defaultValue = "A01") String orgCode,
+                                                           @RequestParam(name = "mediaType", defaultValue = "2") String mediaType) {
+        return performanceOptimizerService.getManagerPerformanceDetail(mediaType, orgCode);
     }
 
 }

+ 9 - 0
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/entity/OptimizerConfig.java

@@ -10,6 +10,7 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -68,6 +69,14 @@ public class OptimizerConfig {
     @Excel(name = "是否有效", width = 15)
     @ApiModelProperty(value = "是否有效")
     private Integer enabled;
+
+    @Excel(name = "个人总任务", width = 15)
+    @ApiModelProperty(value = "个人总任务")
+    private BigDecimal totalPersonalTask;
+
+    @Excel(name = "机构代码", width = 15)
+    @ApiModelProperty(value = "机构代码")
+    private String orgCode;
     /**
      * createTime
      */

+ 63 - 0
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/entity/PerformanceConfig.java

@@ -0,0 +1,63 @@
+package cn.com.ctop.performanceappraisal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 绩效配置文件表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-01-08
+ */
+@Data
+@TableName("ctop_performance_config")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_performance_config对象", description = "绩效配置文件表")
+public class PerformanceConfig {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.UUID)
+    @ApiModelProperty(value = "id")
+    private Integer id;
+    /**
+     * year
+     */
+    @Excel(name = "year", width = 15)
+    @ApiModelProperty(value = "year")
+    private Integer year;
+    /**
+     * quarter
+     */
+    @Excel(name = "quarter", width = 15)
+    @ApiModelProperty(value = "quarter")
+    private Integer quarter;
+    /**
+     * mediaTaskRaise
+     */
+    @Excel(name = "mediaTaskRaise", width = 15)
+    @ApiModelProperty(value = "mediaTaskRaise")
+    private Integer mediaTaskRaise;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+}

+ 15 - 0
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/mapper/PerformanceConfigMapper.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.performanceappraisal.mapper;
+
+import cn.com.ctop.performanceappraisal.entity.PerformanceConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 绩效配置文件表
+ *
+ * @author: jeecg-boot
+ * @date: 2020-01-08
+ * @cersion: V1.0
+ */
+public interface PerformanceConfigMapper extends BaseMapper<PerformanceConfig> {
+
+}

+ 5 - 0
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/mapper/xml/PerformanceConfigMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.performanceappraisal.mapper.PerformanceConfigMapper">
+
+</mapper>

+ 1 - 1
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/IOptimizerConfigService.java

@@ -11,5 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @date 2019-12-13
  */
 public interface IOptimizerConfigService extends IService<OptimizerConfig> {
-    OptimizerConfig getEnabledConfigByMediaType(String mediaType);
+    OptimizerConfig getEnabledConfigByMediaType(String mediaType, String orgCode);
 }

+ 1 - 1
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/IOptimizerRoleInfoService.java

@@ -14,5 +14,5 @@ import java.util.Map;
  */
 public interface IOptimizerRoleInfoService extends IService<OptimizerRoleInfo> {
 
-    Map<String, Object> getmanagerDetail(Integer appType);
+    Map<String, Object> getManagerDetail(String appType, String orgCode);
 }

+ 16 - 0
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/IPerformanceConfigService.java

@@ -0,0 +1,16 @@
+package cn.com.ctop.performanceappraisal.service;
+
+import cn.com.ctop.performanceappraisal.entity.PerformanceConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 绩效配置文件表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-01-08
+ */
+public interface IPerformanceConfigService extends IService<PerformanceConfig> {
+
+    PerformanceConfig getNowConfig();
+}

+ 2 - 2
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/IPerformanceOptimizerService.java

@@ -16,7 +16,7 @@ public interface IPerformanceOptimizerService extends IService<PerformanceOptimi
 
     Map<String, Object> getPerformanceDetail(String mediaType, Integer pageNo, Integer pageSize);
 
-    Map<String, Object> getRankingList(String mediaType, Integer pageNo, Integer pageSize);
+    Map<String, Object> getRankingList(String mediaType, Integer pageNo, Integer pageSize, String orgCode);
 
-    Map<String, Object> getManagerPerformanceDetail(String mediaType);
+    Map<String, Object> getManagerPerformanceDetail(String mediaType, String orgCode);
 }

+ 6 - 2
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/impl/OptimizerConfigServiceImpl.java

@@ -18,9 +18,13 @@ import org.springframework.stereotype.Service;
 public class OptimizerConfigServiceImpl extends ServiceImpl<OptimizerConfigMapper, OptimizerConfig> implements IOptimizerConfigService {
 
     @Override
-    public OptimizerConfig getEnabledConfigByMediaType(String mediaType) {
+    public OptimizerConfig getEnabledConfigByMediaType(String mediaType, String orgCode) {
         QueryWrapper<OptimizerConfig> queryWrapper = new QueryWrapper();
-        queryWrapper.eq("enabled", "1").eq("app_type", mediaType).orderByDesc("id").last(" limit 1");
+        queryWrapper.eq("enabled", "1")
+                .eq("app_type", mediaType)
+                .eq("org_code", orgCode)
+                .orderByDesc("id")
+                .last(" limit 1");
         return this.getOne(queryWrapper);
     }
 }

+ 3 - 3
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/impl/OptimizerRoleInfoServiceImpl.java

@@ -31,12 +31,12 @@ public class OptimizerRoleInfoServiceImpl extends ServiceImpl<OptimizerRoleInfoM
     private IOptimizerConfigService optimizerConfigService;
 
     @Override
-    public Map<String, Object> getmanagerDetail(Integer appType) {
+    public Map<String, Object> getManagerDetail(String appType, String orgCode) {
         Map<String, Object> result = new HashMap<>();
         try {
             //1:查询媒体任务
-            OptimizerCostDetailVO totalCostVo = performanceService.getOptimizerTotalCost(appType + "");
-            OptimizerConfig config = optimizerConfigService.getEnabledConfigByMediaType(appType + "");
+            OptimizerCostDetailVO totalCostVo = performanceService.getOptimizerTotalCost(appType);
+            OptimizerConfig config = optimizerConfigService.getEnabledConfigByMediaType(appType, orgCode);
             //查询经理所属人员任务完成信息列表
             result = performanceService.getMemberPerformanceByUserId(config, totalCostVo);
             ResultMapUtils.setResultMap(result, StatusCode.COMMON_SUCCESS.getCode());

+ 34 - 0
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/impl/PerformanceConfigServiceImpl.java

@@ -0,0 +1,34 @@
+package cn.com.ctop.performanceappraisal.service.impl;
+
+import cn.com.ctop.performanceappraisal.entity.PerformanceConfig;
+import cn.com.ctop.performanceappraisal.mapper.PerformanceConfigMapper;
+import cn.com.ctop.performanceappraisal.service.IPerformanceConfigService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.common.util.DateUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ * 绩效配置文件表
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-01-08
+ */
+@Service
+public class PerformanceConfigServiceImpl extends ServiceImpl<PerformanceConfigMapper, PerformanceConfig> implements IPerformanceConfigService {
+
+    @Override
+    public PerformanceConfig getNowConfig() {
+        Integer year = DateUtils.getYear(new Date());
+        Integer quarter = DateUtils.getQuarter(new Date());
+        QueryWrapper<PerformanceConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("year", year)
+                .eq("quarter", quarter)
+                .orderByDesc("id")
+                .last("limit 1");
+        return this.getOne(queryWrapper);
+    }
+}

+ 195 - 39
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/impl/PerformanceOptimizerServiceImpl.java

@@ -1,15 +1,18 @@
 package cn.com.ctop.performanceappraisal.service.impl;
 
+import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.common.module.utils.ResultMapUtils;
 import cn.com.ctop.common.module.utils.StatusCode;
 import cn.com.ctop.performanceappraisal.entity.OptimizerConfig;
+import cn.com.ctop.performanceappraisal.entity.PerformanceConfig;
 import cn.com.ctop.performanceappraisal.entity.PerformanceOptimizer;
 import cn.com.ctop.performanceappraisal.mapper.PerformanceOptimizerMapper;
 import cn.com.ctop.performanceappraisal.service.IOptimizerConfigService;
+import cn.com.ctop.performanceappraisal.service.IPerformanceConfigService;
 import cn.com.ctop.performanceappraisal.service.IPerformanceOptimizerService;
 import cn.com.ctop.performanceappraisal.service.IPerformanceService;
 import cn.com.ctop.performanceappraisal.vo.OptimizerCostDetailVO;
-import com.alibaba.fastjson.JSONObject;
+import cn.com.ctop.performanceappraisal.vo.UserPerformanceDetailVO;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.system.vo.LoginUser;
@@ -43,41 +46,181 @@ public class PerformanceOptimizerServiceImpl extends ServiceImpl<PerformanceOpti
         Integer startIndex = (pageNo - 1) * pageSize;
         //查询当前登录人信息
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-//        LoginUser sysUser = new LoginUser();
-//        sysUser.setId("fcb3fbf6192640adaadb2a7df9c02dae");
-        //查询当前媒体配置信息
-        OptimizerConfig config = optimizerConfigService.getEnabledConfigByMediaType(mediaType);
-        if (null == config) {
-            ResultMapUtils.setResultMap(result, StatusCode.KUAISHOU_OPTINIZER_CONFIG_IS_NULL.getCode());
+        String orgCode = sysUser.getOrgCode();
+        if (orgCode.startsWith(CtopAdConstant.CTOP_ORGCODE_NORTH_CHINA_PREFIX)) {
+            //华北
+            //查询当前媒体配置信息
+            OptimizerConfig config = optimizerConfigService.getEnabledConfigByMediaType(mediaType, CtopAdConstant.CTOP_ORGCODE_NORTH_CHINA_PREFIX);
+            if (null == config) {
+                ResultMapUtils.setResultMap(result, StatusCode.KUAISHOU_OPTINIZER_CONFIG_IS_NULL.getCode());
+                return result;
+            }
+            //:查询当前用户截止到目前当前季度的消耗统计数据
+            List<OptimizerCostDetailVO> vos = performanceService.getOptimizerTotalCostDetailGroupByUserId(mediaType, sysUser.getId(), startIndex, pageSize);
+            if (null == vos || vos.size() <= 0) {
+                ResultMapUtils.setResultMap(result, StatusCode.KUAISHOU_OPTINIZER_PERSONNAL_DATA_IS_NULL.getCode());
+                return result;
+            }
+            //2: 查询媒体季度任务完成情况
+            UserPerformanceDetailVO performanceDetailVO = getPerformanceDetailVO(mediaType, vos.get(0), config);
+            result.put("userDetail", performanceDetailVO);
+            ResultMapUtils.setResultMap(result, StatusCode.COMMON_SUCCESS.getCode());
             return result;
-        }
-        //:查询当前用户截止到目前当前季度的消耗统计数据
-        List<OptimizerCostDetailVO> vos = performanceService.getOptimizerTotalCostDetailGroupByUserId(mediaType, sysUser.getId(), startIndex, pageSize);
-        if (null == vos || vos.size() <= 0) {
-            ResultMapUtils.setResultMap(result, StatusCode.KUAISHOU_OPTINIZER_PERSONNAL_DATA_IS_NULL.getCode());
+        } else if (orgCode.startsWith(CtopAdConstant.CTOP_ORGCODE_EAST_CHINA_PREFIX)) {
+            //华东
+            //查询当前媒体配置信息
+            OptimizerConfig kuaishouConfig = optimizerConfigService.getEnabledConfigByMediaType(CtopAdConstant.PLATFORM_TYPE_KUAISHOU, CtopAdConstant.CTOP_ORGCODE_EAST_CHINA_PREFIX);
+            OptimizerConfig bytedanceConfig = optimizerConfigService.getEnabledConfigByMediaType(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE, CtopAdConstant.CTOP_ORGCODE_EAST_CHINA_PREFIX);
+            if (null == kuaishouConfig || null == bytedanceConfig) {
+                ResultMapUtils.setResultMap(result, StatusCode.KUAISHOU_OPTINIZER_CONFIG_IS_NULL.getCode());
+                return result;
+            }
+            //:查询当前用户截止到目前当前季度的消耗统计数据
+            List<OptimizerCostDetailVO> kuaishouVos = performanceService.getOptimizerTotalCostDetailGroupByUserId(CtopAdConstant.PLATFORM_TYPE_KUAISHOU, sysUser.getId(), startIndex, pageSize);
+            List<OptimizerCostDetailVO> bytedanceVos = performanceService.getOptimizerTotalCostDetailGroupByUserId(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE, sysUser.getId(), startIndex, pageSize);
+            boolean hasNoCost = (null == kuaishouVos || kuaishouVos.size() <= 0) && (null == bytedanceVos || bytedanceVos.size() <= 0);
+            if (hasNoCost) {
+                ResultMapUtils.setResultMap(result, StatusCode.OPTINIZER_PERSONNAL_DATA_IS_NULL.getCode());
+                return result;
+            }
+            if (null == kuaishouVos || kuaishouVos.size() <= 0) {
+                //快手消耗为0
+                //2: 查询头条媒体季度任务完成情况
+                UserPerformanceDetailVO performanceDetailVO = getPerformanceDetailVO(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE, bytedanceVos.get(0), bytedanceConfig);
+                result.put("userDetail", performanceDetailVO);
+                ResultMapUtils.setResultMap(result, StatusCode.COMMON_SUCCESS.getCode());
+                return result;
+            }
+            if (null == bytedanceVos || bytedanceVos.size() <= 0) {
+                //头条消耗为0
+                //2: 查询快手媒体季度任务完成情况
+                UserPerformanceDetailVO performanceDetailVO = getPerformanceDetailVO(CtopAdConstant.PLATFORM_TYPE_KUAISHOU, kuaishouVos.get(0), kuaishouConfig);
+                result.put("userDetail", performanceDetailVO);
+                ResultMapUtils.setResultMap(result, StatusCode.COMMON_SUCCESS.getCode());
+                return result;
+            }
+            //快手+头条
+            UserPerformanceDetailVO performanceDetailVO = getMultiPerformanceDetailVO(kuaishouVos.get(0), kuaishouConfig, bytedanceVos.get(0), bytedanceConfig);
+            result.put("userDetail", performanceDetailVO);
+            ResultMapUtils.setResultMap(result, StatusCode.COMMON_SUCCESS.getCode());
+            return result;
+        } else {
+            ResultMapUtils.setResultMap(result, StatusCode.CTOP_HAS_NO_PERFORMANCE_STATISTIC_LOGIC);
             return result;
         }
-        //2: 查询媒体季度任务完成情况
-        OptimizerCostDetailVO totalCostVo = performanceService.getOptimizerTotalCost(mediaType);
-        OptimizerCostDetailVO detailVO = vos.get(0);
-        detailVO.setTotalRoyalty(getTotalRoyalty(config, detailVO, totalCostVo));
-        JSONObject detail = new JSONObject();
-        detail.put("realName", detailVO.getRealName());
-        detail.put("totalCost", detailVO.getTotalCost());
-        detail.put("totalRoyalty", detailVO.getTotalRoyalty());
-        detail.put("mediaTask", config.getMediaTask());
-        detail.put("personalTask", config.getPersonalTask());
-
-        detail.put("year", detailVO.getYear());
-        detail.put("quarter", detailVO.getQuarter());
-        detail.put("royaltyRatio", getRate(config, detailVO, totalCostVo).toString() + "‰");
-        result.put("userDetail", detail);
-        ResultMapUtils.setResultMap(result, StatusCode.COMMON_SUCCESS.getCode());
-        return result;
+    }
+
+    private UserPerformanceDetailVO getMultiPerformanceDetailVO(OptimizerCostDetailVO kuaishouQuarterCostVO, OptimizerConfig kuaishouConfig, OptimizerCostDetailVO bytedanceQuarterCostVO, OptimizerConfig bytedanceConfig) {
+        //1:获取个人各渠道消耗
+        OptimizerCostDetailVO kuaishouTotalCostVo = performanceService.getOptimizerTotalCost(CtopAdConstant.PLATFORM_TYPE_KUAISHOU);
+        OptimizerCostDetailVO bytedanceTotalCostVo = performanceService.getOptimizerTotalCost(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE);
+
+        UserPerformanceDetailVO performanceDetailVO = new UserPerformanceDetailVO();
+        performanceDetailVO.setRealName(kuaishouTotalCostVo.getRealName());
+        //个人消耗
+        performanceDetailVO.setKuaishouPersonalCost(kuaishouTotalCostVo.getTotalCost());
+        performanceDetailVO.setBytedancePersonalCost(bytedanceTotalCostVo.getTotalCost());
+        performanceDetailVO.setTotalPersonalCost(kuaishouTotalCostVo.getTotalCost().add(bytedanceTotalCostVo.getTotalCost()).setScale(2, RoundingMode.HALF_UP));
+        //媒体消耗
+        performanceDetailVO.setKuaishouMediaCost(kuaishouQuarterCostVO.getTotalCost());
+        performanceDetailVO.setBytedanceMediaCost(bytedanceQuarterCostVO.getTotalCost());
+        performanceDetailVO.setTotalMediaCost(bytedanceQuarterCostVO.getTotalCost().add(kuaishouQuarterCostVO.getTotalCost()).setScale(2, RoundingMode.HALF_UP));
+
+        //媒体任务
+        performanceDetailVO.setKuaishouMediaTask(kuaishouConfig.getMediaTask());
+        performanceDetailVO.setBytedanceMediaTask(bytedanceConfig.getMediaTask());
+        performanceDetailVO.setTotalMediaCost(kuaishouConfig.getMediaTask().add(bytedanceConfig.getMediaTask()).setScale(2, RoundingMode.HALF_UP));
+
+        //个人任务
+        performanceDetailVO.setTotalPersonalTask(kuaishouConfig.getTotalPersonalTask());
+        performanceDetailVO.setKuaishouPersonalTask(kuaishouConfig.getPersonalTask());
+        performanceDetailVO.setBytedancePersonalTask(bytedanceConfig.getPersonalTask());
+
+        performanceDetailVO.setYear(kuaishouQuarterCostVO.getYear());
+        performanceDetailVO.setQuarter(kuaishouQuarterCostVO.getQuarter());
+
+        //快手提成
+        performanceDetailVO.setKuaishouRoyalty(getRoyalty(kuaishouConfig,
+                performanceDetailVO.getTotalPersonalCost(), performanceDetailVO.getTotalPersonalTask(),
+                performanceDetailVO.getKuaishouMediaCost(), performanceDetailVO.getKuaishouMediaTask(),
+                performanceDetailVO.getKuaishouPersonalCost()));
+        //头条提成
+        performanceDetailVO.setBytedanceRoyalty(getRoyalty(bytedanceConfig,
+                performanceDetailVO.getTotalPersonalCost(), performanceDetailVO.getTotalPersonalTask(),
+                performanceDetailVO.getBytedanceMediaCost(), performanceDetailVO.getBytedanceMediaTask(),
+                performanceDetailVO.getBytedancePersonalCost()));
+
+        //快手提成点
+        performanceDetailVO.setKuaishouRoyaltyRatio(getRoyaltyRatio(kuaishouConfig, performanceDetailVO.getTotalPersonalCost(), performanceDetailVO.getTotalPersonalTask(), performanceDetailVO.getKuaishouMediaCost(), performanceDetailVO.getKuaishouMediaTask()));
+        //头条提成点
+        performanceDetailVO.setBytedanceRoyaltyRatio(getRoyaltyRatio(bytedanceConfig, performanceDetailVO.getTotalPersonalCost(), performanceDetailVO.getTotalPersonalTask(), performanceDetailVO.getBytedanceMediaCost(), performanceDetailVO.getBytedanceMediaTask()));
+        //总提成
+        performanceDetailVO.setTotalRoyalty(performanceDetailVO.getBytedanceRoyalty().add(performanceDetailVO.getKuaishouRoyalty()).setScale(2, RoundingMode.HALF_UP));
+
+        return performanceDetailVO;
+    }
+
+    private BigDecimal getRoyalty(OptimizerConfig bytedanceConfig, BigDecimal totalPersonalCost, BigDecimal totalPersonalTask, BigDecimal bytedanceMediaCost, BigDecimal bytedanceMediaTask, BigDecimal bytedancePersonalCost) {
+        BigDecimal royalty = BigDecimal.ZERO;
+
+        //个人任务未完成
+        if (totalPersonalCost.compareTo(totalPersonalTask) < 0) {
+            return royalty;
+        }
+        //快手媒体任务未完成
+        if (bytedanceMediaCost.compareTo(bytedanceMediaTask) < 0) {
+            return bytedancePersonalCost.multiply(bytedanceConfig.getMediaTaskNoFinishRate()).divide(new BigDecimal("1000")).setScale(2, RoundingMode.HALF_UP);
+        }
+
+        PerformanceConfig performanceConfig = performanceConfigService.getNowConfig();
+        if (null != performanceConfig && performanceConfig.getMediaTaskRaise() == 1) {
+            //同意提高提成点
+            return bytedancePersonalCost.multiply(bytedanceConfig.getMediaTaskFinishRate()).divide(new BigDecimal("1000")).setScale(2, RoundingMode.HALF_UP);
+        } else {
+            return bytedancePersonalCost.multiply(bytedanceConfig.getMediaTaskFinishRate()).divide(new BigDecimal("1000")).setScale(2, RoundingMode.HALF_UP);
+        }
+    }
+
+    private BigDecimal getRoyaltyRatio(OptimizerConfig bytedanceConfig, BigDecimal totalPersonalCost, BigDecimal totalPersonalTask, BigDecimal mediaCost, BigDecimal mediaTask) {
+        BigDecimal royalty = BigDecimal.ZERO;
+
+        //个人任务未完成
+        if (totalPersonalCost.compareTo(totalPersonalTask) < 0) {
+            return royalty;
+        }
+        //快手媒体任务未完成
+        if (mediaCost.compareTo(mediaTask) < 0) {
+            return bytedanceConfig.getMediaTaskNoFinishRate().setScale(2, RoundingMode.HALF_UP);
+        }
+
+        PerformanceConfig performanceConfig = performanceConfigService.getNowConfig();
+        if (null != performanceConfig && performanceConfig.getMediaTaskRaise() == 1) {
+            //同意提高提成点
+            return bytedanceConfig.getMediaTaskFinishRate().setScale(2, RoundingMode.HALF_UP);
+        } else {
+            return bytedanceConfig.getMediaTaskNoFinishRate().setScale(2, RoundingMode.HALF_UP);
+        }
+    }
+
+    private UserPerformanceDetailVO getPerformanceDetailVO(String appType, OptimizerCostDetailVO kuaishouCostVo, OptimizerConfig kuaishouConfig) {
+        OptimizerCostDetailVO totalCostVo = performanceService.getOptimizerTotalCost(appType);
+        UserPerformanceDetailVO performanceDetailVO = new UserPerformanceDetailVO();
+        kuaishouCostVo.setTotalRoyalty(getTotalRoyalty(kuaishouConfig, kuaishouCostVo, totalCostVo));
+        performanceDetailVO.setRealName(kuaishouCostVo.getRealName());
+        performanceDetailVO.setTotalPersonalCost(kuaishouCostVo.getTotalCost());
+        performanceDetailVO.setTotalRoyalty(kuaishouCostVo.getTotalRoyalty());
+        performanceDetailVO.setTotalMediaTask(kuaishouConfig.getMediaTask());
+        performanceDetailVO.setTotalPersonalTask(kuaishouConfig.getPersonalTask());
+
+        performanceDetailVO.setYear(kuaishouCostVo.getYear());
+        performanceDetailVO.setQuarter(kuaishouCostVo.getQuarter());
+        performanceDetailVO.setRoyaltyRatio(getRate(kuaishouConfig, kuaishouCostVo, totalCostVo).toString() + "‰");
+        return performanceDetailVO;
     }
 
     @Override
-    public Map<String, Object> getRankingList(String mediaType, Integer pageNo, Integer pageSize) {
+    //TODO --先优先华北的逻辑
+    public Map<String, Object> getRankingList(String mediaType, Integer pageNo, Integer pageSize, String orgCode) {
         Map<String, Object> result = new HashMap<>();
         Integer startIndex = (pageNo - 1) * pageSize;
         List<OptimizerCostDetailVO> vos = performanceService.getOptimizerTotalCostDetailGroupByUserId(mediaType, null, startIndex, pageSize);
@@ -86,7 +229,7 @@ public class PerformanceOptimizerServiceImpl extends ServiceImpl<PerformanceOpti
             return result;
         }
         //查询优化师系统设置数据
-        OptimizerConfig config = optimizerConfigService.getEnabledConfigByMediaType(mediaType);
+        OptimizerConfig config = optimizerConfigService.getEnabledConfigByMediaType(mediaType, orgCode);
         //2: 查询媒体季度任务完成情况
         OptimizerCostDetailVO totalCostVo = performanceService.getOptimizerTotalCost(mediaType);
         //3:计算单个优化师提成总额
@@ -103,11 +246,12 @@ public class PerformanceOptimizerServiceImpl extends ServiceImpl<PerformanceOpti
     }
 
     @Override
-    public Map<String, Object> getManagerPerformanceDetail(String mediaType) {
+    //TODO --优先华北
+    public Map<String, Object> getManagerPerformanceDetail(String mediaType, String orgCode) {
         Map<String, Object> result = new HashMap<>();
         //获取经理相关信息
         //查询优化师系统设置数据
-        OptimizerConfig config = optimizerConfigService.getEnabledConfigByMediaType(mediaType);
+        OptimizerConfig config = optimizerConfigService.getEnabledConfigByMediaType(mediaType, orgCode);
         //2: 查询媒体季度任务完成情况
         OptimizerCostDetailVO totalCostVo = performanceService.getOptimizerTotalCost(mediaType);
         result.put("totalCost", totalCostVo.getTotalCost().toString());
@@ -122,6 +266,8 @@ public class PerformanceOptimizerServiceImpl extends ServiceImpl<PerformanceOpti
         return result;
     }
 
+    @Autowired
+    private IPerformanceConfigService performanceConfigService;
     private BigDecimal getTotalRoyalty(OptimizerConfig config, OptimizerCostDetailVO vo, OptimizerCostDetailVO quarterCost) {
         BigDecimal royalty = BigDecimal.ZERO;
         //个人总消耗
@@ -135,11 +281,15 @@ public class PerformanceOptimizerServiceImpl extends ServiceImpl<PerformanceOpti
             return royalty;
         }
         //季度任务未完成
-        if (totalCost.compareTo(mediaTask) < 0) {
+        if (quarterCost.getTotalCost().compareTo(mediaTask) < 0) {
+            return totalCost.multiply(config.getMediaTaskNoFinishRate()).divide(new BigDecimal("1000")).setScale(2, RoundingMode.HALF_UP);
+        }
+        PerformanceConfig performanceConfig = performanceConfigService.getNowConfig();
+        if (null != performanceConfig && performanceConfig.getMediaTaskRaise() == 1) {
+            return totalCost.multiply(config.getMediaTaskFinishRate()).divide(new BigDecimal("1000")).setScale(2, RoundingMode.HALF_UP);
+        } else {
             return totalCost.multiply(config.getMediaTaskNoFinishRate()).divide(new BigDecimal("1000")).setScale(2, RoundingMode.HALF_UP);
         }
-
-        return totalCost.multiply(config.getMediaTaskFinishRate()).divide(new BigDecimal("1000")).setScale(2, RoundingMode.HALF_UP);
     }
 
     private BigDecimal getRate(OptimizerConfig config, OptimizerCostDetailVO vo, OptimizerCostDetailVO quarterCost) {
@@ -152,13 +302,19 @@ public class PerformanceOptimizerServiceImpl extends ServiceImpl<PerformanceOpti
         BigDecimal mediaTask = config.getMediaTask();
         //个人任务未完成
         if (totalCost.compareTo(personalTask) < 0) {
-            return BigDecimal.ZERO;
+            return royalty;
         }
         //季度任务未完成
-        if (totalCost.compareTo(mediaTask) < 0) {
+        if (quarterCost.getTotalCost().compareTo(mediaTask) < 0) {
+            return config.getMediaTaskNoFinishRate().setScale(2, RoundingMode.HALF_UP);
+        }
+
+        PerformanceConfig performanceConfig = performanceConfigService.getNowConfig();
+        if (null != performanceConfig && performanceConfig.getMediaTaskRaise() == 1) {
+            return config.getMediaTaskFinishRate().setScale(2, RoundingMode.HALF_UP);
+        } else {
             return config.getMediaTaskNoFinishRate().setScale(2, RoundingMode.HALF_UP);
         }
 
-        return config.getMediaTaskFinishRate().setScale(2, RoundingMode.HALF_UP);
     }
 }

+ 96 - 0
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/vo/UserPerformanceDetailVO.java

@@ -0,0 +1,96 @@
+package cn.com.ctop.performanceappraisal.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class UserPerformanceDetailVO implements Serializable {
+    /**
+     * 姓名
+     */
+    private String realName;
+    /**
+     * 个人总消耗
+     */
+    private BigDecimal totalPersonalCost;
+    /**
+     * 快手总消耗
+     */
+    private BigDecimal kuaishouPersonalCost;
+    /**
+     * 头条总消耗
+     */
+    private BigDecimal bytedancePersonalCost;
+    /**
+     * 媒体总消耗
+     */
+    private BigDecimal totalMediaCost;
+    /**
+     * 快手媒体总消耗
+     */
+    private BigDecimal kuaishouMediaCost;
+    /**
+     * 头条总消耗
+     */
+    private BigDecimal bytedanceMediaCost;
+    /**
+     * 媒体任务
+     */
+    private BigDecimal totalMediaTask;
+    /**
+     * 快手媒体任务
+     */
+    private BigDecimal kuaishouMediaTask;
+    /**
+     * 头条媒体任务
+     */
+    private BigDecimal bytedanceMediaTask;
+    /**
+     * 个人季度任务
+     */
+    private BigDecimal totalPersonalTask;
+    /**
+     * 个人快手季度任务
+     */
+    private BigDecimal kuaishouPersonalTask;
+    /**
+     * 个人头条季度任务
+     */
+    private BigDecimal bytedancePersonalTask;
+    /**
+     * 年度
+     */
+    private String year;
+    /**
+     * 季度
+     */
+    private String quarter;
+
+
+    /**
+     * 个人提成比例
+     */
+    private String royaltyRatio;
+    /**
+     * 快手提成比例
+     */
+    private BigDecimal kuaishouRoyaltyRatio;
+    /**
+     * 头条提成比例
+     */
+    private BigDecimal bytedanceRoyaltyRatio;
+    /**
+     * 个人总绩效
+     */
+    private BigDecimal totalRoyalty;
+    /**
+     * 快手总绩效
+     */
+    private BigDecimal kuaishouRoyalty;
+    /**
+     * 头条总绩效
+     */
+    private BigDecimal bytedanceRoyalty;
+}

+ 1 - 0
pom.xml

@@ -25,6 +25,7 @@
         <module>module-ctop</module>
         <module>performance-appraisal</module>
         <module>jeecg-boot-module-system</module>
+        <module>moudule-eureca</module>
 
     </modules>