浏览代码

Merge branch 'dev-cyb'

Cyangbin 2 年之前
父节点
当前提交
90386b24c1
共有 100 个文件被更改,包括 3141 次插入232 次删除
  1. 6 0
      .gitignore
  2. 2 2
      deploy.sh
  3. 68 18
      pom.xml
  4. 5 3
      src/main/java/com/galaxis/manatee/ManateeApplication.java
  5. 26 0
      src/main/java/com/galaxis/manatee/capsule/bo/ChuanyunObject.java
  6. 115 0
      src/main/java/com/galaxis/manatee/capsule/dto/ChuanyunProjectDTO.java
  7. 24 0
      src/main/java/com/galaxis/manatee/capsule/dto/ChuanyunProjectPrimaryKey.java
  8. 135 0
      src/main/java/com/galaxis/manatee/capsule/dto/ChuanyunReimbursementDTO.java
  9. 63 0
      src/main/java/com/galaxis/manatee/capsule/dto/ChuanyunReimbursementDetailDTO.java
  10. 61 0
      src/main/java/com/galaxis/manatee/capsule/dto/MaterialDTO.java
  11. 131 0
      src/main/java/com/galaxis/manatee/capsule/dto/PageDTO.java
  12. 22 0
      src/main/java/com/galaxis/manatee/capsule/dto/U9ResponseDTO.java
  13. 40 0
      src/main/java/com/galaxis/manatee/capsule/entity/Class.java
  14. 24 0
      src/main/java/com/galaxis/manatee/capsule/exception/AfterInsertVerifyException.java
  15. 22 0
      src/main/java/com/galaxis/manatee/capsule/exception/DaoMissingException.java
  16. 11 0
      src/main/java/com/galaxis/manatee/capsule/exception/ServerException.java
  17. 22 0
      src/main/java/com/galaxis/manatee/capsule/exception/SpecificationMissingException.java
  18. 77 0
      src/main/java/com/galaxis/manatee/capsule/util/BasicController.java
  19. 90 0
      src/main/java/com/galaxis/manatee/capsule/util/ColumnConditionBO.java
  20. 48 0
      src/main/java/com/galaxis/manatee/capsule/util/GalaxisIdGenerator.java
  21. 13 0
      src/main/java/com/galaxis/manatee/capsule/util/GalaxisRepository.java
  22. 15 0
      src/main/java/com/galaxis/manatee/capsule/util/IdGenerate.java
  23. 335 0
      src/main/java/com/galaxis/manatee/capsule/util/JpaConfigurator.java
  24. 125 0
      src/main/java/com/galaxis/manatee/capsule/util/SnowflakeIdGenerator.java
  25. 34 0
      src/main/java/com/galaxis/manatee/configuration/ScheduleConfig.java
  26. 49 0
      src/main/java/com/galaxis/manatee/configuration/SpringAsyncConfiguration.java
  27. 73 8
      src/main/java/com/galaxis/manatee/constant/ChuanYunConstant.java
  28. 1 1
      src/main/java/com/galaxis/manatee/controller/ClawController.java
  29. 0 3
      src/main/java/com/galaxis/manatee/controller/GetController.java
  30. 75 0
      src/main/java/com/galaxis/manatee/controller/ReimbursementController.java
  31. 252 11
      src/main/java/com/galaxis/manatee/controller/TestController.java
  32. 0 25
      src/main/java/com/galaxis/manatee/controller/UtilsController.java
  33. 116 9
      src/main/java/com/galaxis/manatee/controller/WorkHourController.java
  34. 32 0
      src/main/java/com/galaxis/manatee/controller/WorkHourOperateController.java
  35. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunAskForLeaveDao.java
  36. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunAttachmentDao.java
  37. 1 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunBudgetStatisticsDao.java
  38. 1 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunBusinessEntertainmentDao.java
  39. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunClientDao.java
  40. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunCompanyDao.java
  41. 1 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunCostCollectionDao.java
  42. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunCostDao.java
  43. 1 3
      src/main/java/com/galaxis/manatee/dao/ChuanyunDayWorkAbcDao.java
  44. 1 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunEquipmentInformDao.java
  45. 10 0
      src/main/java/com/galaxis/manatee/dao/ChuanyunEquipmentProcessDao.java
  46. 10 0
      src/main/java/com/galaxis/manatee/dao/ChuanyunFactoryLocationDao.java
  47. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunGroupProjectDao.java
  48. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunHolidaySalaryRuleDao.java
  49. 26 0
      src/main/java/com/galaxis/manatee/dao/ChuanyunImplCostDao.java
  50. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunLaborCostDao.java
  51. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunLogDao.java
  52. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunMaterialDao.java
  53. 1 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunMemberCostDao.java
  54. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunMonthLaborCostDao.java
  55. 19 0
      src/main/java/com/galaxis/manatee/dao/ChuanyunMonthLaborCostWgDao.java
  56. 1 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunOperationInformationDao.java
  57. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunPaymentReceiveActionDao.java
  58. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunPaymentReceiveDao.java
  59. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunPaymentReceiveInvoiceDao.java
  60. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunPaymentReceivePlanDao.java
  61. 1 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunPayrollDao.java
  62. 1 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunPersonDaysDao.java
  63. 1 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunProjectAttachmentDao.java
  64. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunProjectCashFlowDao.java
  65. 3 3
      src/main/java/com/galaxis/manatee/dao/ChuanyunProjectChangeDao.java
  66. 3 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunProjectCostDao.java
  67. 1 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunProjectTypeDao.java
  68. 1 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunReimbursementAmountDao.java
  69. 18 6
      src/main/java/com/galaxis/manatee/dao/ChuanyunReimbursementDao.java
  70. 1 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunReimbursementDetailDao.java
  71. 1 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunReimbursementItemsDao.java
  72. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunReimbursementSubjectDao.java
  73. 1 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunSaleContractDao.java
  74. 1 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunSaleContractDetailDao.java
  75. 16 3
      src/main/java/com/galaxis/manatee/dao/ChuanyunSelfCostDao.java
  76. 40 0
      src/main/java/com/galaxis/manatee/dao/ChuanyunSelfSubWorkHourDao.java
  77. 109 27
      src/main/java/com/galaxis/manatee/dao/ChuanyunSelfWorkHourDao.java
  78. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunSpecialProcedureDao.java
  79. 9 0
      src/main/java/com/galaxis/manatee/dao/ChuanyunSubProjectDao.java
  80. 96 0
      src/main/java/com/galaxis/manatee/dao/ChuanyunSubWeekHourDao.java
  81. 65 0
      src/main/java/com/galaxis/manatee/dao/ChuanyunSubWorkHourDao.java
  82. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunSupplierDao.java
  83. 7 3
      src/main/java/com/galaxis/manatee/dao/ChuanyunUserCompanyDao.java
  84. 1 1
      src/main/java/com/galaxis/manatee/dao/ChuanyunUserDao.java
  85. 1 2
      src/main/java/com/galaxis/manatee/dao/ChuanyunUserDepartmentNameDao.java
  86. 71 11
      src/main/java/com/galaxis/manatee/dao/ChuanyunWeekMemberHourDao.java
  87. 71 30
      src/main/java/com/galaxis/manatee/dao/ChuanyunWorkHourDao.java
  88. 1 1
      src/main/java/com/galaxis/manatee/dao/ProjectSwitchDao.java
  89. 1 1
      src/main/java/com/galaxis/manatee/entity/User.java
  90. 40 0
      src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ApiTestDO.java
  91. 2 2
      src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunAskForLeaveDO.java
  92. 1 1
      src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunBudgetStatisticsDO.java
  93. 70 0
      src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunBuildProject.java
  94. 40 0
      src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunDayLog.java
  95. 36 0
      src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunEquipmentProcess.java
  96. 49 0
      src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunFactoryLocation.java
  97. 27 7
      src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunGroupProjectDO.java
  98. 53 0
      src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunHistoryWorkGroupDO.java
  99. 99 0
      src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunImplCostDO.java
  100. 0 0
      src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunLogDO.java

+ 6 - 0
.gitignore

@@ -29,3 +29,9 @@ build/
 
 ### VS Code ###
 .vscode/
+
+### log info ###
+log/**
+/logs/**.**
+
+/src/test/**

+ 2 - 2
deploy.sh

@@ -9,7 +9,7 @@ ACTION=$1
 APP_START_TIMEOUT=20    # 等待应用启动的时间
 APP_PORT=8080          # 应用端口
 HEALTH_CHECK_URL=http://127.0.0.1:${APP_PORT}  # 应用健康检查URL
-APP_HOME=/home/admin/${APP_NAME} # 从package.tgz中解压出来的jar包放到这个目录下
+APP_HOME=/home/${APP_NAME} # 从package.tgz中解压出来的jar包放到这个目录下
 JAR_NAME=${APP_HOME}/manatee-1.0.jar # jar包的名字
 JAVA_OUT=${APP_HOME}/logs/start.log  #应用的启动日志
 
@@ -49,7 +49,7 @@ usage() {
 #}
 start_application() {
     echo "starting java process"
-    nohup java -jar ${JAR_NAME} > ${JAVA_OUT} 2>&1 &
+    nohup java -Xms256m -Xmx1024m -jar ${JAR_NAME} > ${JAVA_OUT} 2>&1 &
     echo "started java process"
 }
 

+ 68 - 18
pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.2.6.RELEASE</version>
+        <version>2.6.3</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>com.galaxis</groupId>
@@ -15,16 +15,36 @@
     <description>galaxis first step into cloud</description>
 
     <properties>
-        <java.version>14</java.version>
-        <spring-cloud.version>Hoxton.SR4</spring-cloud.version>
+        <java.version>17</java.version>
+        <spring-cloud.version>2021.0.1</spring-cloud.version>
     </properties>
 
-    <dependencies>
 
-<!--        <dependency>-->
-<!--            <groupId>org.springframework.cloud</groupId>-->
-<!--            <artifactId>spring-cloud-starter-config</artifactId>-->
-<!--        </dependency>-->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    <dependencies>
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-openfeign</artifactId>
@@ -40,20 +60,35 @@
         </dependency>
 
         <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>2.2.2</version>
+        </dependency>
+
+
+        <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi</artifactId>
             <version>3.13</version>
         </dependency>
+
         <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-ooxml</artifactId>
             <version>3.13</version>
         </dependency>
 
+<!--        <dependency>-->
+<!--            <groupId>org.projectlombok</groupId>-->
+<!--            <artifactId>lombok</artifactId>-->
+<!--            <optional>true</optional>-->
+<!--        </dependency>-->
+        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
-            <optional>true</optional>
+            <version>1.18.24</version>
+            <scope>provided</scope>
         </dependency>
 
         <dependency>
@@ -94,12 +129,6 @@
         </dependency>
 
         <dependency>
-            <groupId>com.dingtalk.open</groupId>
-            <artifactId>taobao-sdk-java</artifactId>
-            <version>1.0</version>
-        </dependency>
-
-        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-security</artifactId>
         </dependency>
@@ -117,9 +146,15 @@
         </dependency>
 
         <dependency>
-            <groupId>com.galaxis</groupId>
-            <artifactId>capsule</artifactId>
-            <version>1.0-SNAPSHOT</version>
+            <groupId>com.aliyun</groupId>
+            <artifactId>alibaba-dingtalk-service-sdk</artifactId>
+            <version>2.0.0</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>activation</artifactId>
+                    <groupId>javax.activation</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -144,6 +179,21 @@
     </dependencyManagement>
 
     <build>
+        <resources>
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                </includes>
+            </resource>
+            <resource>
+                <directory>src/main/resources</directory>
+                <includes>
+                    <include>**/*.*</include>
+                </includes>
+            </resource>
+        </resources>
+
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>

+ 5 - 3
src/main/java/com/galaxis/manatee/ManateeApplication.java

@@ -1,9 +1,9 @@
 package com.galaxis.manatee;
 
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.openfeign.EnableFeignClients;
-import org.springframework.scheduling.annotation.EnableScheduling;
 
 import javax.annotation.PostConstruct;
 import java.util.TimeZone;
@@ -12,14 +12,16 @@ import java.util.TimeZone;
  * @author zcj
  * @version 0.1
  */
-@EnableScheduling
+// TODO 记得放开
+//@EnableScheduling
 @SpringBootApplication
 @EnableFeignClients
