Browse Source

客户信息同步数据

verguenza 5 years ago
parent
commit
fee9e777a6

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

@@ -0,0 +1,14 @@
+package com.galaxis.manatee.dao;
+
+import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunClientDO;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/5/4 8:34 上午
+ */
+@Repository
+public interface ChuanyunClientDao extends GalaxisRepository<ChuanyunClientDO,String> {
+}

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

@@ -0,0 +1,39 @@
+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/4 8:27 上午
+ */
+@Slf4j
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Entity(name = "CHUANYUN_CLIENT")
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ChuanyunClientDO extends BasicDO{
+
+    /**
+     * 表名
+     */
+    public static final String SCHEMA_CODE ="xk4i6zt5frxb52clkldnqpkv3";
+
+    /**
+     * 客户编号
+     */
+    @JsonProperty("SeqNo")
+    private String clientCode;
+
+    /**
+     * 客户名称
+     */
+    @JsonProperty("F0000001")
+    private String clientName;
+}

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

@@ -10,9 +10,9 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.extern.slf4j.Slf4j;
 
-import javax.persistence.Entity;
-import javax.persistence.Transient;
+import javax.persistence.*;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * @author zcj
@@ -88,6 +88,13 @@ public class ChuanyunGroupProjectDO extends BasicDO {
     @JsonProperty(value = "F0000006Object")
     private ChuanyunObject projectOwnerObject;
 
+    /**
+     * 项目组织信息
+     */
+    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true,fetch = FetchType.EAGER)
+    @JsonProperty("D001789Fd992bf8fbe114c9babe0f98cf676f8a2")
+    private List<ChuanyunGroupProjectDetailDO> detailList;
+
     //======================================================
     //下面是一开始张曦铭提供的项目的内容,集团总表中缺少这些信息
     //======================================================

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

@@ -0,0 +1,73 @@
+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.manatee.util.ChuanyunLocalDateTimeDeserializer;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.persistence.Entity;
+import java.time.LocalDateTime;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/5/2 8:46 下午
+ */
+@Slf4j
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Entity(name = "CHUANYUN_GROUP_PROJECT_DETAIL")
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ChuanyunGroupProjectDetailDO extends BasicSubDO{
+    /**
+     * 项目组织名称
+     */
+    @JsonProperty("F0000025")
+    private String companyName;
+
+    /**
+     * 项目组织编码
+     */
+    private String companyCode;
+
+    /**
+     * 项目分类
+     */
+    @JsonProperty("F0000026")
+    private String type;
+
+    /**
+     * 客户编号
+     */
+    @JsonProperty("F0000017")
+    private String clientCode;
+
+    /**
+     * 业务来源
+     */
+    @JsonProperty("F0000027")
+    private String source;
+
+    /**
+     * 默认支出类型
+     */
+    @JsonProperty("F0000028")
+    private String defaultExpenseType;
+
+    /**
+     * 计划开始时间
+     */
+    @JsonProperty("F0000022")
+    @JsonDeserialize(using = ChuanyunLocalDateTimeDeserializer.class)
+    private LocalDateTime planStartDateTime;
+
+    /**
+     * 计划结束时间
+     */
+    @JsonProperty("F0000023")
+    @JsonDeserialize(using = ChuanyunLocalDateTimeDeserializer.class)
+    private LocalDateTime planEndDateTime;
+}

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

@@ -9,8 +9,6 @@ import com.galaxis.manatee.util.ChuanyunLocalDateTimeSerializer;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.extern.slf4j.Slf4j;
-import org.hibernate.annotations.GenericGenerator;
-import org.hibernate.annotations.NaturalId;
 
 import javax.persistence.*;
 import java.math.BigDecimal;

+ 4 - 1
src/main/java/com/galaxis/manatee/task/ChuanyunBasicDataScheduledTask.java

@@ -115,7 +115,10 @@ public class ChuanyunBasicDataScheduledTask {
                 //保存
                 result.forEach(chuanyunGroupProjectDO ->  {
                     var tmpGroupProjectDO=chuanyunGroupProjectDao.findById(chuanyunGroupProjectDO.getObjectId());
-                    tmpGroupProjectDO.ifPresent(projectDO -> chuanyunGroupProjectDO.setIsCreate(projectDO.getIsCreate()));
+                    tmpGroupProjectDO.ifPresent(projectDO -> {
+                        chuanyunGroupProjectDO.setIsCreate(projectDO.getIsCreate());
+                        chuanyunGroupProjectDao.delete(tmpGroupProjectDO.get());
+                    });
                     //将projectManger和projectOwner替换为主键
                     if(!StringUtils.isEmpty(chuanyunGroupProjectDO.getProjectOwner())){
                         chuanyunGroupProjectDO.setProjectOwner(chuanyunGroupProjectDO.getProjectOwnerObject().getObjectId());

+ 75 - 0
src/main/java/com/galaxis/manatee/task/ChuanyunCrmScheduledTask.java

@@ -0,0 +1,75 @@
+package com.galaxis.manatee.task;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.galaxis.manatee.dao.ChuanyunClientDao;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunClientDO;
+import com.galaxis.manatee.entity.chuanyun.dto.Filter;
+import com.galaxis.manatee.manager.ChuanYunManager;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author zcj
+ * @version 0.1
+ * @date 2020/5/4 8:37 上午
+ */
+@Slf4j
+@Service
+public class ChuanyunCrmScheduledTask {
+    private final Integer pageSize=20;
+    private final ChuanyunClientDao chuanyunClientDao;
+    private final ChuanYunManager chuanYunManager;
+
+    public ChuanyunCrmScheduledTask(ChuanyunClientDao chuanyunClientDao, ChuanYunManager chuanYunManager) {
+        this.chuanyunClientDao = chuanyunClientDao;
+        this.chuanYunManager = chuanYunManager;
+    }
+
+    /**
+     * 同步客户信息
+     */
+    @Scheduled(fixedDelay = 1800000L)
+    private void clientInformationSync(){
+        getClient();
+    }
+
+    /**
+     * 获取供应商信息
+     */
+    private void getClient(){
+        var objectMapper=new ObjectMapper();
+        var start=0;
+        var totalCount=0L;
+        var flag=true;
+        while (flag){
+            try {
+                //从氚云查询数据
+                var filter= Filter.instance(start,start+pageSize,true);
+                var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunClientDO.SCHEMA_CODE,filter);
+                if(chuanyunFindAllResponse.getReturnData()==null){
+                    flag=false;
+                    continue;
+                }
+                if(chuanyunFindAllResponse.getReturnData().getTotalCount()>=start+pageSize){
+                    start+=pageSize;
+                }else{
+                    flag=false;
+                }
+                //转化为POJO
+                List<ChuanyunClientDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
+                //获取项目总数
+                totalCount=chuanyunFindAllResponse.getReturnData().getTotalCount();
+                //保存
+                chuanyunClientDao.saveAll(result);
+            }catch (Exception e){
+                log.error(e.getMessage());
+                e.printStackTrace();
+            }
+        }
+        log.info("客户信息保存保存"+totalCount);
+    }
+}