+@MapperScan("com.galaxis.manatee.mapper")
 public class ManateeApplication {
 
     @PostConstruct
     void started() {
-        TimeZone.setDefault(TimeZone.getTimeZone("UTC+8"));
+        TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
     }
 
     public static void main(String[] args) {

+ 26 - 0
src/main/java/com/galaxis/manatee/capsule/bo/ChuanyunObject.java

@@ -0,0 +1,26 @@
+package com.galaxis.manatee.capsule.bo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * 用于记录氚云中人员、部门信息Id信息对象
+ * @author zcj
+ * @version 0.1
+ * @date 2020/4/13 1:31 下午
+ */
+@Data
+public class ChuanyunObject {
+
+    /**
+     * 主键
+     */
+    @JsonProperty("ObjectId")
+    private String objectId;
+
+    /**
+     * 名称
+     */
+    @JsonProperty("Name")
+    private String name;
+}

+ 115 - 0
src/main/java/com/galaxis/manatee/capsule/dto/ChuanyunProjectDTO.java

@@ -0,0 +1,115 @@
+package com.galaxis.manatee.capsule.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/4/8 2:04 下午
+ */
+@Data
+public class ChuanyunProjectDTO {
+
+//    /**
+//     * 主键
+//     */
+//    private String projectId;
+
+//    /**
+//     * 项目编号
+//     */
+//    private String projectCode;
+
+    /**
+     * 联合主键信息
+     */
+    private ChuanyunProjectPrimaryKey chuanyunProjectPrimaryKey;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 项目类型git
+     */
+    private String projectTypeCode;
+
+    /**
+     * 下发组织机构编码
+     */
+    private String organizationCode;
+
+    /**
+     * 项目签约日期
+     */
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    private LocalDateTime projectSignDateTime;
+
+    /**
+     * 客户ID
+     */
+    private String customerCode;
+
+    /**
+     * 应用场景
+     * 多场景间用 ;隔开
+     */
+    private String scene;
+
+    /**
+     * 部门编号
+     */
+    private String department;
+
+    /**
+     * 项目经理(工号)
+     */
+    private String projectManager;
+
+    /**
+     * 项目所有人(工号)
+     */
+    private String projectOwner;
+
+    /**
+     * 计划开始时间
+     */
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    private LocalDateTime planStartDate;
+
+    /**
+     * 计划结束时间
+     */
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    private LocalDateTime planEndDate;
+
+    /**
+     * 默认支出类型编码
+     */
+    private String defaultExpenseCode;
+
+    /**
+     * 当前阶段编码
+     */
+    private String stage;
+
+    /**
+     * 业务来源
+     */
+    private String businessSource;
+
+    /**
+     * 业务类型
+     */
+    private String businessType;
+}

+ 24 - 0
src/main/java/com/galaxis/manatee/capsule/dto/ChuanyunProjectPrimaryKey.java

@@ -0,0 +1,24 @@
+package com.galaxis.manatee.capsule.dto;
+
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/4/23 10:13 下午
+ */
+@Data
+public class ChuanyunProjectPrimaryKey implements Serializable {
+    /**
+     * 项目编码
+     */
+    protected String projectCode;
+
+    /**
+     * 所有组织编码
+     */
+    protected String ownerOrganizationCode;
+}

+ 135 - 0
src/main/java/com/galaxis/manatee/capsule/dto/ChuanyunReimbursementDTO.java

@@ -0,0 +1,135 @@
+package com.galaxis.manatee.capsule.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/4/28 5:44 下午
+ */
+@Data
+public class ChuanyunReimbursementDTO {
+
+    /**
+     * 主键
+     */
+    private String objectId;
+
+    /**
+     * 公司编码
+     *
+     */
+    private String reimburseUserCompanyCode;
+
+    /**
+     * 对公/对私
+     */
+    private String privateOrPublic;
+
+    /**
+     * 流水号
+     */
+    private String serialNumber;
+
+    /**
+     * 业务日期
+     */
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    private LocalDateTime businessDate;
+
+    /**
+     * 币种
+     */
+    private String currency;
+
+    /**
+     * 汇率
+     */
+    private BigDecimal exchangeRate;
+
+    /**
+     * 供应商编码
+     */
+    private String supplierCode;
+
+    /**
+     * 集团项目编码
+     */
+    private String groupProjectCode;
+
+    /**
+     * 报销人工号
+     */
+    private String reimburseUserCode;
+
+    /**
+     * 报销人成本中心编码
+     */
+    private String reimburseUserCostCode;
+
+    /**
+     * 核销方式
+     */
+    private String writeOffMethod;
+
+    /**
+     * 报销总金额
+     */
+    private BigDecimal amount;
+
+    /**
+     * 受益公司银行代码
+     */
+    private String beneficiaryBankCode;
+
+    /**
+     * 受益公司银行账号
+     */
+    private String beneficiaryBankAccount;
+
+    /**
+     * 结算方式
+     */
+    private String settlementMethod;
+
+    /**
+     * 报销原因
+     */
+    private String reason;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    private LocalDateTime createdTime;
+
+    /**
+     * u9传入标识
+     */
+    private Integer erpFlag;
+
+    /**
+     * 受益成本中心编码
+     */
+    private String beneficiaryCostCode;
+
+    /**
+     * 报销明细
+     */
+    private List<ChuanyunReimbursementDetailDTO> detailList;
+}

+ 63 - 0
src/main/java/com/galaxis/manatee/capsule/dto/ChuanyunReimbursementDetailDTO.java

@@ -0,0 +1,63 @@
+package com.galaxis.manatee.capsule.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/4/28 5:50 下午
+ */
+@Data
+public class ChuanyunReimbursementDetailDTO {
+    /**
+     * 税率
+     */
+    private BigDecimal taxRate;
+
+    /**
+     * 财务实核金额
+     */
+    private BigDecimal confirmAmount;
+
+    /**
+     * 财务实核税额
+     */
+    private BigDecimal confirmTax;
+
+    /**
+     * 实核未税金额
+     */
+    private BigDecimal confirmAmountWithoutTax;
+
+    /**
+     * 报销科目
+     */
+    private String reimburseSubjectName;
+
+    /**
+     * 成本费用项目
+     * 报销科目档案的U9成本费用项目栏位
+     */
+    private String reimburseSubjectCode;
+
+    /**
+     * 公司编码
+     */
+    private String reimburseUserCompanyCode;
+
+    /**
+     * 报销人成本中心编码
+     */
+    private String reimburseUserCostCode;
+
+    /**
+     * 项目编码
+     */
+    private String groupProjectCode;
+    /**
+     * 备注
+     */
+    private String content;
+}

+ 61 - 0
src/main/java/com/galaxis/manatee/capsule/dto/MaterialDTO.java

@@ -0,0 +1,61 @@
+package com.galaxis.manatee.capsule.dto;
+
+import lombok.Data;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/4/15 10:37 上午
+ */
+@Data
+public class MaterialDTO {
+    /**
+     * 物料编号
+     */
+    private String code;
+
+    /**
+     * 品名
+     */
+    private String name;
+
+    /**
+     * 品名
+     */
+    private String title;
+
+    /**
+     * 名称(标签)
+     */
+    private String label;
+
+    /**
+     * 型号
+     */
+    private String model;
+
+    /**
+     * 品牌
+     */
+    private String brand;
+
+    /**
+     * 版本
+     */
+    private String version;
+
+    /**
+     * 库存分类
+     */
+    private String type;
+
+    /**
+     * 形态属性
+     */
+    private String property;
+
+    /**
+     * 组织编码
+     */
+    private String organizationCode;
+}

+ 131 - 0
src/main/java/com/galaxis/manatee/capsule/dto/PageDTO.java

@@ -0,0 +1,131 @@
+package com.galaxis.manatee.capsule.dto;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.springframework.data.domain.*;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.function.Function;
+
+/**
+ * 实现Page接口的分页对象
+ * @author zcj
+ * @param <T>
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class PageDTO<T> implements Page<T> {
+    private final Page<T> delegate;
+
+    public PageDTO(
+            @JsonProperty("content") List<T> content,
+            @JsonProperty("page")int number,
+            @JsonProperty("size") int size,
+            @JsonProperty("totalElements") long totalElements){
+        delegate = new PageImpl<>(content, PageRequest.of(number, size), totalElements);
+    }
+
+    @Override
+    public String toString() {
+        final StringBuilder sb = new StringBuilder("{");
+        sb.append("\"delegate\":")
+                .append(delegate);
+        sb.append('}');
+        return sb.toString();
+    }
+
+    @JsonProperty
+    @Override
+    public int getTotalPages() {
+        return delegate.getTotalPages();
+    }
+
+    @JsonProperty
+    @Override
+    public long getTotalElements() {
+        return delegate.getTotalElements();
+    }
+
+    @JsonProperty("page")
+    @Override
+    public int getNumber() {
+        return delegate.getNumber();
+    }
+
+    @JsonProperty
+    @Override
+    public int getSize() {
+        return delegate.getSize();
+    }
+
+    @JsonProperty
+    @Override
+    public int getNumberOfElements() {
+        return delegate.getNumberOfElements();
+    }
+
+    @JsonProperty
+    @Override
+    public List<T> getContent() {
+        return delegate.getContent();
+    }
+
+    @JsonProperty
+    @Override
+    public boolean hasContent() {
+        return delegate.hasContent();
+    }
+
+    @JsonIgnore
+    @Override
+    public Sort getSort() {
+        return delegate.getSort();
+    }
+
+    @JsonProperty
+    @Override
+    public boolean isFirst() {
+        return delegate.isFirst();
+    }
+
+    @JsonProperty
+    @Override
+    public boolean isLast() {
+        return delegate.isLast();
+    }
+
+    @JsonIgnore
+    @Override
+    public boolean hasNext() {
+        return delegate.hasNext();
+    }
+
+    @JsonIgnore
+    @Override
+    public boolean hasPrevious() {
+        return delegate.hasPrevious();
+    }
+
+    @JsonIgnore
+    @Override
+    public Pageable nextPageable() {
+        return delegate.nextPageable();
+    }
+    @JsonIgnore
+    @Override
+    public Pageable previousPageable() {
+        return delegate.previousPageable();
+    }
+    @JsonIgnore
+    @Override
+    public <S> Page<S> map(Function<? super T, ? extends S> converter) {
+        return delegate.map(converter);
+    }
+
+    @JsonIgnore
+    @Override
+    public Iterator<T> iterator() {
+        return delegate.iterator();
+    }
+}

+ 22 - 0
src/main/java/com/galaxis/manatee/capsule/dto/U9ResponseDTO.java

@@ -0,0 +1,22 @@
+package com.galaxis.manatee.capsule.dto;
+
+import lombok.Data;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/4/28 7:04 下午
+ */
+@Data
+public class U9ResponseDTO {
+
+    /**
+     * 错误名称
+     */
+    private String errorMessage;
+
+    /**
+     * 错误级别
+     */
+    private String errorLevel;
+}

+ 40 - 0
src/main/java/com/galaxis/manatee/capsule/entity/Class.java

@@ -0,0 +1,40 @@
+package com.galaxis.manatee.capsule.entity;
+
+import lombok.Getter;
+
+/**
+ * @author zcj
+ * @version 1.0
+ */
+@Getter
+public enum Class{
+
+    /**
+     * 字符串
+     */
+    String,
+    /**
+     * 整形
+     */
+    Integer,
+    /**
+     * 长整形
+     */
+    Long,
+    /**
+     * 时间
+     */
+    LocalDateTime,
+    /**
+     * bigDecimal
+     */
+    BigDecimal,
+    /**
+     * bool类型
+     */
+    Boolean,
+    /**
+     * 时间类型
+     */
+    Date
+}

+ 24 - 0
src/main/java/com/galaxis/manatee/capsule/exception/AfterInsertVerifyException.java

@@ -0,0 +1,24 @@
+package com.galaxis.manatee.capsule.exception;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/4/28 7:08 下午
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class AfterInsertVerifyException extends Exception{
+
+    /**
+     * 错误信息
+     */
+    private String errorMessage;
+
+    /**
+     * 错误级别
+     */
+    private String errorLevel;
+}

+ 22 - 0
src/main/java/com/galaxis/manatee/capsule/exception/DaoMissingException.java

@@ -0,0 +1,22 @@
+package com.galaxis.manatee.capsule.exception;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/4/8 11:48 上午
+ */
+public class DaoMissingException extends Exception {
+    /**
+     * 默认构造函数
+     */
+    public DaoMissingException() {
+    }
+
+    /**
+     * 缺少dao对象异常
+     * @param message   异常信息
+     */
+    public DaoMissingException(String message) {
+        super(message);
+    }
+}

+ 11 - 0
src/main/java/com/galaxis/manatee/capsule/exception/ServerException.java

@@ -0,0 +1,11 @@
+package com.galaxis.manatee.capsule.exception;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/4/8 3:49 下午
+ */
+public class ServerException extends Exception{
+    public ServerException() {
+    }
+}

+ 22 - 0
src/main/java/com/galaxis/manatee/capsule/exception/SpecificationMissingException.java

@@ -0,0 +1,22 @@
+package com.galaxis.manatee.capsule.exception;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/4/8 11:54 上午
+ */
+public class SpecificationMissingException extends Exception {
+    /**
+     * 默认构造函数
+     */
+    public SpecificationMissingException() {
+    }
+
+    /**
+     * 查询信息缺失异常
+     * @param message   缺失消息
+     */
+    public SpecificationMissingException(String message) {
+        super(message);
+    }
+}

+ 77 - 0
src/main/java/com/galaxis/manatee/capsule/util/BasicController.java

@@ -0,0 +1,77 @@
+package com.galaxis.manatee.capsule.util;
+
+import com.galaxis.manatee.capsule.exception.DaoMissingException;
+import com.galaxis.manatee.capsule.exception.SpecificationMissingException;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Map;
+
+/**
+ * @author zcj
+ * @version 0.1
+ */
+public class BasicController<T,K> extends JpaConfigurator<T,K> {
+
+    /**
+     * 注入dao对象
+     * @param galaxisRepository  dao对象
+     */
+    public void setDao(GalaxisRepository<T,K> galaxisRepository){
+        this.dao=galaxisRepository;
+    }
+
+    /**
+     * 保存对象实例
+     * @param t 待保存对象
+     * @return  保存请求结果
+     * @throws  DaoMissingException dao对象缺失的异常
+     */
+    @PostMapping("/save")
+    public ResponseEntity<T> save(@RequestBody T t) throws DaoMissingException {
+        if(this.dao==null){
+            throw new DaoMissingException();
+        }
+        if (t==null){
+            throw new IllegalArgumentException();
+        }
+        T result=dao.save(t);
+        try {
+            return new ResponseEntity<>(result, HttpStatus.OK);
+        }catch (IllegalArgumentException illegalArgumentException){
+            illegalArgumentException.printStackTrace();
+            return new ResponseEntity<>(HttpStatus.SERVICE_UNAVAILABLE);
+        }
+    }
+
+    /**
+     * 分页查询
+     *
+     * @param parameters 查询条件
+     *                   key为xxxx_yy,xxxx为查询参数名,yy为查询条件,如eq,lk等.
+     *                   例如:   status_eq,CREATE 表示查询status字段equal查询,值为CREATE
+     *                   property_lik,%234% 表示查询property字段like查询,值为%234%
+     *                   value为yy,yy,yy为参数的值,多个值中间用","分隔
+     * @return 分页数据
+     */
+    @GetMapping("/findAllByParameters")
+    public Page<T> findAllByParams(@RequestParam Map<String, String> parameters) throws DaoMissingException, SpecificationMissingException {
+        if(this.dao==null){
+            throw new DaoMissingException();
+        }
+        Specification<T> specification = this.getSpecification(parameters);
+        Pageable pageable=this.getPageable(parameters);
+        if (specification==null||pageable==null){
+            throw new SpecificationMissingException();
+        }else{
+            return dao.findAll(specification, pageable);
+        }
+    }
+}

+ 90 - 0
src/main/java/com/galaxis/manatee/capsule/util/ColumnConditionBO.java

@@ -0,0 +1,90 @@
+package com.galaxis.manatee.capsule.util;
+
+import lombok.Data;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/4/8 11:28 上午
+ */
+@Data
+public class ColumnConditionBO {
+    /**
+     * 查询字段
+     */
+    private String column;
+    /**
+     * 查询条件
+     */
+    private Condition condition;
+
+    public enum Condition {
+        /**
+         * 等于
+         */
+        eq,
+        /**
+         * like
+         */
+        lk,
+        /**
+         * start with
+         * xxxxx%
+         */
+        sw,
+        /**
+         * end with
+         * %xxxx
+         */
+        ew,
+        /**
+         * containing
+         * %xxxxxx%
+         */
+        containing,
+        /**
+         * between
+         */
+        between,
+        /**
+         * in
+         */
+        in,
+        /**
+         * greater equal
+         */
+        ge,
+        /**
+         * great than
+         */
+        gt,
+        /**
+         * less equal
+         */
+        le,
+        /**
+         * less than
+         */
+        lt,
+        /**
+         * isNull
+         */
+        isNull,
+        /**
+         * isNotNull
+         */
+        isNotNull,
+        /**
+         * 不等于
+         */
+        not
+    }
+
+    public static ColumnConditionBO parse(String s) {
+        ColumnConditionBO columnConditionBO = new ColumnConditionBO();
+        String[] strings = s.split("_");
+        columnConditionBO.setColumn(strings[0]);
+        columnConditionBO.setCondition(Condition.valueOf(strings[1]));
+        return columnConditionBO;
+    }
+}

+ 48 - 0
src/main/java/com/galaxis/manatee/capsule/util/GalaxisIdGenerator.java

@@ -0,0 +1,48 @@
+package com.galaxis.manatee.capsule.util;
+
+import org.hibernate.HibernateException;
+import org.hibernate.MappingException;
+import org.hibernate.engine.spi.SessionImplementor;
+import org.hibernate.engine.spi.SharedSessionContractImplementor;
+import org.hibernate.id.Configurable;
+import org.hibernate.id.IdentifierGenerator;
+import org.hibernate.service.ServiceRegistry;
+import org.hibernate.type.Type;
+
+import java.io.Serializable;
+import java.net.InetAddress;
+import java.util.Properties;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/1/8 11:53 下午
+ */
+public class GalaxisIdGenerator implements Configurable, IdentifierGenerator {
+    /** 数据中心ID(0~31) */
+    private long dataCenterId = 0L;
+
+    @Override
+    public void configure(Type type, Properties params, ServiceRegistry serviceRegistry) throws MappingException {
+        try {
+            InetAddress addr = InetAddress.getLocalHost();
+            String[] a=addr.getHostName().split("-");
+            dataCenterId = Long.parseLong(a[a.length-1]);
+        }
+        catch (Exception e){
+            //10位长度最大值1023,这里简单写为1000,相信不会用到
+            dataCenterId =1000L;
+        }
+    }
+
+    public Serializable generate(SessionImplementor session, Object o) throws HibernateException {
+        SnowflakeIdGenerator snowflakeIdWorker = SnowflakeIdGenerator.getSnowflakeIdGenerator(this.dataCenterId);
+        return snowflakeIdWorker.nextId();
+    }
+
+    @Override
+    public Serializable generate(SharedSessionContractImplementor sharedSessionContractImplementor, Object o) throws HibernateException {
+        SnowflakeIdGenerator snowflakeIdWorker = SnowflakeIdGenerator.getSnowflakeIdGenerator(this.dataCenterId);
+        return snowflakeIdWorker.nextId();
+    }
+}

+ 13 - 0
src/main/java/com/galaxis/manatee/capsule/util/GalaxisRepository.java

@@ -0,0 +1,13 @@
+package com.galaxis.manatee.capsule.util;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.NoRepositoryBean;
+
+/**
+ * @author zcj
+ * @version 0.1
+ */
+@NoRepositoryBean
+public interface GalaxisRepository<T,ID> extends JpaRepository<T, ID>, JpaSpecificationExecutor<T> {
+}

+ 15 - 0
src/main/java/com/galaxis/manatee/capsule/util/IdGenerate.java

@@ -0,0 +1,15 @@
+package com.galaxis.manatee.capsule.util;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/1/8 11:39 下午
+ */
+public interface IdGenerate<T> {
+
+    /**
+     * 下一个id
+     * @return 下一个id
+     */
+    T nextId();
+}

+ 335 - 0
src/main/java/com/galaxis/manatee/capsule/util/JpaConfigurator.java

@@ -0,0 +1,335 @@
+package com.galaxis.manatee.capsule.util;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.lang.reflect.Field;
+import java.lang.reflect.ParameterizedType;
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author zcj
+ * @version 0.1
+ */
+@Slf4j
+public class JpaConfigurator<T,K> {
+
+    protected GalaxisRepository<T,K> dao;
+
+    private Class clazz;
+
+    /**
+     * 根据map参数构造specification查询条件
+     * @param map   map参数
+     * @return  查询条件
+     */
+    protected Specification<T> getSpecification(Map<String,String> map){
+        return  ((root, query, criteriaBuilder) -> {
+            List<Predicate> predicateList = new ArrayList<>();
+            map.forEach((k, v) -> {
+                try {
+                    ColumnConditionBO columnConditionBO = ColumnConditionBO.parse(k);
+                    Predicate predicate=this.getPredicate(columnConditionBO, v, criteriaBuilder, root);
+                    if(predicate==null){
+                        log.warn(k+"查询条件错误");
+                    }else{
+                        predicateList.add(predicate);
+                    }
+                } catch (Exception e) {
+                    log.error(e.getMessage());
+                }
+            });
+            Predicate[] p = new Predicate[predicateList.size()];
+            return criteriaBuilder.and(predicateList.toArray(p));
+        });
+    }
+
+    /**
+     * @param map map参数
+     *            page属性为页码从1开始;
+     *            size属性为页码大小,默认20
+     *            sort属性为排序字段, ASC,XXXX;DESC,YYYY
+     *
+     * @return 分页对象
+     */
+    protected Pageable getPageable(Map<String, String> map) {
+        int page;
+        int size;
+        try {
+            page = Integer.parseInt(map.get("page")) - 1;
+            size = Integer.parseInt(map.get("size"));
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            page = 0;
+            size = 20;
+        }
+        String sortString = map.get("sort");
+        if (null == sortString) {
+            return PageRequest.of(page, size);
+        } else {
+            List<Sort.Order> orderList=new ArrayList<>();
+            String[] columnAndDirections=sortString.split(";");
+            for (String andDirection : columnAndDirections) {
+                String[] columnAndDirection = andDirection.split(",");
+                Sort.Order order = new Sort.Order(Sort.Direction.valueOf(columnAndDirection[1]), columnAndDirection[0]);
+                orderList.add(order);
+            }
+            return PageRequest.of(page, size, Sort.by(orderList));
+        }
+    }
+
+    /**
+     * 获取查询
+     *
+     * @param columnConditionBO 字段、条件业务类
+     * @param value             查询值
+     * @param criteriaBuilder   cb
+     * @param root              root
+     * @return 查询条件
+     */
+    private Predicate getPredicate(ColumnConditionBO columnConditionBO, String value, CriteriaBuilder criteriaBuilder, Root<T> root) throws NoSuchFieldException {
+        //获取查询字段的类型,fieldClass为查询类中字段的类型,classType为根据类型定义的枚举类
+        clazz = (Class) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
+        while (clazz!=null){
+            try{
+                //对于子类无法获取父类的私有属性,需要递归向上获取父类的私有属性
+                Field field = this.getDeclaredField(clazz, columnConditionBO.getColumn());
+                Class fieldClass = field.getType();
+                //判断fieldClass是否是枚举类
+                if (!fieldClass.isEnum()) {
+                    return basicPredicate(columnConditionBO, value, criteriaBuilder, root, fieldClass);
+                } else {
+                    return enumPredicate(columnConditionBO, value, criteriaBuilder, root, fieldClass.getEnumConstants());
+                }
+            }catch (Exception e){
+                log.error(e.getMessage());
+                clazz=clazz.getSuperclass();
+            }
+        }
+        String noSuchFieldException="根据查询参数获取类中的域失败";
+        log.warn(noSuchFieldException);
+        throw new NoSuchFieldException(noSuchFieldException);
+    }
+
+    /**
+     * 基础类predicate生成方法
+     *
+     * @param columnConditionBO 参数条件
+     * @param value             查询条件值
+     * @param criteriaBuilder   构建起
+     * @param root              root
+     * @param fieldClass        fieldClass
+     * @return predicate
+     */
+    private Predicate basicPredicate(ColumnConditionBO columnConditionBO, String value, CriteriaBuilder criteriaBuilder, Root<T> root, Class fieldClass) {
+        com.galaxis.manatee.capsule.entity.Class classType = com.galaxis.manatee.capsule.entity.Class.valueOf(fieldClass.getSimpleName());
+        switch (columnConditionBO.getCondition()) {
+            case lk: {
+                return criteriaBuilder.like(root.get(columnConditionBO.getColumn()), value);
+            }case sw: {
+                return criteriaBuilder.like(root.get(columnConditionBO.getColumn()), value + "%");
+            }case ew: {
+                return criteriaBuilder.like(root.get(columnConditionBO.getColumn()), "%" + value);
+            }case containing: {
+                return criteriaBuilder.like(root.get(columnConditionBO.getColumn()), "%" + value + "%");
+            }case eq: {
+                return criteriaBuilder.equal(root.get(columnConditionBO.getColumn()), value);
+            }case not:{
+                return criteriaBuilder.notEqual(root.get(columnConditionBO.getColumn()), value);
+            }case isNull:{
+                return criteriaBuilder.isNull(root.get(columnConditionBO.getColumn()));
+            }case isNotNull:{
+                return criteriaBuilder.isNotNull(root.get(columnConditionBO.getColumn()));
+            }case between: {
+                String[] minAndMax = value.split(",");
+                switch (classType) {
+                    case LocalDateTime: {
+                        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
+                        return criteriaBuilder.between(root.get(columnConditionBO.getColumn()), LocalDateTime.parse(minAndMax[0], dateTimeFormatter), LocalDateTime.parse(minAndMax[1], dateTimeFormatter));
+                    }case String: {
+                        return criteriaBuilder.between(root.get(columnConditionBO.getColumn()), minAndMax[0], minAndMax[1]);
+                    }case Integer: {
+                        return criteriaBuilder.between(root.get(columnConditionBO.getColumn()), Integer.parseInt(minAndMax[0]), Integer.parseInt(minAndMax[1]));
+                    }case Long: {
+                        return criteriaBuilder.between(root.get(columnConditionBO.getColumn()), Long.parseLong(minAndMax[0]), Long.parseLong(minAndMax[1]));
+                    }case BigDecimal: {
+                        return criteriaBuilder.between(root.get(columnConditionBO.getColumn()), new BigDecimal(minAndMax[0]), new BigDecimal(minAndMax[1]));
+                    }case Date:{
+                        SimpleDateFormat dateTimeFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+                        try {
+                            return criteriaBuilder.between(root.get(columnConditionBO.getColumn()), dateTimeFormatter.parse(minAndMax[0]),dateTimeFormatter.parse(minAndMax[1]));
+                        } catch (ParseException e) {
+                            e.printStackTrace();
+                        }
+                    }default:
+                        return null;
+                }
+            }case ge:{
+                switch (classType){
+                    case Date:{
+                        SimpleDateFormat dateTimeFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+                        try {
+                            return criteriaBuilder.greaterThanOrEqualTo(root.get(columnConditionBO.getColumn()), dateTimeFormatter.parse(value));
+                        } catch (ParseException e) {
+                            e.printStackTrace();
+                        }
+                    }default:
+                        return null;
+                }
+            }case gt:{
+                switch (classType){
+                    case Date:{
+                        SimpleDateFormat dateTimeFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+                        try {
+                            return criteriaBuilder.greaterThan(root.get(columnConditionBO.getColumn()), dateTimeFormatter.parse(value));
+                        } catch (ParseException e) {
+                            e.printStackTrace();
+                        }
+                    }default:
+                        return null;
+                }
+            }case le:{
+                switch (classType){
+                    case Date:{
+                        SimpleDateFormat dateTimeFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+                        try {
+                            return criteriaBuilder.lessThanOrEqualTo(root.get(columnConditionBO.getColumn()), dateTimeFormatter.parse(value));
+                        } catch (ParseException e) {
+                            e.printStackTrace();
+                        }
+                    }default:
+                        return null;
+                }
+            }case lt:{
+                switch (classType){
+                    case Date:{
+                        SimpleDateFormat dateTimeFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
+                        try {
+                            return criteriaBuilder.lessThan(root.get(columnConditionBO.getColumn()), dateTimeFormatter.parse(value));
+                        } catch (ParseException e) {
+                            e.printStackTrace();
+                        }
+                    }default:
+                        return null;
+                }
+            }case in: {
+                String[] inValues = value.split(",");
+                List<String> stringList = Arrays.asList(inValues);
+                switch (classType) {
+                    case LocalDateTime: {
+                        CriteriaBuilder.In<LocalDateTime> in = criteriaBuilder.in(root.get(columnConditionBO.getColumn()));
+                        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
+                        stringList.forEach(s -> in.value(LocalDateTime.parse(s, dateTimeFormatter)));
+                        return in;
+                    }case String: {
+                        CriteriaBuilder.In<String> in = criteriaBuilder.in(root.get(columnConditionBO.getColumn()));
+                        stringList.forEach(in::value);
+                        return in;
+                    }case Long: {
+                        CriteriaBuilder.In<Long> in = criteriaBuilder.in(root.get(columnConditionBO.getColumn()));
+                        stringList.forEach(s -> in.value(Long.parseLong(s)));
+                        return in;
+                    }case BigDecimal: {
+                        CriteriaBuilder.In<BigDecimal> in = criteriaBuilder.in(root.get(columnConditionBO.getColumn()));
+                        stringList.forEach(s -> in.value(new BigDecimal(s)));
+                        return in;
+                    }case Integer: {
+                        CriteriaBuilder.In<Integer> in = criteriaBuilder.in(root.get(columnConditionBO.getColumn()));
+                        stringList.forEach(s -> in.value(Integer.parseInt(s)));
+                        return in;
+                    }default: {
+                        return null;
+                    }
+                }
+            }default: {
+                return null;
+            }
+        }
+    }
+
+    /**
+     * enum类predicate生成方法
+     *
+     * @param columnConditionBO 参数条件
+     * @param value             查询值
+     * @param criteriaBuilder   构建起
+     * @param root              root
+     * @param ys                ys
+     * @return predicate
+     */
+    private <Y> Predicate enumPredicate(ColumnConditionBO columnConditionBO, String value, CriteriaBuilder criteriaBuilder, Root<T> root, Y[] ys) {
+        //枚举类型处理
+        switch (columnConditionBO.getCondition()){
+            case not:{
+                Predicate eq = null;
+                for (Y y : ys) {
+                    if (y.toString().equals(value)) {
+                        eq = criteriaBuilder.notEqual(root.get(columnConditionBO.getColumn()), y);
+                    }
+                }
+                return eq;
+            }case in:{
+                CriteriaBuilder.In<Y> in = criteriaBuilder.in(root.get(columnConditionBO.getColumn()));
+                Arrays.asList(value.split(",")).forEach(s -> Arrays.asList(ys).forEach(f -> {
+                    if (f.toString().equals(s)) {
+                        in.value(f);
+                    }
+                }));
+                return in;
+            }case eq:{
+                Predicate eq = null;
+                for (Y y : ys) {
+                    if (y.toString().equals(value)) {
+                        eq = criteriaBuilder.equal(root.get(columnConditionBO.getColumn()), y);
+                    }
+                }
+                return eq;
+            }default:{
+                return null;
+//                CriteriaBuilder.In<Y> in = criteriaBuilder.in(root.get(columnConditionBO.getColumn()));
+//                Arrays.asList(value.split(",")).forEach(s -> Arrays.asList(ys).forEach(f -> {
+//                    if (f.toString().equals(s)) {
+//                        in.value(f);
+//                    }
+//                }));
+//                return in;
+            }
+        }
+    }
+
+    /**
+     * 循环向上转型, 获取对象的 DeclaredField
+     * @param clazz : 子类对象类型
+     * @param fieldName : 父类中的属性名
+     * @return 父类中的属性对象
+     */
+
+    private Field getDeclaredField(Class<?> clazz, String fieldName){
+        Field field;
+        for(; clazz != Object.class ; clazz = clazz.getSuperclass()) {
+            try {
+                field = clazz.getDeclaredField(fieldName) ;
+                return field ;
+            } catch (Exception e) {
+                //这里甚么都不要做!并且这里的异常必须这样写,不能抛出去。
+                //如果这里的异常打印或者往外抛,则就不会执行clazz = clazz.getSuperclass(),最后就不会进入到父类中了
+
+            }
+        }
+        return null;
+    }
+}

+ 125 - 0
src/main/java/com/galaxis/manatee/capsule/util/SnowflakeIdGenerator.java

@@ -0,0 +1,125 @@
+package com.galaxis.manatee.capsule.util;
+
+/**
+ * 雪花算法生成Id
+ * @author zcj
+ * @version 0.1
+ * @date 2020/1/8 11:40 下午
+ */
+public class SnowflakeIdGenerator implements IdGenerate<Long> {
+    private static SnowflakeIdGenerator snowflakeIdWorker;
+
+    private static final Object LOOK = new Object();
+
+    /**
+     * 获取 snowflake
+     * @param dataCenterId 数据中心ID (0~31)
+     */
+    public static SnowflakeIdGenerator getSnowflakeIdGenerator(long dataCenterId){
+        if(null == snowflakeIdWorker){
+            snowflakeIdWorker=new SnowflakeIdGenerator(dataCenterId);
+        }
+        return snowflakeIdWorker;
+    }
+
+    // ==============================Fields===========================================
+
+    /** 数据标识id所占的位数 */
+    private final long dataCenterIdBits = 10L;
+
+    /** 数据中心ID(0~31) */
+    private long dataCenterId;
+
+    /** 毫秒内序列(0~4095) */
+    private long sequence = 0L;
+
+    /** 上次生成ID的时间截 */
+    private long lastTimestamp = -1L;
+
+    //==============================Constructors=====================================
+    /**
+     * 构造函数
+     * @param dataCenterId 数据中心ID (0~31)
+     */
+    private SnowflakeIdGenerator(long dataCenterId) {
+        // 支持的最大数据标识id,结果是31
+        long maxDataCenterId = ~(-1L << dataCenterIdBits);
+        if (dataCenterId > maxDataCenterId || dataCenterId < 0) {
+            throw new IllegalArgumentException(String.format("dataCenter Id can't be greater than %d or less than 0", maxDataCenterId));
+        }
+        this.dataCenterId = dataCenterId;
+    }
+
+    // ==============================Methods==========================================
+    /**
+     * 获得下一个ID (该方法是线程安全的)
+     * @return SnowflakeId
+     */
+    @Override
+    public synchronized Long nextId() {
+
+        synchronized (LOOK){
+            long timeStamp = timeGen();
+
+            //如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常
+            if (timeStamp < lastTimestamp) {
+                throw new RuntimeException(
+                        String.format("Clock moved backwards.  Refusing to generate id for %d milliseconds", lastTimestamp - timeStamp));
+            }
+
+            //如果是同一时间生成的,则进行毫秒内序列
+            // 序列在id中占的位数 */
+            long sequenceBits = 12L;
+            if (lastTimestamp == timeStamp) {
+                // 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) */
+                long sequenceMask = ~(-1L << sequenceBits);
+                sequence = (sequence + 1) & sequenceMask;
+                //毫秒内序列溢出
+                if (sequence == 0) {
+                    //阻塞到下一个毫秒,获得新的时间戳
+                    timeStamp = tilNextMillis(lastTimestamp);
+                }
+            }
+            //时间戳改变,毫秒内序列重置
+            else {
+                sequence = 0L;
+            }
+
+            //上次生成ID的时间截
+            lastTimestamp = timeStamp;
+
+            //移位并通过或运算拼到一起组成64位的ID
+            // 开始时间截 (2015-01-01)
+            long startTimeStamp = 1420041600000L;
+            // 时间截向左移22位(5+5+12) */
+            long timestampLeftShift = sequenceBits + dataCenterIdBits;
+            // 数据标识id向左移17位(12+5) */
+            return ((timeStamp - startTimeStamp) << timestampLeftShift)
+                    | (dataCenterId << sequenceBits)
+                    | sequence;
+        }
+
+
+    }
+
+    /**
+     * 阻塞到下一个毫秒,直到获得新的时间戳
+     * @param lastTimestamp 上次生成ID的时间截
+     * @return 当前时间戳
+     */
+    private long tilNextMillis(long lastTimestamp) {
+        long timestamp = timeGen();
+        while (timestamp <= lastTimestamp) {
+            timestamp = timeGen();
+        }
+        return timestamp;
+    }
+
+    /**
+     * 返回以毫秒为单位的当前时间
+     * @return 当前时间(毫秒)
+     */
+    private long timeGen() {
+        return System.currentTimeMillis();
+    }
+}

+ 34 - 0
src/main/java/com/galaxis/manatee/configuration/ScheduleConfig.java

@@ -0,0 +1,34 @@
+package com.galaxis.manatee.configuration;
+
+import com.galaxis.manatee.util.ThreadUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.SchedulingConfigurer;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
+import org.springframework.scheduling.config.ScheduledTaskRegistrar;
+
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.ThreadPoolExecutor;
+
+
+@Configuration
+public class ScheduleConfig implements SchedulingConfigurer {
+    private static final Logger log = LoggerFactory.getLogger(ScheduleConfig.class);
+
+    @Value("${schedule.pool.core:64}")
+    public int corePoolSize;
+
+    @Override
+    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
+        log.info("任务调度线程池的核心线程数: {}", corePoolSize);
+        ThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(
+                corePoolSize
+                , new ThreadUtil.PrefixThreadFactory("schedule-service-")
+                , new ThreadPoolExecutor.DiscardOldestPolicy());
+        // 设置线程池处理
+        taskRegistrar.setScheduler(executor);
+    }
+}

+ 49 - 0
src/main/java/com/galaxis/manatee/configuration/SpringAsyncConfiguration.java

@@ -1,7 +1,11 @@
 package com.galaxis.manatee.configuration;
 
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.ThreadPoolExecutor;
 
 /**
  * @author zcj
@@ -11,4 +15,49 @@ import org.springframework.scheduling.annotation.EnableAsync;
 @Configuration
 @EnableAsync
 public class SpringAsyncConfiguration {
+
+//    @Bean(name = "taskExecutor")
+//    public Executor taskExecutor()
+//    {
+//        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+//        return executor;
+//    }
+//
+//    @Bean(name = "updateExecutor")
+//    public Executor updateExecutor()
+//    {
+//        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+//        executor.setCorePoolSize(3);
+//        executor.setMaxPoolSize(50000);
+//        executor.setQueueCapacity(100);
+//        executor.setThreadNamePrefix("updateExecutor-");
+//        executor.initialize();
+//        return executor;
+//    }
+//
+//    @Bean(name = "standardExecutor")
+//    public Executor standardExecutor()
+//    {
+//        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+//        executor.setCorePoolSize(3);
+//        executor.setMaxPoolSize(50000);
+//        executor.setQueueCapacity(100);
+//        executor.setThreadNamePrefix("standardExecutor-");
+//        executor.initialize();
+//        return executor;
+//    }
+
+    @Bean("threadPoolTaskExecutor")
+    public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        executor.setCorePoolSize(8);
+        executor.setQueueCapacity(1024);
+        executor.setMaxPoolSize(64);
+        executor.setKeepAliveSeconds(600);
+        executor.setThreadNamePrefix("async-task-");
+        executor.setWaitForTasksToCompleteOnShutdown(true);
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
+        executor.initialize();
+        return executor;
+    }
 }

+ 73 - 8
src/main/java/com/galaxis/manatee/constant/ChuanYunConstant.java

@@ -3,7 +3,9 @@ package com.galaxis.manatee.constant;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.util.Arrays;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -17,42 +19,62 @@ public class ChuanYunConstant {
     /**
      * 审核结束
      */
-    public static final String FINISH="1";
+    public static final String FINISH = "1";
 
     /**
      * 审核流程中
      */
-    public static final String IN_PROCESS="2";
+    public static final String IN_PROCESS = "2";
 
     /**
      * 生产项目项目类型
      */
-    public static final String PRODUCTION_PROJECT="生产项目";
+    public static final String PRODUCTION_PROJECT = "生产项目";
+
+    /**
+     * 生产项目项目类型
+     */
+    public static final String SALES_PROJECT = "销售项目";
+
+    /**
+     * 生产项目项目类型
+     */
+    public static final String SALES_PROJECT_ID = "sales_project";
 
     /**
      * 生产项目类型项目号
      */
-    public static final String PRODUCTION_PROJECT_ID="production_project";
+    public static final String PRODUCTION_PROJECT_ID = "production_project";
+
+    /**
+     * 默认工作组id
+     */
+    public static final String DEFAULT_WORK_GROUP = "defaultWorkgroup";
+
+    /**
+     * 默认工作组名称
+     */
+    public static final String DEFAULT_WORK_GROUP_NAME= "默认";
 
     /**
      * 保存项目号、项目ObjectId的映射关系
      */
-    public static Map<String,String> PROJECT_CODE=new HashMap<>(2048);
+    public static Map<String, String> PROJECT_CODE = new HashMap<>(2048);
 
     /**
      * 保存用户ID和工号的映射关系
      */
-    public static Map<String,String> USER_EMPLOYEE_NUMBER=new HashMap<>(2048);
+    public static Map<String, String> USER_EMPLOYEE_NUMBER = new HashMap<>(2048);
 
     /**
      * 保存用户id和所属部门id
      */
-    public static Map<String,Object> USER_DEPARTMENT=new HashMap<>();
+    public static Map<String, Object> USER_DEPARTMENT = new HashMap<>();
 
     /**
      * 用户ID和BG关系
      */
-    public static Map<String,String> USER_BUSINESS_GROUP=new HashMap<>();
+    public static Map<String, String> USER_BUSINESS_GROUP = new HashMap<>();
 
     /**
      * 调用地址
@@ -83,4 +105,47 @@ public class ChuanYunConstant {
     public void setChuanYunInvokeUrl(String chuanYunInvokeUrl) {
         CHUAN_YUN_INVOKE_URL = chuanYunInvokeUrl;
     }
+
+
+    /**
+     * 实施项目
+     */
+    public static final String IMPLEMENTATION_PROJECT = "实施";
+
+    /**
+     * 维保项目
+     */
+    public static final String MAINTENANCE_PROJECT = "维保";
+
+    /**
+     * 研发二开项目
+     */
+    public static final String R_D_TWO_PROJECT = "研发二开";
+
+    /**
+     * 售后项目
+     */
+    public static final String AFTER_SALE_PROJECT = "售后";
+
+    /**
+     * 周填写方式
+     */
+    public static final String LOG_FILL_IN_WEEK = "每周填写";
+
+    /**
+     * 天填写方式
+     */
+    public static final String LOG_FILL_IN_DAY = "每天填写";
+
+    /**
+     * 每周工时
+     */
+    public static final String LOG_WEEKLY_HOURS = "每周工时";
+
+    public static final List<String> NEED_WORK_GROUP_PROJECT_TYPE = Arrays.asList(IMPLEMENTATION_PROJECT, MAINTENANCE_PROJECT, R_D_TWO_PROJECT, AFTER_SALE_PROJECT);
+    ;
+
+    public static final List<String> LOG_WEEK_TYPE = Arrays.asList(LOG_FILL_IN_WEEK, LOG_WEEKLY_HOURS);
+
+
 }

+ 1 - 1
src/main/java/com/galaxis/manatee/controller/ClawController.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.controller;
 
-import com.galaxis.capsule.dto.ChuanyunProjectDTO;
+import com.galaxis.manatee.capsule.dto.ChuanyunProjectDTO;
 import com.galaxis.manatee.manager.ClawFeign;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.domain.Page;

+ 0 - 3
src/main/java/com/galaxis/manatee/controller/GetController.java

@@ -8,10 +8,7 @@ import com.galaxis.manatee.service.ChuanyunService;
 import com.galaxis.manatee.task.ChuanyunBasicDataScheduledTask;
 import com.galaxis.manatee.task.ChuanyunHumanResourceScheduledTask;
 import com.galaxis.manatee.util.ExcelUtils;
-import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
-import net.sf.json.JSON;
-import net.sf.json.JSONObject;
 import org.springframework.http.ResponseEntity;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.web.bind.annotation.*;

+ 75 - 0
src/main/java/com/galaxis/manatee/controller/ReimbursementController.java

@@ -0,0 +1,75 @@
+package com.galaxis.manatee.controller;
+
+import com.galaxis.manatee.service.WorkGroupService;
+import com.galaxis.manatee.task.ChuanyunFinancialScheduledTask;
+import com.galaxis.manatee.task.U9InfoTask;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 日志工时controller
+ *
+ * @author zcj
+ * @version 0.1
+ * @date 2021/3/4 3:56 上午
+ */
+@Slf4j
+@RestController
+public class ReimbursementController {
+
+    private ChuanyunFinancialScheduledTask chuanyunFinancialScheduledTask;
+    private WorkGroupService workGroupService;
+    private U9InfoTask u9InfoTask;
+
+    @Autowired
+    public void setChuanyunFinancialScheduledTask(ChuanyunFinancialScheduledTask chuanyunFinancialScheduledTask) {
+        this.chuanyunFinancialScheduledTask = chuanyunFinancialScheduledTask;
+    }
+
+    @Autowired
+    public void setWorkGroupService(WorkGroupService workGroupService) {
+        this.workGroupService = workGroupService;
+    }
+
+    @Autowired
+    public void setU9InfoTask(U9InfoTask u9InfoTask) {
+        this.u9InfoTask = u9InfoTask;
+    }
+
+    /**
+     *
+     */
+    @GetMapping("/test/syncReimbursement")
+    public void syncReimbursement() {
+        chuanyunFinancialScheduledTask.syncReimbursement();
+    }
+
+    /**
+     * 汇算工作组人力成本
+     */
+    @GetMapping("/test/implAllCost")
+    public void implAllCost() {
+        workGroupService.implAllCost();
+    }
+
+    /**
+     * 上传工作组人力成本
+     */
+    @GetMapping("/test/pushToChuanyun")
+    public void pushCost() {
+        workGroupService.pushToChuanyun();
+    }
+
+    /**
+     * 保存工作组人力成本至数据库
+     */
+    @GetMapping("/test/saveLaborCostWg")
+    public void saveLaborCostWg() {
+        u9InfoTask.saveLaborCostWgTest();
+    }
+
+
+
+}

+ 252 - 11
src/main/java/com/galaxis/manatee/controller/TestController.java

@@ -1,33 +1,274 @@
 package com.galaxis.manatee.controller;
 
-import lombok.Data;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.galaxis.manatee.constant.ChuanYunConstant;
+import com.galaxis.manatee.dao.ChuanyunMemberCostDao;
+import com.galaxis.manatee.dao.ChuanyunSelfWorkHourDao;
+import com.galaxis.manatee.dao.ChuanyunUserCompanyDao;
+import com.galaxis.manatee.entity.chuanyun.data.object.*;
+import com.galaxis.manatee.entity.chuanyun.dto.*;
+import com.galaxis.manatee.manager.ChuanYunManager;
+import com.galaxis.manatee.service.*;
+import com.galaxis.manatee.task.ChuanyunBasicDataScheduledTask;
+import com.galaxis.manatee.util.TimeUtil;
+import lombok.extern.slf4j.Slf4j;
+import net.sf.json.util.JSONUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 /**
  * @author zcj
  * @version 0.1
  * @date 2020/10/27 11:39 上午
  */
+@Slf4j
 @RestController
 public class TestController {
 
+    @Autowired
+    private ChuanyunUserCompanyDao chuanyunUserCompanyDao;
+
+    private final LogUpdateService logUpdateService;
+    private final LogStandardService logStandardService;
+    private final LogCheckService logCheckService;
+    private final LogService logService;
+    private final LogDownloadService logDownloadService;
+
+    private final ProjectMemberService projectMemberService;
+
+    private final ChuanyunBasicDataScheduledTask chuanyunBasicDataScheduledTask;
+
+
+    public TestController(LogUpdateService logUpdateService, LogStandardService logStandardService, LogCheckService logCheckService, LogService logService, LogDownloadService logDownloadService, ProjectMemberService projectMemberService, ChuanyunBasicDataScheduledTask chuanyunBasicDataScheduledTask) {
+        this.logUpdateService = logUpdateService;
+        this.logStandardService = logStandardService;
+        this.logCheckService = logCheckService;
+        this.logService = logService;
+        this.logDownloadService = logDownloadService;
+        this.projectMemberService = projectMemberService;
+        this.chuanyunBasicDataScheduledTask = chuanyunBasicDataScheduledTask;
+    }
 
     @GetMapping("/test/helloGet")
-    public String testGet(){
+    public String testGet() {
         return "hello";
     }
 
-    @PostMapping("/test/helloPost")
-    public String testPost(@RequestBody PostObject postObject){
-        return "hello";
+    /**
+     * 标准化所有周工时
+     */
+    @GetMapping("/test/api/standardAllWeekMemberHour")
+    public void standardAllWeekMemberHour() {
+        logService.standardAllWeekMemberHour();
+    }
+
+    /**
+     * 标准化所有月工时
+     */
+    @GetMapping("/test/api/standardAllSelfCost")
+    public void standardAllSelfCost() {
+        logService.standardAllSelfCost();
+    }
+
+    /**
+     * 根据用户Id标准化日工时
+     *
+     * @param userId 用户Id
+     */
+    @GetMapping("/test/api/standardSelfWorkHourByUserId")
+    public void standardSelfWorkHourByUserId(@RequestParam("userId") String userId) {
+        logStandardService.standardSelfWorkHourByUserId(userId);
+    }
+
+    /**
+     * 根据用户Id标准化周工时
+     *
+     * @param userId 用户Id
+     */
+    @GetMapping("/test/api/standardWeekMemberHourByUserId")
+    public void standardWeekMemberHourByUserId(@RequestParam("userId") String userId) {
+        logStandardService.standardWeekMemberHourByUserId(userId);
+    }
+
+    /**
+     * 根据用户Id标准化月工时
+     *
+     * @param userId 用户Id
+     */
+    @GetMapping("/test/api/standardSelfCostByUserId")
+    public void standardSelfCostByUserId(@RequestParam("userId") String userId) {
+        logStandardService.standardSelfCostByUserId(userId);
+    }
+
+    /**
+     * 更新所有每天工时
+     */
+    @GetMapping("/test/api/updateAllChuanyunSelfWorkHour")
+    public void updateAllChuanyunSelfWorkHour() {
+        logService.updateAllChuanyunSelfWorkHour();
+    }
+
+    /**
+     * 更新所有每周工时
+     */
+    @GetMapping("/test/api/updateAllChuanyunWeekMemberHour")
+    public void updateAllChuanyunWeekMemberHour() {
+        logService.updateAllChuanyunWeekMemberHour();
+    }
+
+    /**
+     * 更新所有每月工时
+     */
+    @GetMapping("/test/api/updateAllChuanyunSelfCost")
+    public void updateAllChuanyunSelfCost() {
+        logService.updateAllChuanyunSelfCost();
+    }
+
+    /**
+     * 根据用户Id更新每天工时方法
+     *
+     * @param userId 用户Id
+     */
+    @GetMapping("/test/api/updateChuanyunSelfWorkHourListByUserId")
+    public void updateChuanyunSelfWorkHourListByUserId(@RequestParam("userId") String userId) {
+        logUpdateService.updateChuanyunSelfWorkHourListByUserId(userId);
+    }
+
+    /**
+     * @param userId 用户Id
+     */
+    @GetMapping("/test/api/updateChuanyunWeekMemberHourListByUserId")
+    public void updateChuanyunWeekMemberHourListByUserId(@RequestParam("userId") String userId) {
+        logUpdateService.updateChuanyunWeekMemberHourListByUserId(userId);
     }
 
-    @Data
-    class PostObject{
-        private String a;
-        private String b;
+    /**
+     * @param userId 用户Id
+     */
+    @GetMapping("/test/api/updateChuanyunSelfCostListByUserId")
+    public void updateChuanyunSelfCostListByUserId(@RequestParam("userId") String userId) {
+        logUpdateService.updateChuanyunSelfCostListByUserId(userId);
     }
+
+    /**
+     * 根据用户Id核查工时信息
+     *
+     * @param userId 用户Id
+     */
+    @GetMapping("/test/api/checkWorkHourByUserId")
+    public void checkWorkHourByUserId(@RequestParam("userId") String userId) {
+        long start = System.currentTimeMillis();
+        try {
+            //核对原始数据和标准化每日工时
+            logCheckService.checkDayWorkHour(userId);
+            logCheckService.checkWeekWorkHour(userId);
+            logCheckService.checkMonthWorkHour(userId);
+        } catch (Exception e) {
+            log.error(userId);
+            log.error(e.getMessage());
+        }
+        log.info("修改" + userId + "工时信息耗时" + (System.currentTimeMillis() - start));
+
+    }
+
+    /**
+     * 核查工时信息
+     *
+     * @param
+     */
+    @GetMapping("/test/api/checkWorkHour")
+    public void checkWorkHour() {
+        List<String> allUserIdList = chuanyunUserCompanyDao.findAll().stream().map(ChuanyunUserCompanyDO::getUserId).collect(Collectors.toList());
+        List<String> disUserIdList = allUserIdList.stream().distinct().collect(Collectors.toList());
+        logCheckService.checkDayWorkHourTimeAfter(disUserIdList, 90);
+        logCheckService.checkWeekWorkHour(disUserIdList);
+        logCheckService.checkMonthWorkHour(disUserIdList);
+
+    }
+
+    /**
+     * 下载工时日志
+     *
+     * @param
+     */
+    @GetMapping("/test/api/pullChuanyunLog")
+    public void pullChuanyunLog() {
+        logDownloadService.saveChuanyunLogDO(false);
+    }
+    /**
+     * 下载工时日志
+     *
+     * @param
+     */
+    @GetMapping("/test/api/pullAllChuanyunLog")
+    public void pullAllChuanyunLog() {
+        logDownloadService.saveAllLog();
+    }
+
+    /**
+     * 手动更新项目组成员
+     */
+    @GetMapping("/test/api/manual/updateProjectMember")
+    public void updateProjectMember() {
+        try {
+            projectMemberService.updateManagerMember("bfc36277-b201-4a80-b61c-e632bc664d82");
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 手动更新项目组成员
+     */
+    @GetMapping("/test/api/manual/updateSaleProjectMember")
+    public void updateSaleProjectMember() {
+        try {
+            projectMemberService.updateSaleMember("bfc36277-b201-4a80-b61c-e632bc664d82");
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 手动更新项目组成员
+     */
+    @GetMapping("/test/api/manual/getGroupProjectForSynchronizationManually")
+    public void getGroupProjectForSynchronizationManually() {
+
+        chuanyunBasicDataScheduledTask.getGroupProjectForSynchronizationManually();
+
+    }
+
+    /**
+     * 上传请假信息
+     */
+    @GetMapping("/test/pushAskForLeave")
+    public void pushAskForLeave() {
+
+        chuanyunBasicDataScheduledTask.pushAskForLeave();
+
+    }
+
+
 }
+
+

+ 0 - 25
src/main/java/com/galaxis/manatee/controller/UtilsController.java

@@ -1,25 +0,0 @@
-package com.galaxis.manatee.controller;
-
-import com.galaxis.capsule.util.SnowflakeIdGenerator;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * @author zcj
- * @version 0.1
- * @date 2020/1/8 11:59 下午
- */
-@RequestMapping("/utils")
-@RestController
-public class UtilsController {
-
-    /**
-     * 获取一个Id
-     * @return  id
-     */
-    @GetMapping("/useGalaxisIdGenerator")
-    public String useGalaxisIdGenerator(){
-        return SnowflakeIdGenerator.getSnowflakeIdGenerator(1L).nextId().toString();
-    }
-}

+ 116 - 9
src/main/java/com/galaxis/manatee/controller/WorkHourController.java

@@ -1,34 +1,56 @@
 package com.galaxis.manatee.controller;
 
+import com.galaxis.manatee.dao.ChuanyunUserCompanyDao;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunUserCompanyDO;
 import com.galaxis.manatee.service.LogCheckService;
+import com.galaxis.manatee.service.LogService;
+import com.galaxis.manatee.service.LogStandardService;
+import com.galaxis.manatee.service.LogUpdateService;
 import com.galaxis.manatee.task.WorkHourStatistics;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * 日志工时controller
+ *
  * @author zcj
  * @version 0.1
  * @date 2021/3/4 3:56 上午
  */
+@Slf4j
 @RestController
 public class WorkHourController {
 
+    @Autowired
+    private ChuanyunUserCompanyDao userCompanyDao;
+
     private final LogCheckService logCheckService;
+    private final LogStandardService logStandardService;
+    private final LogUpdateService logUpdateService;
     private final WorkHourStatistics workHourStatistics;
+    private final LogService logService;
 
-    public WorkHourController(LogCheckService logCheckService, WorkHourStatistics workHourStatistics) {
+    public WorkHourController(LogCheckService logCheckService, WorkHourStatistics workHourStatistics, LogStandardService logStandardService, LogUpdateService logUpdateService, LogService logService) {
         this.logCheckService = logCheckService;
         this.workHourStatistics = workHourStatistics;
+        this.logStandardService = logStandardService;
+        this.logUpdateService = logUpdateService;
+        this.logService = logService;
     }
 
     /**
      * 检查工时不一致数据
-     * @param userId    用户Id
+     *
+     * @param userId 用户Id
      */
     @GetMapping("/test/workHour/checkSelfWorkHour")
-    public void checkSelfWorkHour(@RequestParam("userId") String userId){
+    public void checkSelfWorkHour(@RequestParam("userId") String userId) {
         try {
             logCheckService.checkDayWorkHour(userId);
         } catch (Exception e) {
@@ -37,14 +59,99 @@ public class WorkHourController {
     }
 
     /**
-     * 更新全部工时信息
-     * @return  固定字符串
+     * 标准化全部工时信息
+     */
+    @GetMapping("/test/workHour/standardDayWorkHourApi")
+    public void standardDayWorkHourApi() {
+        workHourStatistics.standardDayWorkHour();
+    }
+
+    /**
+     * 上传日工时至氚云数据库
+     */
+    @GetMapping("/test/workHour/pullDayWorkHourApi")
+    public void pullDayWorkHourApi() {
+        workHourStatistics.pushDayWorkHour();
+    }
+
+    /**
+     * 标准化半年内工时信息
+     */
+    @GetMapping("/test/workHour/standardHalfYearDayWorkHourApi")
+    public void standardHalfYearDayWorkHourApi() {
+        log.info("手动标准化每日工时信息");
+        logStandardService.standardHalfYearWorkHour();
+    }
+
+    /**
+     * 标准化半年内工时信息
+     */
+    @GetMapping("/test/workHour/standardHalfYearDayWorkHourApiByUserId")
+    public void standardHalfYearDayWorkHourApiByUserId(@RequestParam("userId") String userId) {
+        logStandardService.standardHalfYearWorkHourByUserId(userId);
+    }
+
+    /**
+     * 上传半年内日工时至氚云数据库
+     */
+    @GetMapping("/test/workHour/pullHalfYearDayWorkHourApi")
+    public void pullHalfYearDayWorkHourApi() {
+        logService.updateHalfYearChuanyunSelfWorkHour();
+    }
+
+    /**
+     * 标准化一年内周工时和月工时
+     */
+    @GetMapping("/test/workHour/standardWeekAndMonth")
+    public void standardWeekAndMonth() {
+        workHourStatistics.standardWeekAndMonthWorkHour();
+    }
+
+    /**
+     * 上传一年内周工时和月工时工时至氚云数据库
      */
-    @GetMapping("/test/workHour/updateWorkHour")
-    public String updateWorkHour(){
-        workHourStatistics.updateHour();
-        return "go ahead";
+    @GetMapping("/test/workHour/pushWeekAndMonth")
+    public void pushWeekAndMonth() {
+        workHourStatistics.pushWorkHour();
     }
 
 
+    /**
+     * 检验一个季度的工时日志
+     */
+    @GetMapping("/test/workHour/checkQuarterDayWorkHour")
+    public void checkQuarterDayWorkHour() {
+        List<String> userIdList = userCompanyDao.findAll().stream().map(ChuanyunUserCompanyDO::getUserId).collect(Collectors.toList());
+        List<String> disUserIdList = userIdList.stream().distinct().collect(Collectors.toList());
+        logCheckService.checkDayWorkHourTimeAfter(disUserIdList, 90);
+    }
+
+    /**
+     * 校验指定日期氚云数据库的工时记录是否存在+8时区的数据
+     *
+     * @param year   年
+     * @param month  月
+     * @param maxDay 当月最后一天
+     */
+    @GetMapping("/test/api/checkAllMemberHour")
+    public void checkMemberHour(@RequestParam("year") Integer year, @RequestParam("month") Integer month, @RequestParam("maxDay") Integer maxDay) {
+        logCheckService.checkChuanYunAll(year, month, maxDay);
+    }
+
+    /**
+     * 标准化全部工时信息
+     */
+    @GetMapping("/test/workHour/standardAllDayWorkHourApi")
+    public void standardAllDayWorkHourApi() {
+        workHourStatistics.standardAllWorkHour();
+    }
+
+    /**
+     * 标准化全部工时信息
+     */
+    @GetMapping("/test/workHour/pushAllWorkHourApi")
+    public void pushAllWorkHourApi() {
+        workHourStatistics.pushAllWorkHour();
+    }
+
 }

+ 32 - 0
src/main/java/com/galaxis/manatee/controller/WorkHourOperateController.java

@@ -0,0 +1,32 @@
+package com.galaxis.manatee.controller;
+
+import com.galaxis.manatee.service.LogDownloadService;
+import com.galaxis.manatee.service.LogStandardService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 工时相关操作
+ */
+@RestController
+public class WorkHourOperateController {
+
+    @Autowired
+    private LogDownloadService logDownloadService;
+    @Autowired
+    private LogStandardService logStandardService;
+
+    /**
+     * 下载工时日志
+     *
+     * @param
+     */
+    @GetMapping("/test/operate/pullLog")
+    public void pullChuanyunLog() {
+        // 保存4月份工时至数据库
+        logDownloadService.saveDayLog();
+    }
+
+
+}

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunAskForLeaveDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunAskForLeaveDO;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunAttachmentDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunAttachmentDO;
 import org.springframework.stereotype.Repository;
 

+ 1 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunBudgetStatisticsDao.java

@@ -1,8 +1,7 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunBudgetStatisticsDO;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunMemberCostDO;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
 

+ 1 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunBusinessEntertainmentDao.java

@@ -1,8 +1,7 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunBusinessEntertainmentDO;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunCompanyDO;
 import org.springframework.stereotype.Repository;
 
 @Repository

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunClientDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunClientDO;
 import org.springframework.stereotype.Repository;
 

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunCompanyDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunCompanyDO;
 import org.springframework.stereotype.Repository;
 

+ 1 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunCostCollectionDao.java

@@ -1,7 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunCompanyDO;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunCostCollectionDO;
 import org.springframework.stereotype.Repository;
 

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunCostDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunCostDO;
 import org.springframework.stereotype.Repository;
 

+ 1 - 3
src/main/java/com/galaxis/manatee/dao/ChuanyunDayWorkAbcDao.java

@@ -1,9 +1,7 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunDayWorkAbcDO;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunUserCompanyDO;
-import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunDayWorkAbcDTO;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;

+ 1 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunEquipmentInformDao.java

@@ -1,8 +1,7 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunEquipmentInformDO;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunPayrollDO;
 import org.springframework.stereotype.Repository;
 
 @Repository

+ 10 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunEquipmentProcessDao.java

@@ -0,0 +1,10 @@
+package com.galaxis.manatee.dao;
+
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunEquipmentProcess;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ChuanyunEquipmentProcessDao extends GalaxisRepository<ChuanyunEquipmentProcess, String> {
+
+}

+ 10 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunFactoryLocationDao.java

@@ -0,0 +1,10 @@
+package com.galaxis.manatee.dao;
+
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunFactoryLocation;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ChuanyunFactoryLocationDao extends GalaxisRepository<ChuanyunFactoryLocation, String> {
+
+}

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunGroupProjectDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunGroupProjectDO;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunHolidaySalaryRuleDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunHolidaySalaryRuleDO;
 import org.springframework.stereotype.Repository;
 

+ 26 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunImplCostDao.java

@@ -0,0 +1,26 @@
+package com.galaxis.manatee.dao;
+
+
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunImplCostDO;
+import org.springframework.stereotype.Repository;
+
+import javax.transaction.Transactional;
+import java.time.LocalDateTime;
+
+/**
+ * @author kxuan
+ */
+@Repository
+public interface ChuanyunImplCostDao extends GalaxisRepository<ChuanyunImplCostDO, String> {
+
+    ChuanyunImplCostDO findByProjectIdAndProjectCodeAndWorkGroup(String projectId, String projectCode, String workGroup);
+
+    ChuanyunImplCostDO findByProjectIdAndProjectCodeAndWorkGroupAndLocalDate(String projectId, String projectCode, String workGroup, LocalDateTime localDate);
+
+    ChuanyunImplCostDO findByProjectCodeAndWorkGroupAndLocalDate(String projectCode, String workGroup, LocalDateTime localDate);
+
+    @Transactional
+    void deleteAllByProjectId(String projectId);
+
+}

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunLaborCostDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunLaborCostDO;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunLogDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunLogDO;
 import org.springframework.stereotype.Repository;
 

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunMaterialDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunMaterialDO;
 import org.springframework.stereotype.Repository;
 

+ 1 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunMemberCostDao.java

@@ -1,9 +1,8 @@
 package com.galaxis.manatee.dao;
 
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunMemberCostDO;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunProjectCostDO;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunMonthLaborCostDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunMonthLaborCostDO;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunPayrollDO;
 import org.springframework.data.jpa.repository.Query;

+ 19 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunMonthLaborCostWgDao.java

@@ -0,0 +1,19 @@
+package com.galaxis.manatee.dao;
+
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunMonthLaborCostWgDTO;
+import org.springframework.stereotype.Repository;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Repository
+public interface ChuanyunMonthLaborCostWgDao extends GalaxisRepository<ChuanyunMonthLaborCostWgDTO, String> {
+
+    List<ChuanyunMonthLaborCostWgDTO> findAllByProjectCodeAndLogDateAndWorkGroupIdAndDepartment(String projectCode, LocalDateTime time, String workGroupId, String department);
+
+    List<ChuanyunMonthLaborCostWgDTO> findAllByProjectCodeAndLogDateAndWorkGroupId(String projectCode, LocalDateTime time, String workGroupId);
+
+    List<ChuanyunMonthLaborCostWgDTO> findAllByProjectCode(String projectCode);
+
+}

+ 1 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunOperationInformationDao.java

@@ -1,7 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunMonthLaborCostDO;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunOperationInformationDO;
 import org.springframework.stereotype.Repository;
 

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunPaymentReceiveActionDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunPaymentReceiveActionDO;
 import org.springframework.stereotype.Repository;
 

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunPaymentReceiveDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunPaymentReceiveDO;
 import org.springframework.stereotype.Repository;
 

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunPaymentReceiveInvoiceDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunPaymentReceiveInvoiceDO;
 import org.springframework.stereotype.Repository;
 

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunPaymentReceivePlanDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunPaymentReceivePlanDO;
 import org.springframework.stereotype.Repository;
 

+ 1 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunPayrollDao.java

@@ -1,7 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunGroupProjectDO;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunPayrollDO;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;

+ 1 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunPersonDaysDao.java

@@ -1,8 +1,7 @@
 package com.galaxis.manatee.dao;
 
 
-import com.galaxis.capsule.util.GalaxisRepository;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunLaborCostDO;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunPersonDaysDO;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;

+ 1 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunProjectAttachmentDao.java

@@ -1,7 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunAttachmentDO;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunProjectAttachmentDO;
 import org.springframework.stereotype.Repository;
 

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunProjectCashFlowDao.java

@@ -1,7 +1,7 @@
 package com.galaxis.manatee.dao;
 
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunProjectCashFlowDO;
 import org.springframework.stereotype.Repository;
 

+ 3 - 3
src/main/java/com/galaxis/manatee/dao/ChuanyunProjectChangeDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunProjectChangeDO;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
@@ -19,13 +19,13 @@ public interface ChuanyunProjectChangeDao extends GalaxisRepository<ChuanyunProj
      * @param title
      * @return
      */
-    @Query(value = "SELECT * FROM CHUANYUN_PROJECT_CHANGE WHERE title = ?1", nativeQuery = true)
+    @Query(value = "SELECT * FROM manatee.chuanyun_project_change WHERE title = ?1", nativeQuery = true)
     List<ChuanyunProjectChangeDO> findByTitleSQL(String title);
 
     /**
      * SQL 查询项目实施变更信息
      * @return
      */
-    @Query(value = "SELECT t.* FROM CHUANYUN_PROJECT_CHANGE t GROUP BY t.title", nativeQuery = true )
+    @Query(value = "SELECT t.* FROM manatee.chuanyun_project_change t GROUP BY t.title", nativeQuery = true )
     List<ChuanyunProjectChangeDO> findAllAskForLeave();
 }

+ 3 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunProjectCostDao.java

@@ -1,7 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunMemberCostDO;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunProjectCostDO;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
@@ -28,6 +27,8 @@ public interface ChuanyunProjectCostDao extends GalaxisRepository<ChuanyunProjec
             nativeQuery = true)
     List<ChuanyunProjectCostDO> getProjectCost();
 
+
+
     @Query(value="SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS total_hour," +
             "SUM(chuanyun_self_work_hour.standard_work_hour)/8 AS person_days,chuanyun_self_work_hour.project_id," +
             "chuanyun_self_work_hour.project_type,chuanyun_self_work_hour.`status` ,chuanyun_self_work_hour.object_id \n" +

+ 1 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunProjectTypeDao.java

@@ -1,8 +1,7 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunProjectTypeDO;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunReimbursementDO;
 import org.springframework.stereotype.Repository;
 
 @Repository

+ 1 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunReimbursementAmountDao.java

@@ -1,7 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunMemberCostDO;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunReimbursementAmountDO;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;

+ 18 - 6
src/main/java/com/galaxis/manatee/dao/ChuanyunReimbursementDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunReimbursementDO;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -12,20 +12,32 @@ import java.util.List;
 /**
  * @author zcj
  * @version 0.1
- * @date 2020/4/27 4:18 下午
  */
 @Repository
-public interface ChuanyunReimbursementDao extends GalaxisRepository<ChuanyunReimbursementDO,String> {
+public interface ChuanyunReimbursementDao extends GalaxisRepository<ChuanyunReimbursementDO, String> {
 
     /**
      * 获取没有下发过的报销数据
-     * @param erpFlag   下发flag
-     * @param pageable  分页
-     * @return  列表
+     *
+     * @param erpFlag  下发flag
+     * @param pageable 分页
+     * @return 列表
      */
     Page<ChuanyunReimbursementDO> findAllByErpFlag(Integer erpFlag, Pageable pageable);
 
     List<ChuanyunReimbursementDO> findAllByGroupProjectId(String projectId);
 
+    List<ChuanyunReimbursementDO> findAllByGroupProjectIdAndStatusIn(String projectId, List<Integer> status);
+
+    /**
+     * 查询项目下用户的报销单
+     *
+     * @param projectId
+     * @param userId
+     * @param status
+     * @return
+     */
+    List<ChuanyunReimbursementDO> findAllByGroupProjectIdAndReimburseUserIdAndStatusIn(String projectId, String userId, List<Integer> status);
+
 
 }

+ 1 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunReimbursementDetailDao.java

@@ -1,13 +1,12 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunReimbursementDetailDO;
 import org.springframework.stereotype.Repository;
 
 /**
  * @author zcj
  * @version 0.1
- * @date 2020/4/27 4:19 下午
  */
 @Repository
 public interface ChuanyunReimbursementDetailDao extends GalaxisRepository<ChuanyunReimbursementDetailDO,String> {

+ 1 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunReimbursementItemsDao.java

@@ -1,7 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunCompanyDO;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunReimbursementItemsDO;
 import org.springframework.stereotype.Repository;
 

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunReimbursementSubjectDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunReimbursementSubjectDO;
 import org.springframework.stereotype.Repository;
 

+ 1 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunSaleContractDao.java

@@ -1,13 +1,12 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunSaleContractDO;
 import org.springframework.stereotype.Repository;
 
 /**
  * @author zcj
  * @version 0.1
- * @date 2020/5/1 1:48 下午
  */
 @Repository
 public interface ChuanyunSaleContractDao extends GalaxisRepository<ChuanyunSaleContractDO,String> {

+ 1 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunSaleContractDetailDao.java

@@ -1,13 +1,12 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunSaleContractDetailDO;
 import org.springframework.stereotype.Repository;
 
 /**
  * @author zcj
  * @version 0.1
- * @date 2020/5/1 4:23 下午
  */
 @Repository
 public interface ChuanyunSaleContractDetailDao extends GalaxisRepository<ChuanyunSaleContractDetailDO,String> {

+ 16 - 3
src/main/java/com/galaxis/manatee/dao/ChuanyunSelfCostDao.java

@@ -1,15 +1,14 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunSelfCostDO;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunSelfWorkHourDO;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 @Repository
@@ -41,6 +40,13 @@ public interface ChuanyunSelfCostDao extends GalaxisRepository<ChuanyunSelfCostD
     Page<ChuanyunSelfCostDO> getRecentlyMonthHour(PageRequest pagerequest);
 
     /**
+     * 根据用户ID获取月工时
+     * @param userId
+     * @return
+     */
+    List<ChuanyunSelfCostDO> findByUserId(String userId);
+
+    /**
      * 根据用户ID和项目ID,日期获取工时成本数据
      * @param userId    用户Id
      * @param projectId 项目Id
@@ -54,4 +60,11 @@ public interface ChuanyunSelfCostDao extends GalaxisRepository<ChuanyunSelfCostD
             "AND project_type=?3" +
             " AND DATE_FORMAT(chuanyun_self_cost.day_log_date,'%Y-%m')=DATE_FORMAT(?4,'%Y-%m') AND status=?5",nativeQuery = true)
     ChuanyunSelfCostDO getOldSelfDO(@Param("userId")String userId,@Param("projectId")String projectId,@Param("projectType") String projectType,@Param("dayLogDate")String dayLogDate,String status);
+
+    /**
+     * 根据用户ID获取月工时
+     * @param userId
+     * @return
+     */
+    List<ChuanyunSelfCostDO> findByUserIdAndDayLogDateGreaterThanEqual(String userId, LocalDateTime aYearAgo);
 }

+ 40 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunSelfSubWorkHourDao.java

@@ -0,0 +1,40 @@
+package com.galaxis.manatee.dao;
+
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunSelfSubWorkHourDO;
+import org.springframework.stereotype.Repository;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Repository
+public interface ChuanyunSelfSubWorkHourDao extends GalaxisRepository<ChuanyunSelfSubWorkHourDO,String> {
+
+    /**
+     * 获取单日工时数据
+     * @param userId
+     * @param projectId
+     * @param dayLogDate
+     * @param projectType
+     * @return
+     */
+    List<ChuanyunSelfSubWorkHourDO> findByUserIdAndProjectIdAndProjectTypeAndDayLogDate(String userId, String projectId,String projectType,LocalDateTime dayLogDate);
+
+    /**
+     * 获取单日工时数据
+     * @param userId
+     * @param projectId
+     * @param dayLogDate
+     * @param projectType
+     * @param status
+     * @return
+     */
+    List<ChuanyunSelfSubWorkHourDO> findByUserIdAndProjectIdAndProjectTypeAndDayLogDateAndStatus(String userId, String projectId,String projectType,LocalDateTime dayLogDate,String status);
+
+    /**
+     * 根据用户ID获取每日工时
+     * @param userId
+     * @return
+     */
+    List<ChuanyunSelfSubWorkHourDO> findByUserId(String userId);
+}

+ 109 - 27
src/main/java/com/galaxis/manatee/dao/ChuanyunSelfWorkHourDao.java

@@ -1,16 +1,14 @@
 package com.galaxis.manatee.dao;
 
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunSelfWorkHourDO;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunWorkHourDO;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
-import java.awt.print.Pageable;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -18,58 +16,95 @@ import java.util.List;
  * @author kxuan
  */
 @Repository
-public interface ChuanyunSelfWorkHourDao extends GalaxisRepository<ChuanyunSelfWorkHourDO,String> {
+public interface ChuanyunSelfWorkHourDao extends GalaxisRepository<ChuanyunSelfWorkHourDO, String> {
 
     /**
      * 根据项目id,用户id,日期获取工时数据
-     * @param userId    用户Id
-     * @param projectId 项目Id
-     * @param dayLogDate    日志日期
-     * @return  日工时记录
+     *
+     * @param userId     用户Id
+     * @param projectId  项目Id
+     * @param dayLogDate 日志日期
+     * @return 日工时记录
+     */
+    List<ChuanyunSelfWorkHourDO> findByUserIdAndProjectIdAndDayLogDateAndProjectTypeAndStatus(String userId, String projectId, LocalDateTime dayLogDate, String projectType, String status);
+
+    /**
+     * 根据项目id,用户id,日期获取工时数据
+     *
+     * @param userId
+     * @param projectId
+     * @param dayLogDate
+     * @param projectType
+     * @return
      */
-    ChuanyunSelfWorkHourDO findByUserIdAndAndProjectIdAndAndDayLogDateAndProjectType(String userId, String projectId, LocalDateTime dayLogDate,String projectType);
+    List<ChuanyunSelfWorkHourDO> findByUserIdAndProjectIdAndDayLogDateAndProjectType(String userId, String projectId, LocalDateTime dayLogDate, String projectType);
 
     /**
      * 根据userId获取工时数据
+     *
      * @param userId
      * @return
      */
     List<ChuanyunSelfWorkHourDO> findByUserId(String userId);
 
+
+    @Query(value = "SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
+            "chuanyun_self_work_hour.day_log_date," +
+            "chuanyun_self_work_hour.user_id," +
+            "chuanyun_self_work_hour.project_id," +
+            "chuanyun_self_work_hour.project_type," +
+            "chuanyun_self_work_hour.status," +
+            "chuanyun_self_work_hour.department_name," +
+            "chuanyun_self_work_hour.department_id," +
+            "chuanyun_self_work_hour.object_id " +
+            "FROM chuanyun_self_work_hour " +
+            "WHERE chuanyun_self_work_hour.user_id=? " +
+            "GROUP BY chuanyun_self_work_hour.user_id," +
+            "DATE_FORMAT(chuanyun_self_work_hour.day_log_date,'%Y-%m')," +
+            "chuanyun_self_work_hour.project_id," +
+            "chuanyun_self_work_hour.status," +
+            "chuanyun_self_work_hour.project_type",
+            nativeQuery = true)
+    List<ChuanyunSelfWorkHourDO> findDayWorkHour(String userId);
+
     /**
      * 根据用户id,日期获取工时
+     *
      * @param userId
      * @param dayLogDate
      * @return
      */
-    List<ChuanyunSelfWorkHourDO> findByUserIdAndDayLogDate(String userId,LocalDateTime dayLogDate);
+    List<ChuanyunSelfWorkHourDO> findByUserIdAndDayLogDate(String userId, LocalDateTime dayLogDate);
 
     /**
      * 根据用户Id,项目Id,起止时间获取工时列表
+     *
      * @param userId    用户Id
      * @param projectId 项目Id
      * @param status    状态
      * @param start     开始时间
      * @param end       结束时间
-     * @return  日工时列表
+     * @return 日工时列表
      */
-    List<ChuanyunSelfWorkHourDO> findAllByUserIdAndProjectIdAndProjectTypeAndStatusAndDayLogDateBetween(String userId,String projectId,String projectType,String status,LocalDateTime start,LocalDateTime end);
+    List<ChuanyunSelfWorkHourDO> findAllByUserIdAndProjectIdAndProjectTypeAndStatusAndDayLogDateBetween(String userId, String projectId, String projectType, String status, LocalDateTime start, LocalDateTime end);
 
     /**
      * 获取最近一个月日工时
+     *
      * @param pageable
      * @return
      */
-    @Query(value="SELECT * FROM chuanyun_self_work_hour WHERE DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(chuanyun_self_work_hour.day_log_date)\n",
-            countQuery="SELECT count(1) FROM chuanyun_self_work_hour WHERE DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(chuanyun_self_work_hour.day_log_date)\n",nativeQuery = true)
+    @Query(value = "SELECT * FROM chuanyun_self_work_hour WHERE DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(chuanyun_self_work_hour.day_log_date)\n",
+            countQuery = "SELECT count(1) FROM chuanyun_self_work_hour WHERE DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(chuanyun_self_work_hour.day_log_date)\n", nativeQuery = true)
     Page<ChuanyunSelfWorkHourDO> getRecentlyDayHour(PageRequest pageable);
 
     /**
      * 获取人员-项目-月度标准总工时
-     * @param userId    用户ID
-     * @return  汇总数据
+     *
+     * @param userId 用户ID
+     * @return 汇总数据
      */
-    @Query(value="SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
+    @Query(value = "SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
             "chuanyun_self_work_hour.day_log_date," +
             "chuanyun_self_work_hour.user_id," +
             "chuanyun_self_work_hour.project_id," +
@@ -91,10 +126,11 @@ public interface ChuanyunSelfWorkHourDao extends GalaxisRepository<ChuanyunSelfW
 
     /**
      * 获取最近一个月工时
+     *
      * @param userId
      * @return
      */
-    @Query(value="SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
+    @Query(value = "SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
             "chuanyun_self_work_hour.day_log_date," +
             "chuanyun_self_work_hour.user_id," +
             "chuanyun_self_work_hour.project_id," +
@@ -116,12 +152,13 @@ public interface ChuanyunSelfWorkHourDao extends GalaxisRepository<ChuanyunSelfW
 
     /**
      * 获取人员月度标准工时汇总
-     * @param userId    用户ID
-     * @param dayLogDate    查询月份日期
-     * @param status        工时状态
-     * @return  汇总数据
+     *
+     * @param userId     用户ID
+     * @param dayLogDate 查询月份日期
+     * @param status     工时状态
+     * @return 汇总数据
      */
-    @Query(value="SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
+    @Query(value = "SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
             "chuanyun_self_work_hour.day_log_date," +
             "chuanyun_self_work_hour.user_id," +
             "chuanyun_self_work_hour.status," +
@@ -129,14 +166,59 @@ public interface ChuanyunSelfWorkHourDao extends GalaxisRepository<ChuanyunSelfW
             "chuanyun_self_work_hour.project_id," +
             "chuanyun_self_work_hour.department_id," +
             "chuanyun_self_work_hour.department_name," +
-            "chuanyun_self_work_hour.object_id "+
+            "chuanyun_self_work_hour.object_id " +
             "FROM chuanyun_self_work_hour " +
             "WHERE chuanyun_self_work_hour.user_id= ?1 " +
-            "AND  chuanyun_self_work_hour.status= ?3 "+
-            "AND DATE_FORMAT(chuanyun_self_work_hour.day_log_date,'%Y-%m')=DATE_FORMAT(?2,'%Y-%m') "+
+            "AND  chuanyun_self_work_hour.status= ?3 " +
+            "AND DATE_FORMAT(chuanyun_self_work_hour.day_log_date,'%Y-%m')=DATE_FORMAT(?2,'%Y-%m') " +
             "GROUP BY chuanyun_self_work_hour.user_id," +
             "chuanyun_self_work_hour.status," +
             "DATE_FORMAT(chuanyun_self_work_hour.day_log_date,'%Y-%m')",
             nativeQuery = true)
-    ChuanyunSelfWorkHourDO getMonthHour(@Param("userId") String userId,@Param("dayLogDate") String dayLogDate,@Param("status")String status);
+    ChuanyunSelfWorkHourDO getMonthHour(@Param("userId") String userId, @Param("dayLogDate") String dayLogDate, @Param("status") String status);
+
+
+    /**
+     * 根据userId获取工时数据
+     *
+     * @param userId
+     * @return
+     */
+    List<ChuanyunSelfWorkHourDO> findByUserIdAndDayLogDateAfter(String userId, LocalDateTime afterDate);
+
+
+    /**
+     * 获取人员-项目-月度标准总工时
+     *
+     * @param userId 用户ID
+     * @return 汇总数据
+     */
+    @Query(value = "SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS standard_work_hour," +
+            "chuanyun_self_work_hour.day_log_date," +
+            "chuanyun_self_work_hour.user_id," +
+            "chuanyun_self_work_hour.project_id," +
+            "chuanyun_self_work_hour.project_type," +
+            "chuanyun_self_work_hour.status," +
+            "chuanyun_self_work_hour.department_name," +
+            "chuanyun_self_work_hour.department_id," +
+            "chuanyun_self_work_hour.object_id " +
+            "FROM chuanyun_self_work_hour " +
+            "WHERE chuanyun_self_work_hour.user_id=? " +
+            "and DATEDIFF(chuanyun_self_work_hour.day_log_date,NOW()) <= 0 " +
+            "and DATEDIFF(chuanyun_self_work_hour.day_log_date,NOW()) >= -180 " +
+            "GROUP BY chuanyun_self_work_hour.user_id," +
+            "DATE_FORMAT(chuanyun_self_work_hour.day_log_date,'%Y-%m')," +
+            "chuanyun_self_work_hour.project_id," +
+            "chuanyun_self_work_hour.status," +
+            "chuanyun_self_work_hour.project_type",
+            nativeQuery = true)
+    List<ChuanyunSelfWorkHourDO> getHalfYearMonthProjectHour(String userId);
+
+
+    List<ChuanyunSelfWorkHourDO> findByProjectId(String projectId);
+
+    List<ChuanyunSelfWorkHourDO> findAllByProjectIdAndUserIdAndStatusIn(String projectId, String userId, List<String> status);
+
+    List<ChuanyunSelfWorkHourDO> findAllByProjectIdAndStatusIn(String projectId, List<String> status);
+
 }

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunSpecialProcedureDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunSpecialProcedureDO;
 import org.springframework.stereotype.Repository;
 

+ 9 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunSubProjectDao.java

@@ -0,0 +1,9 @@
+package com.galaxis.manatee.dao;
+
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunSubProjectDO;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ChuanyunSubProjectDao extends GalaxisRepository<ChuanyunSubProjectDO,String> {
+}

+ 96 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunSubWeekHourDao.java

@@ -0,0 +1,96 @@
+package com.galaxis.manatee.dao;
+
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunSubWeekHourDO;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Repository
+public interface ChuanyunSubWeekHourDao extends GalaxisRepository<ChuanyunSubWeekHourDO,String> {
+
+    /**
+     * 获取周工时
+     * @param userId
+     * @return
+     */
+    @Query(value="SELECT chuanyun_self_sub_work_hour.object_id, \n" +
+            "            LEFT(YEARWEEK(chuanyun_self_sub_work_hour.day_log_date,1),4)as year, \n" +
+            "            RIGHT(YEARWEEK(chuanyun_self_sub_work_hour.day_log_date,1),2) AS week, \n" +
+            "            project_id,user_id,bg, \n" +
+            "            SUM(standard_work_hour)AS standard_work_hour, \n" +
+            "            project_type,\n" +
+            "            `status` \n" +
+            "            FROM chuanyun_self_sub_work_hour  \n" +
+            "            WHERE project_id !='' and user_id=?1\n" +
+            "            GROUP BY chuanyun_self_sub_work_hour.project_id, \n" +
+            "            chuanyun_self_sub_work_hour.project_type, \n" +
+            "            chuanyun_self_sub_work_hour.user_id,\n" +
+            "            LEFT(YEARWEEK(chuanyun_self_sub_work_hour.day_log_date,1),4), \n" +
+            "            RIGHT(YEARWEEK(chuanyun_self_sub_work_hour.day_log_date,1),2), \n" +
+            "            chuanyun_self_sub_work_hour.`status`",nativeQuery = true)
+    List<ChuanyunSubWeekHourDO> getSubWeekHourByUserId(@Param("userId") String userId);
+
+    /**
+     * 获取原有周工时数据
+     * @param userId
+     * @param projectId
+     * @param projectType
+     * @param week
+     * @param year
+     * @param status
+     * @return
+     */
+    ChuanyunSubWeekHourDO findByUserIdAndProjectIdAndProjectTypeAndWeekAndYearAndStatus(String userId,String projectId,String projectType, String week,String year,String status);
+
+    /**
+     * 查询是否有流程中数据
+     * @param projectId
+     * @param userId
+     * @param year
+     * @param week
+     * @param projectType
+     * @return
+     */
+    @Query(value="SELECT chuanyun_self_sub_work_hour.object_id,\n" +
+            "            DATE_FORMAT(day_log_date,'%Y') as year,\n" +
+            "            WEEKOFYEAR(chuanyun_self_sub_work_hour.day_log_date) AS week,\n" +
+            "            project_id,user_id,\n" +
+            "            SUM(standard_work_hour)AS standard_work_hour,\n" +
+            "            chuanyun_self_sub_work_hour.bg,\n" +
+            "            project_type,\n" +
+            "            `status`\n" +
+            "            FROM chuanyun_self_sub_work_hour \n" +
+            "            WHERE project_id=?1 and user_id=?2 and DATE_FORMAT(day_log_date,'%Y')=?3 and \n" +
+            "            WEEKOFYEAR(chuanyun_self_sub_work_hour.day_log_date)=?4 and status=2 and project_type=?5\n" +
+            "             GROUP BY chuanyun_self_sub_work_hour.project_id,\n" +
+            "            chuanyun_self_sub_work_hour.project_type,\n" +
+            "            chuanyun_self_sub_work_hour.user_id,\n" +
+            "            DATE_FORMAT(day_log_date,'%Y'),\n" +
+            "            WEEKOFYEAR(chuanyun_self_sub_work_hour.day_log_date),\n" +
+            "            chuanyun_self_sub_work_hour.`status`",nativeQuery = true)
+    ChuanyunSubWeekHourDO getProcessSubWeekHour(@Param("projectId") String projectId, @Param("userId") String userId, @Param("year") String year, @Param("week") String week, @Param("projectType") String projectType);
+
+    /**
+     * 删除处于流程中的数据
+     * @param projectId
+     * @param userId
+     * @param year
+     * @param week
+     * @param status
+     * @param projectType
+     */
+    @Transactional(rollbackFor = Exception.class)
+    void deleteByProjectIdAndUserIdAndYearAndWeekAndStatusAndProjectType(String projectId, String userId, String year, String week, String status, String projectType);
+
+    /**
+     * 根据用户Id获取周工时
+     * @param userId
+     * @return
+     */
+    List<ChuanyunSubWeekHourDO> findByUserId(String userId);
+
+}

+ 65 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunSubWorkHourDao.java

@@ -0,0 +1,65 @@
+package com.galaxis.manatee.dao;
+
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunSubWorkHourDO;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Repository
+public interface ChuanyunSubWorkHourDao extends GalaxisRepository<ChuanyunSubWorkHourDO,String> {
+
+    /**
+     * 获取子项目每日工时
+     * @param userId
+     * @return
+     */
+    @Query(value="SELECT " +
+            "chuanyun_day_log.object_id, " +
+            "SUM(chuanyun_day_log.hours_worked ) AS hours_worked, " +
+            "chuanyun_day_log.sub_porject_id AS project_id, " +
+            "chuanyun_day_log.project_type, " +
+            "chuanyun_log.user_id, " +
+            "chuanyun_log.department_name, " +
+            "chuanyun_day_log.sub_project_bg AS bg, " +
+            "chuanyun_log. STATUS, " +
+            "chuanyun_day_log.day_log_date " +
+            "FROM " +
+            "chuanyun_day_log " +
+            "LEFT JOIN chuanyun_log ON chuanyun_day_log.parent_object_id = chuanyun_log.object_id " +
+            "WHERE " +
+            "chuanyun_log.user_id = ? " +
+            "AND chuanyun_day_log.sub_porject_id != '' && chuanyun_day_log.sub_porject_id IS NOT NULL " +
+            "AND chuanyun_day_log.sub_project_bg != '' && chuanyun_day_log.sub_project_bg IS NOT NULL " +
+            "AND DATEDIFF(chuanyun_day_log.day_log_date,NOW()) <= 0 " +
+            "AND DATEDIFF(chuanyun_day_log.day_log_date,NOW()) > -180 " +
+            "GROUP BY " +
+            "chuanyun_day_log.sub_porject_id, " +
+            "chuanyun_log.user_id, " +
+            "chuanyun_day_log.project_type, " +
+            "chuanyun_log. STATUS, " +
+            "chuanyun_day_log.day_log_date",nativeQuery = true)
+    List<ChuanyunSubWorkHourDO> getSubSelfWorkHour(@Param("userId") String userId);
+
+
+    @Query(value="SELECT chuanyun_day_log.object_id, " +
+            "            SUM(chuanyun_day_log.hours_worked) AS hours_worked, " +
+            "            chuanyun_day_log.sub_porject_id AS project_id, " +
+            "            chuanyun_day_log.project_type, " +
+            "            chuanyun_log.user_id, " +
+            "            chuanyun_day_log.sub_project_bg AS bg, " +
+            "            chuanyun_log.department_name, " +
+            "            chuanyun_log.status, " +
+            "            chuanyun_day_log.day_log_date  " +
+            "            FROM chuanyun_day_log  " +
+            "            LEFT JOIN chuanyun_log ON chuanyun_day_log.parent_object_id = chuanyun_log.object_id  " +
+            "            WHERE chuanyun_log.user_id = ? " +
+            "            AND chuanyun_day_log.day_log_date =? " +
+            "            AND status!=3  " +
+            "            GROUP BY chuanyun_log.user_id, " +
+            "            chuanyun_day_log.day_log_date",nativeQuery = true)
+    ChuanyunSubWorkHourDO getSubDayWorkHour(String userId, LocalDateTime day);
+}

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunSupplierDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunSupplierDO;
 import org.springframework.stereotype.Repository;
 

+ 7 - 3
src/main/java/com/galaxis/manatee/dao/ChuanyunUserCompanyDao.java

@@ -1,7 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunProjectDO;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunUserCompanyDO;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -12,7 +11,6 @@ import java.util.List;
 /**
  * @author zcj
  * @version 0.1
- * @date 2020/4/28 11:38 上午
  */
 @Repository
 public interface ChuanyunUserCompanyDao extends GalaxisRepository<ChuanyunUserCompanyDO,String> {
@@ -23,6 +21,12 @@ public interface ChuanyunUserCompanyDao extends GalaxisRepository<ChuanyunUserCo
      * @return  返回值
      */
     List<ChuanyunUserCompanyDO> findAllByUserId(String userId);
+    /**
+     * 根据用户Id获取人员公司对象
+     * @param userId    人员Id
+     * @return  返回值
+     */
+    List<ChuanyunUserCompanyDO> findAllByUserIdOrderByModifiedTimeDesc(String userId);
 
     ChuanyunUserCompanyDO findByUserId(String userId);
 

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ChuanyunUserDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunUserDO;
 import org.springframework.stereotype.Repository;
 

+ 1 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunUserDepartmentNameDao.java

@@ -1,7 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
-import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunSelfWorkHourDO;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunUserDepartmentNameDO;
 import org.springframework.stereotype.Repository;
 

+ 71 - 11
src/main/java/com/galaxis/manatee/dao/ChuanyunWeekMemberHourDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunWeekMemberHourDO;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
@@ -18,16 +18,8 @@ import java.util.List;
 public interface ChuanyunWeekMemberHourDao extends GalaxisRepository<ChuanyunWeekMemberHourDO, String> {
 
     /**
-     * 根据状态删除数据
-     *
-     * @param status 状态
-     * @return 删除条数
-     */
-    @Transactional
-    Integer deleteAllByStatus(String status);
-
-    /**
      * 人员-项目-周度工时汇总
+     * 作废
      *
      * @return
      */
@@ -46,6 +38,7 @@ public interface ChuanyunWeekMemberHourDao extends GalaxisRepository<ChuanyunWee
             "DATE_FORMAT(day_log_date,'%Y')," +
             "WEEKOFYEAR(chuanyun_self_work_hour.day_log_date)," +
             "chuanyun_self_work_hour.`status`", nativeQuery = true)
+    @Deprecated
     List<ChuanyunWeekMemberHourDO> getWeekMemberHour();
 
     /**
@@ -84,7 +77,7 @@ public interface ChuanyunWeekMemberHourDao extends GalaxisRepository<ChuanyunWee
             "SUM(standard_work_hour)AS standard_work_hour, " +
             "project_type, " +
             "`status` " +
-            "FROM chuanyun_self_work_hour  " +
+            "FROM manatee.chuanyun_self_work_hour  " +
             "WHERE project_id !='' and user_id=?1 " +
             "GROUP BY chuanyun_self_work_hour.project_id, " +
             "chuanyun_self_work_hour.project_type, " +
@@ -95,6 +88,31 @@ public interface ChuanyunWeekMemberHourDao extends GalaxisRepository<ChuanyunWee
     List<ChuanyunWeekMemberHourDO> getWeekMemberHourByUserId(@Param("userId") String userId);
 
     /**
+     * 根据用户Id获取周工时列表
+     *
+     * @param userId 用户ID
+     * @return 周工时列表
+     */
+    @Query(value = "SELECT chuanyun_self_work_hour.object_id, " +
+            "LEFT(YEARWEEK(chuanyun_self_work_hour.day_log_date,1),4)as year, " +
+            "RIGHT(YEARWEEK(chuanyun_self_work_hour.day_log_date,1),2) AS week, " +
+            "project_id,user_id, " +
+            "SUM(standard_work_hour)AS standard_work_hour, " +
+            "project_type, " +
+            "`status` " +
+            "FROM manatee.chuanyun_self_work_hour  " +
+            "WHERE project_id !='' and user_id=?1 " +
+            "AND DATEDIFF(chuanyun_self_work_hour.day_log_date,NOW()) <= 0 " +
+            "AND DATEDIFF(chuanyun_self_work_hour.day_log_date,NOW()) > -365 " +
+            "GROUP BY chuanyun_self_work_hour.project_id, " +
+            "chuanyun_self_work_hour.project_type, " +
+            "chuanyun_self_work_hour.user_id, " +
+            "LEFT(YEARWEEK(chuanyun_self_work_hour.day_log_date,1),4), " +
+            "RIGHT(YEARWEEK(chuanyun_self_work_hour.day_log_date,1),2), " +
+            "chuanyun_self_work_hour.`status`", nativeQuery = true)
+    List<ChuanyunWeekMemberHourDO> getOneYearAgoWeekMemberHourByUserId(@Param("userId") String userId);
+
+    /**
      * 获取最近一个月周工时
      *
      * @param pageRequest 分页查询条件
@@ -152,4 +170,46 @@ public interface ChuanyunWeekMemberHourDao extends GalaxisRepository<ChuanyunWee
      */
     @Transactional(rollbackFor = Exception.class)
     void deleteByProjectIdAndUserIdAndYearAndWeekAndStatusAndProjectType(String projectId, String userId, String year, String week, String status, String projectType);
+
+    /**
+     * 根据用户ID查询周工时
+     *
+     * @param userId
+     * @return
+     */
+    List<ChuanyunWeekMemberHourDO> findByUserId(String userId);
+
+    /**
+     * 根据用户Id获取周工时列表
+     *
+     * @param userId 用户ID
+     * @return 周工时列表
+     */
+    @Query(value = "SELECT chuanyun_self_work_hour.object_id, " +
+            "LEFT(YEARWEEK(chuanyun_self_work_hour.day_log_date,1),4)as year, " +
+            "RIGHT(YEARWEEK(chuanyun_self_work_hour.day_log_date,1),2) AS week, " +
+            "project_id,user_id, " +
+            "SUM(standard_work_hour)AS standard_work_hour, " +
+            "project_type, " +
+            "`status` " +
+            "FROM chuanyun_self_work_hour  " +
+            "WHERE project_id !='' and user_id=?1 " +
+            "and DATEDIFF(chuanyun_self_work_hour.day_log_date,NOW()) <= 0 " +
+            "and DATEDIFF(chuanyun_self_work_hour.day_log_date,NOW()) >= -180 " +
+            "GROUP BY chuanyun_self_work_hour.project_id, " +
+            "chuanyun_self_work_hour.project_type, " +
+            "chuanyun_self_work_hour.user_id, " +
+            "LEFT(YEARWEEK(chuanyun_self_work_hour.day_log_date,1),4), " +
+            "RIGHT(YEARWEEK(chuanyun_self_work_hour.day_log_date,1),2), " +
+            "chuanyun_self_work_hour.`status`", nativeQuery = true)
+    List<ChuanyunWeekMemberHourDO> getHalfYearWeekMemberHourByUserId(@Param("userId") String userId);
+
+    /**
+     * 根据用户ID查询周工时
+     *
+     * @param userId
+     * @return
+     */
+    List<ChuanyunWeekMemberHourDO> findByUserIdAndYearGreaterThanEqual(String userId, String year);
+
 }

+ 71 - 30
src/main/java/com/galaxis/manatee/dao/ChuanyunWorkHourDao.java

@@ -1,7 +1,7 @@
 package com.galaxis.manatee.dao;
 
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunWorkHourDO;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
@@ -14,25 +14,27 @@ import java.util.List;
  * @author kxuan
  */
 @Repository
-public interface ChuanyunWorkHourDao extends GalaxisRepository<ChuanyunWorkHourDO,String> {
+public interface ChuanyunWorkHourDao extends GalaxisRepository<ChuanyunWorkHourDO, String> {
 
     /**
      * 根据用户Id获取用户日志明细,并按日期拍
-     * @param userId    用户Id
-     * @return  日志数据
+     *
+     * @param userId 用户Id
+     * @return 日志数据
      */
-    @Query(value="SELECT chuanyun_day_log.object_id," +
+    @Query(value = "SELECT chuanyun_day_log.object_id," +
             "SUM(chuanyun_day_log.hours_worked) AS hours_worked," +
             "chuanyun_day_log.project_id," +
             "chuanyun_day_log.project_type," +
             "chuanyun_log.user_id," +
             "chuanyun_log.department_name," +
             "chuanyun_log.status," +
-            "chuanyun_day_log.day_log_date " +
-            "FROM chuanyun_day_log "+
-            "LEFT JOIN chuanyun_log ON chuanyun_day_log.parent_object_id = chuanyun_log.object_id " +
+            "chuanyun_log.bg_name," +
+            "chuanyun_day_log.day_log_date," +
+            "chuanyun_day_log.work_group_id  " +
+            "FROM manatee.chuanyun_day_log " +
+            "LEFT JOIN manatee.chuanyun_log ON chuanyun_day_log.parent_object_id = chuanyun_log.object_id " +
             " WHERE chuanyun_log.user_id = ? " +
-            " AND status!='3' " +
             " GROUP BY chuanyun_day_log.project_id," +
             "chuanyun_log.user_id," +
             "chuanyun_day_log.project_type," +
@@ -44,9 +46,10 @@ public interface ChuanyunWorkHourDao extends GalaxisRepository<ChuanyunWorkHourD
 
     /**
      * 获取离职人员每天每个项目工时
+     *
      * @return
      */
-    @Query(value="SELECT\n" +
+    @Query(value = "SELECT\n" +
             "\tchuanyun_day_log.project_id,\n" +
             "  chuanyun_day_log.project_type,\n" +
             "chuanyun_log.department_name," +
@@ -54,29 +57,34 @@ public interface ChuanyunWorkHourDao extends GalaxisRepository<ChuanyunWorkHourD
             "  chuanyun_day_log.day_log_date,\n" +
             "  chuanyun_day_log.hours_worked,\n" +
             "  chuanyun_log.`status`,\n" +
-            "  chuanyun_day_log.object_id\n" +
+            "chuanyun_log.bg_name," +
+            "chuanyun_day_log.object_id," +
+            "chuanyun_day_log.work_group_id \n" +
             "FROM\n" +
             "\tchuanyun_log\n" +
             "LEFT JOIN chuanyun_day_log ON chuanyun_log.object_id = chuanyun_day_log.parent_object_id\n" +
             "WHERE\n" +
             "\tLENGTH(chuanyun_log.user_id) != CHAR_LENGTH(chuanyun_log.user_id)\n" +
-            "  AND project_id!=''",nativeQuery = true)
+            "  AND project_id!=''", nativeQuery = true)
     List<ChuanyunWorkHourDO> getQuitSelfWorkHour();
 
     /**
      * 根据用户Id获取用户最近一个月日志明细,并按日期拍
+     *
      * @param userId
      * @return
      */
-    @Query(value="SELECT chuanyun_day_log.object_id," +
+    @Query(value = "SELECT chuanyun_day_log.object_id," +
             "SUM(chuanyun_day_log.hours_worked) AS hours_worked," +
             "chuanyun_day_log.project_id," +
             "chuanyun_day_log.project_type," +
             "chuanyun_log.user_id," +
             "chuanyun_log.department_name," +
             "chuanyun_log.status," +
-            "chuanyun_day_log.day_log_date " +
-            "FROM chuanyun_day_log "+
+            "chuanyun_log.bg_name," +
+            "chuanyun_day_log.day_log_date," +
+            "chuanyun_day_log.work_group_id " +
+            "FROM chuanyun_day_log " +
             "LEFT JOIN chuanyun_log ON chuanyun_day_log.parent_object_id = chuanyun_log.object_id " +
             " WHERE chuanyun_log.user_id = ? " +
             "AND DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(chuanyun_day_log.day_log_date)" +
@@ -90,35 +98,39 @@ public interface ChuanyunWorkHourDao extends GalaxisRepository<ChuanyunWorkHourD
 
     /**
      * 根据用户ID和日期筛选工时数据
-     * @param userId    用户Id
-     * @param day   日期
-     * @return  人员工时数据
+     *
+     * @param userId 用户Id
+     * @param day    日期
+     * @return 人员工时数据
      */
-    @Query(value="SELECT chuanyun_day_log.object_id," +
+    @Query(value = "SELECT chuanyun_day_log.object_id," +
             "SUM(chuanyun_day_log.hours_worked) AS hours_worked," +
             "chuanyun_day_log.project_id," +
             "chuanyun_day_log.project_type," +
             "chuanyun_log.user_id," +
             "chuanyun_log.department_name," +
             "chuanyun_log.status," +
-            "chuanyun_day_log.day_log_date " +
-            "FROM chuanyun_day_log "+
+            "chuanyun_log.bg_name," +
+            "chuanyun_day_log.day_log_date," +
+            "chuanyun_day_log.work_group_id " +
+            "FROM chuanyun_day_log " +
             "LEFT JOIN chuanyun_log ON chuanyun_day_log.parent_object_id = chuanyun_log.object_id " +
-            "WHERE chuanyun_log.user_id = ? " +
-            "AND chuanyun_day_log.day_log_date =? " +
+            "WHERE chuanyun_log.user_id = ?1 " +
+            "AND chuanyun_day_log.day_log_date =?2 " +
             "AND status!=3 " +
-            "GROUP BY chuanyun_log.user_id," +
-            "chuanyun_day_log.day_log_date",
+            "GROUP BY chuanyun_log.user_id, " +
+            "chuanyun_day_log.day_log_date ",
             nativeQuery = true)
-    ChuanyunWorkHourDO getDayWorkHour(String userId,LocalDateTime day);
+    ChuanyunWorkHourDO getDayWorkHour(@Param("userId") String userId, @Param("dayLogDate") LocalDateTime dayLogDate);
 
     /**
      * 离职人员每天工时
+     *
      * @param userId
      * @param dayLogDate
      * @return
      */
-    @Query(value="SELECT\n" +
+    @Query(value = "SELECT\n" +
             "\tchuanyun_day_log.project_id,\n" +
             "\tchuanyun_day_log.project_type,\n" +
             "\tchuanyun_log.user_id,\n" +
@@ -128,7 +140,9 @@ public interface ChuanyunWorkHourDao extends GalaxisRepository<ChuanyunWorkHourD
             "\t\tchuanyun_day_log.hours_worked\n" +
             "\t) AS hours_worked,\n" +
             "\tchuanyun_log.`status`,\n" +
-            "\tchuanyun_day_log.object_id\n" +
+            "chuanyun_log.bg_name," +
+            "\tchuanyun_day_log.object_id," +
+            "chuanyun_day_log.work_group_id \n" +
             "FROM\n" +
             "\tchuanyun_log\n" +
             "LEFT JOIN chuanyun_day_log ON chuanyun_log.object_id = chuanyun_day_log.parent_object_id\n" +
@@ -136,7 +150,34 @@ public interface ChuanyunWorkHourDao extends GalaxisRepository<ChuanyunWorkHourD
             "chuanyun_log.user_id = ?1 AND chuanyun_day_log.day_log_date=?2 \n" +
             "GROUP BY\n" +
             "\tchuanyun_log.user_id,\n" +
-            "\tchuanyun_day_log.day_log_date",nativeQuery = true)
-    ChuanyunWorkHourDO getQuitDayWorkHour(@Param("userId")String userId,@Param("dayLogDate")LocalDateTime dayLogDate);
+            "\tchuanyun_day_log.day_log_date", nativeQuery = true)
+    ChuanyunWorkHourDO getQuitDayWorkHour(@Param("userId") String userId, @Param("dayLogDate") LocalDateTime dayLogDate);
 
+    /**
+     * 获取半年内工时列表
+     *
+     * @param userId
+     * @return
+     */
+    @Query(value = "SELECT chuanyun_day_log.object_id," +
+            "SUM(chuanyun_day_log.hours_worked) AS hours_worked," +
+            "chuanyun_day_log.project_id," +
+            "chuanyun_day_log.project_type," +
+            "chuanyun_log.user_id," +
+            "chuanyun_log.department_name," +
+            "chuanyun_log.status," +
+            "chuanyun_log.bg_name," +
+            "chuanyun_day_log.day_log_date," +
+            "chuanyun_day_log.work_group_id " +
+            "FROM chuanyun_day_log " +
+            "LEFT JOIN chuanyun_log ON chuanyun_day_log.parent_object_id = chuanyun_log.object_id " +
+            " WHERE chuanyun_log.user_id = ? " +
+            "and DATEDIFF(chuanyun_day_log.day_log_date,NOW()) <= 0 " +
+            "and DATEDIFF(chuanyun_day_log.day_log_date,NOW()) > -90 " +
+            "GROUP BY chuanyun_day_log.project_id," +
+            "chuanyun_log.user_id," +
+            "chuanyun_day_log.project_type," +
+            "chuanyun_log.status," +
+            "chuanyun_day_log.day_log_date", nativeQuery = true)
+    List<ChuanyunWorkHourDO> getHalfYearSelfWorkHour(String userId);
 }

+ 1 - 1
src/main/java/com/galaxis/manatee/dao/ProjectSwitchDao.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.dao;
 
-import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ProjectSwitch;
 import org.springframework.stereotype.Repository;
 

+ 1 - 1
src/main/java/com/galaxis/manatee/entity/User.java

@@ -19,7 +19,7 @@ public class User {
 
     @Id
     @GeneratedValue(generator = "idGeneratorUser")
-    @GenericGenerator(name ="idGeneratorUser" ,strategy="com.galaxis.capsule.util.GalaxisIdGenerator")
+    @GenericGenerator(name ="idGeneratorUser" ,strategy="com.galaxis.manatee.capsule.util.GalaxisIdGenerator")
     private Long id;
 
     /**

+ 40 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ApiTestDO.java

@@ -0,0 +1,40 @@
+package com.galaxis.manatee.entity.chuanyun.data.object;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.persistence.Entity;
+
+/**
+ * 测试类,用于测试接口传输速度
+ * @author zcj
+ * @version 0.1
+ * @date 2021/3/6 5:24 上午
+ */
+@EqualsAndHashCode(callSuper = true)
+@Slf4j
+@Data
+@Entity(name = "API_TEST")
+public class ApiTestDO extends BasicDO{
+
+
+    /**
+     * 表名
+     */
+    public static final String SCHEMA_CODE ="D001789api_test";
+
+    @JsonProperty(value = "F0000001")
+    private String a;
+    @JsonProperty(value = "F0000002")
+    private String b;
+    @JsonProperty(value = "F0000003")
+    private String c;
+    @JsonProperty(value = "F0000004")
+    private String d;
+    @JsonProperty(value = "F0000005")
+    private String e;
+    @JsonProperty(value = "F0000006")
+    private String f;
+}

+ 2 - 2
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunAskForLeaveDO.java

@@ -154,8 +154,8 @@ public class ChuanyunAskForLeaveDO extends BasicDO {
         if(processInstanceTopVo.getOperationRecords()!= null) {
             if(processInstanceTopVo.getOperationRecords().get(0).getUserid().equals(processInstanceTopVo.getOperationRecords().get(processInstanceTopVo.getOperationRecords().size() -1).getUserid())
                     && processInstanceTopVo.getOperationRecords().get(0).getUserid().equals(processInstanceTopVo.getOriginatorUserid())  ) {
-                if(processInstanceTopVo.getOperationRecords().get(0).getOperationType().equals("START_PROCESS_INSTANCE")
-                        && processInstanceTopVo.getOperationRecords().get(processInstanceTopVo.getOperationRecords().size() -1).getOperationType().equals("TERMINATE_PROCESS_INSTANCE")) {
+                if("START_PROCESS_INSTANCE".equals(processInstanceTopVo.getOperationRecords().get(0).getOperationType())
+                        && "TERMINATE_PROCESS_INSTANCE".equals(processInstanceTopVo.getOperationRecords().get(processInstanceTopVo.getOperationRecords().size() -1).getOperationType())) {
                     chuanyunAskForLeaveDo.setIsCanncel(1);
                 }
             }

+ 1 - 1
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunBudgetStatisticsDO.java

@@ -21,7 +21,7 @@ public class ChuanyunBudgetStatisticsDO {
      */
     @Id
     @GeneratedValue(generator = "idGeneratorChuanyunSelfCost")
-    @GenericGenerator(name ="idGeneratorChuanyunSelfCost" ,strategy="com.galaxis.capsule.util.GalaxisIdGenerator")
+    @GenericGenerator(name ="idGeneratorChuanyunSelfCost" ,strategy="com.galaxis.manatee.capsule.util.GalaxisIdGenerator")
     private Long objectId;
 
     /**

+ 70 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunBuildProject.java

@@ -0,0 +1,70 @@
+package com.galaxis.manatee.entity.chuanyun.data.object;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ChuanyunBuildProject extends BasicDO {
+    /**
+     * 表名
+     */
+    public static final String SCHEMA_CODE = "D00178955900d6e8f104217b7ff8f7d36b34de1";
+
+    /**
+     * 项目编号
+     */
+    @JsonProperty(value = "F0000003")
+    private String projectCode;
+
+    /**
+     * 项目名称
+     */
+    @JsonProperty(value = "F0000004")
+    private String projectName;
+
+    /**
+     * 签约公司
+     */
+    @JsonProperty(value = "F0000051")
+    private String signingCompany;
+
+    /**
+     * 客户名称
+     */
+    @JsonProperty(value = "F0000039")
+    private String customerName;
+    /**
+     * 业主名称
+     */
+    @JsonProperty(value = "F0000040")
+    private String nameOfOwner;
+
+    /**
+     * 项目经理
+     */
+    @JsonProperty(value = "F0000037")
+    private String projectManager;
+
+    /**
+     * 销售负责人
+     */
+    @JsonProperty(value = "F0000011")
+    private String SalesDirector;
+
+    /**
+     * 系统免费维保期
+     */
+    @JsonProperty(value = "F0000104")
+    private Integer systemWarranty;
+
+
+    /**
+     * 设备免费维保期
+     */
+    @JsonProperty(value = "F0000105")
+    private Integer deviceWarranty;
+
+
+}

+ 40 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunDayLog.java

@@ -42,6 +42,25 @@ public class ChuanyunDayLog extends BasicSubDO{
      */
     @JsonProperty("project")
     private String projectId;
+
+    /**
+     * 子项目ID
+     */
+    @JsonProperty("F0000066")
+    private String subPorjectId;
+
+    /**
+     * 子项目编号
+     */
+    @JsonProperty("F0000071")
+    private String subPorjectCode;
+
+    /**
+     * 子项目归属
+     */
+    @JsonProperty("F0000073")
+    private String subProjectBg;
+
     /**
      * 项目Id字符串
      */
@@ -53,11 +72,27 @@ public class ChuanyunDayLog extends BasicSubDO{
     @JsonProperty("factoryLocation")
     private String factoryLocationId;
     /**
+     * 工厂地址ID
+     */
+    private String factoryLocationName;
+    /**
+     * 设备类型
+     */
+    @JsonProperty("F0000053")
+    private String deviceType;
+    /**
      * 订单号
      */
     @JsonProperty("F0000054")
     private String ticketId;
     /**
+     * 生产项目工作内容
+     */
+    @JsonProperty("F0000055")
+    private String jobContentId;
+
+    private String jobContent;
+    /**
      * 项目类日志的项目编号,工厂类项目的工厂编号
      */
     private String projectCode;
@@ -70,4 +105,9 @@ public class ChuanyunDayLog extends BasicSubDO{
      */
     @Column(length = Integer.MAX_VALUE)
     private String content;
+
+    @JsonProperty("F0000087")
+    private String workGroupId;
+
+    private String workGroupName;
 }

+ 36 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunEquipmentProcess.java

@@ -0,0 +1,36 @@
+package com.galaxis.manatee.entity.chuanyun.data.object;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.persistence.Entity;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/5/9 10:41 上午
+ */
+@Slf4j
+@Entity(name = "CHUANYUN_EQUIPMENT_PROCESS")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ChuanyunEquipmentProcess extends BasicDO{
+
+    /**
+     * 设备
+     */
+    @JsonProperty("F0000002")
+    private String device;
+
+    /**
+     * 工序
+     */
+    @JsonProperty("F0000001")
+    private String procedureInfo;
+
+
+}

+ 49 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunFactoryLocation.java

@@ -0,0 +1,49 @@
+package com.galaxis.manatee.entity.chuanyun.data.object;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.persistence.Entity;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/5/9 10:41 上午
+ */
+@Slf4j
+@Entity(name = "CHUANYUN_FACTORY_LOCATION")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ChuanyunFactoryLocation extends BasicDO{
+
+    /**
+     * 工厂编码
+     */
+    @JsonProperty("F0000001")
+    private String factoryCode;
+
+
+    /**
+     * 工厂名称
+     */
+    @JsonProperty("F0000002")
+    private String factoryName;
+
+    /**
+     * 工厂负责人
+     */
+    @JsonProperty("F0000003")
+    private String factoryCharge;
+
+    /**
+     * 工厂二级负责人
+     */
+    @JsonProperty("F0000004")
+    private String factorySecondLevelCharge;
+
+
+}

+ 27 - 7
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunGroupProjectDO.java

@@ -3,7 +3,7 @@ package com.galaxis.manatee.entity.chuanyun.data.object;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import com.galaxis.capsule.bo.ChuanyunObject;
+import com.galaxis.manatee.capsule.bo.ChuanyunObject;
 import com.galaxis.manatee.util.ChuanyunLocalDateTimeDeserializer;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -16,7 +16,6 @@ import java.util.List;
 /**
  * @author zcj
  * @version 0.1
- * @date 2020/2/13 4:09 下午
  */
 @Slf4j
 @EqualsAndHashCode(callSuper = true)
@@ -28,7 +27,7 @@ public class ChuanyunGroupProjectDO extends BasicDO {
     /**
      * 表名
      */
-    public static final String SCHEMA_CODE ="D001789SProjectbase";
+    public static final String SCHEMA_CODE = "D001789SProjectbase";
 
     /**
      * 是否已经下发过
@@ -51,7 +50,7 @@ public class ChuanyunGroupProjectDO extends BasicDO {
     /**
      * 外部项目名称
      */
-    @JsonProperty(value="F0000038")
+    @JsonProperty(value = "F0000038")
     private String outProjectName;
 
     /**
@@ -68,11 +67,11 @@ public class ChuanyunGroupProjectDO extends BasicDO {
     /**
      * EBG
      */
-    public static final String EBG="EBG";
+    public static final String EBG = "EBG";
     /**
      * IBG
      */
-    public static final String IBG="IBG";
+    public static final String IBG = "IBG";
 
     /**
      * 氚云中项目立项时间
@@ -145,6 +144,27 @@ public class ChuanyunGroupProjectDO extends BasicDO {
     @JsonProperty(value = "F0000041")
     private String customerCode;
 
+    @JsonProperty("F0000044")
+    private String beneDepartmentName;
+
+    @JsonProperty("F0000045")
+    private String beneDepartmentCode;
+
+    @JsonProperty("F0000075")
+    private String projectState;
+
+    /**
+     * 事业部名称
+     */
+    @JsonProperty("F0000068")
+    private String businessUnitName;
+
+    /**
+     * 事业部属性
+     */
+    @JsonProperty("F0000069")
+    private String businessUnitProperties;
+
     /**
      * 项目组成员对象
      */
@@ -175,7 +195,7 @@ public class ChuanyunGroupProjectDO extends BasicDO {
     /**
      * 项目组织信息
      */
-    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true,fetch = FetchType.EAGER)
+    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
     @JsonProperty("D001789Fd992bf8fbe114c9babe0f98cf676f8a2")
     private List<ChuanyunGroupProjectDetailDO> detailList;
 

+ 53 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunHistoryWorkGroupDO.java

@@ -0,0 +1,53 @@
+package com.galaxis.manatee.entity.chuanyun.data.object;
+
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
+
+@Slf4j
+@EqualsAndHashCode(callSuper = true)
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ChuanyunHistoryWorkGroupDO extends BasicSubDO{
+
+    /**
+     * 表名
+     */
+    public static final String SCHEMA_CODE ="D001789f1de93b6cb324bb5a35290e7c59a0ebc";
+
+    /**
+     * 工作组
+     */
+    @JsonProperty(value = "F0000010")
+    private String workGroupName;
+
+    /**
+     * 工作负责人
+     */
+    @JsonProperty(value = "F0000004")
+    private String workGroupPrincipal;
+
+    /**
+     * 子工作组
+     */
+    @JsonProperty(value = "F0000007")
+    private String subWorkGroup;
+
+    /**
+     * 子工作组负责人
+     */
+    @JsonProperty(value = "F0000008")
+    private String subWorkGroupPrincipal;
+
+    @JsonProperty(value = "F0000009")
+    private List<String> subWorkGroupMember;
+
+    @JsonProperty(value = "F0000009Object")
+    private List<ChuanyunWorkGroupMemberDO> subWorkGroupMemberObject;
+
+}

+ 99 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunImplCostDO.java

@@ -0,0 +1,99 @@
+package com.galaxis.manatee.entity.chuanyun.data.object;
+
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.galaxis.manatee.util.ChuanyunLocalDateTimeDeserializer;
+import com.galaxis.manatee.util.ChuanyunLocalDateTimeSerializer;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.hibernate.annotations.GenericGenerator;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Slf4j
+@Data
+@Entity(name = "CHUANYUN_IMPL_COST")
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ChuanyunImplCostDO{
+
+    /**
+     * 表名
+     */
+    public static final String SCHEMA_CODE ="D001789implCost";
+
+    @Id
+    @GeneratedValue(generator = "idGeneratorChuanyunImplCos")
+    @GenericGenerator(name ="idGeneratorChuanyunImplCos" ,strategy="com.galaxis.manatee.capsule.util.GalaxisIdGenerator")
+    private Long id;
+
+    /**
+     * 拥有者id
+     */
+    @JsonProperty("OwnerId")
+    private String ownerId;
+
+    /**
+     * 唯一Id
+     */
+    @JsonProperty("ObjectId")
+    private String objectId;
+
+
+    /**
+     * 项目ID、
+     */
+    @JsonProperty("F0000001")
+    private String projectId;
+
+    /**
+     * 项目编号
+     */
+    @JsonProperty("F0000002")
+    private String projectCode;
+
+    /**
+     * 工作组id
+     */
+    @JsonProperty("F0000006")
+    private String workGroup;
+
+    /**
+     * 工作组名称
+     */
+    @JsonProperty("F0000005")
+    private String workGroupName;
+
+    /**
+     * 费用
+     */
+    @JsonProperty("F0000004")
+    private BigDecimal implCost;
+
+    /**
+     * 人天
+     */
+    @JsonProperty("F0000007")
+    private BigDecimal manDay;
+
+    /**
+     * 日期
+     */
+    @JsonProperty("F0000008")
+    @JsonSerialize(using = ChuanyunLocalDateTimeSerializer.class)
+    @JsonDeserialize(using = ChuanyunLocalDateTimeDeserializer.class)
+    private LocalDateTime localDate;
+
+    /**
+     * 人力成本
+     */
+    @JsonProperty("F0000009")
+    private BigDecimal LaborCost;
+
+}

+ 0 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunLogDO.java


部分文件因为文件数量过多而无法显示