Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master' into dev

GouGengquan před 11 měsíci
rodič
revize
060a6ca659
31 změnil soubory, kde provedl 1129 přidání a 101 odebrání
  1. 0 11
      biz-base/src/main/java/com/dayou/controller/HistoryOrderController.java
  2. 33 13
      biz-base/src/main/resources/application-prod.yml
  3. 1 1
      biz-base/src/test/java/history/SyncHistoryTest.java
  4. 25 4
      dao/src/main/java/com/dayou/mapper/DyoaHistoryMapper.java
  5. 14 0
      dao/src/main/java/com/dayou/mapper/DyoaRecordMapper.java
  6. 3 0
      dao/src/main/java/com/dayou/mapper/FinanceClaimMapper.java
  7. 164 5
      dao/src/main/resources/mapper/DyoaHistoryMapper.xml
  8. 34 0
      dao/src/main/resources/mapper/DyoaRecordMapper.xml
  9. 10 0
      dao/src/main/resources/mapper/FinanceClaimMapper.xml
  10. 1 1
      dao/src/main/resources/mapper/PersonalMapper.xml
  11. 28 0
      domain/src/main/java/com/dayou/dto/history/HisAssetsProduction.java
  12. 1 1
      domain/src/main/java/com/dayou/dto/history/HisMajorTarget.java
  13. 2 1
      domain/src/main/java/com/dayou/entity/AssetsProduction.java
  14. 8 0
      domain/src/main/java/com/dayou/entity/DyoaRecord.java
  15. 2 1
      domain/src/main/java/com/dayou/entity/FinanceClaim.java
  16. 9 1
      domain/src/main/java/com/dayou/enums/MainBusinessEnum.java
  17. 628 44
      service/src/main/java/com/dayou/dyoa/DyoaHistoryServiceImpl.java
  18. 9 4
      service/src/main/java/com/dayou/dyoa/IDyoaHistoryService.java
  19. 37 0
      service/src/main/java/com/dayou/dyoa/task/FetchDyoaDataSchedule.java
  20. 14 1
      service/src/main/java/com/dayou/service/IDyoaRecordService.java
  21. 3 0
      service/src/main/java/com/dayou/service/IFinanceClaimService.java
  22. 3 1
      service/src/main/java/com/dayou/service/impl/AssetsProductionServiceImpl.java
  23. 3 1
      service/src/main/java/com/dayou/service/impl/AssetsServiceImpl.java
  24. 2 0
      service/src/main/java/com/dayou/service/impl/CustomerCompanyServiceImpl.java
  25. 2 0
      service/src/main/java/com/dayou/service/impl/CustomerLinkmanServiceImpl.java
  26. 29 1
      service/src/main/java/com/dayou/service/impl/DyoaRecordServiceImpl.java
  27. 9 1
      service/src/main/java/com/dayou/service/impl/FinanceClaimServiceImpl.java
  28. 2 0
      service/src/main/java/com/dayou/service/impl/FinanceRealFundServiceImpl.java
  29. 2 2
      service/src/main/java/com/dayou/service/impl/MajorProductionServiceImpl.java
  30. 3 1
      service/src/main/java/com/dayou/service/impl/PersonalServiceImpl.java
  31. 48 6
      sql/update_sql.sql

+ 0 - 11
biz-base/src/main/java/com/dayou/controller/HistoryOrderController.java

@@ -50,17 +50,6 @@ public class HistoryOrderController {
     }
 
     /**
-     * 同步大中型订单
-     * @param id
-     * @return
-     */
-    @GetMapping("/fetch/major/{id}")
-    public RestResponse<Boolean> fetchAboutMajor(@PathVariable("id") String id){
-        Boolean ret = dyoaHistoryService.fetchAboutMajor(id);
-        return RestResponse.data(ret);
-    }
-
-    /**
      * 获取老系统资产订单
      * @param hisOrderParam 老系统查询参数
      * @return Page<HisAssetsOrder>

+ 33 - 13
biz-base/src/main/resources/application-prod.yml

@@ -3,19 +3,39 @@ server:
 
 spring:
   datasource:
-    url: jdbc:mysql://localhost:1230/item-management?autoReconnect=true&useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true
-    username: root
-    password: Dypg@1996
-    initialSize: 10 #初始化连接数
-    minIdle: 10 #最小空闲连接数
-    max-active: 100 #最大连接数
-    maxWait: 60000 #最大等待时间ms(获取不到连接后多久超时)
-    hikari:
-      minimum-idle: 5
-      maximum-pool-size: 200
-      connection-timeout: 30000
-      idle-timeout: 600000
-      max-lifetime: 1800000
+    dynamic:
+      primary: mbs
+      datasource:
+        mbs:
+          url: jdbc:mysql://localhost:1230/item-management?autoReconnect=true&useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
+          driver-class-name: com.mysql.cj.jdbc.Driver
+          username: root
+          password: Dypg@1996
+          initialSize: 10 #初始化连接数D
+          minIdle: 10 #最小空闲连接数
+          max-active: 100 #最大连接数
+          maxWait: 60000 #最大等待时间ms(获取不到连接后多久超时)
+          hikari:
+            minimum-idle: 5
+            maximum-pool-size: 200
+            connection-timeout: 30000
+            idle-timeout: 600000
+            max-lifetime: 1800000
+        dyoa:
+          url: jdbc:mysql://192.168.0.7:3306/p_dyoa?autoReconnect=true&useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
+          driver-class-name: com.mysql.cj.jdbc.Driver
+          username: mbs
+          password: Dypg@1996
+          initialSize: 10 #初始化连接数D
+          minIdle: 10 #最小空闲连接数
+          max-active: 100 #最大连接数
+          maxWait: 60000 #最大等待时间ms(获取不到连接后多久超时)
+          hikari:
+            minimum-idle: 5
+            maximum-pool-size: 200
+            connection-timeout: 30000
+            idle-timeout: 600000
+            max-lifetime: 1800000
 
 
 dfs:

+ 1 - 1
biz-base/src/test/java/history/SyncHistoryTest.java

@@ -113,6 +113,6 @@ public class SyncHistoryTest {
 
     @Test
     public void getLandTargetMajorTest() throws NoSuchFieldException, IllegalAccessException {
-       dyoaHistoryService.fetchDyoaMajorOrderProduction();
+       dyoaHistoryService.fetchAssetsOrderProduction();
     }
 }

+ 25 - 4
dao/src/main/java/com/dayou/mapper/DyoaHistoryMapper.java

@@ -1,8 +1,10 @@
 package com.dayou.mapper;
 
-import com.dayou.dto.history.HisMajorTarget;
+import com.dayou.dto.history.HisAssetsProduction;
+import com.dayou.dto.history.HisMajorProduction;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -10,12 +12,31 @@ public interface DyoaHistoryMapper {
 
     Map<String,Object> queryMajorOrder(@Param("id") String id);
 
-    List<HisMajorTarget> queryMajorHouseTarget(@Param("id") String id);
+    List<HisMajorProduction> queryMajorHouseTarget(@Param("id") String id);
 
-    List<HisMajorTarget> queryMajorLandTarget(@Param("id")String id);
+    List<HisMajorProduction> queryMajorLandTarget(@Param("id")String id);
 
     List<String> selectDyoaMajorOrderIds();
 
-    List<HisMajorTarget> queryMajorProduction(@Param("id") String id);
+    List<HisMajorProduction> queryMajorProduction(@Param("id") String id);
 
+    List<String> selectDyoaPersonalOrderIds();
+
+    Map<String, Object> queryPersonalOrder(@Param("id") String id);
+
+    List<String> getNewOrderIds(@Param("max") Date max);
+
+    Map<String, Object> getRealAmountInfo(@Param("id") String max);
+
+    List<String> getNewRealAmount(@Param("max") Date max);
+
+    List<String> getNewClaimRecordIds(@Param("max") Date max);
+
+    Map<String, Object> getNewClaimRecord(@Param("id") String id);
+
+    List<String> selectDyoaAssetsOrderIds();
+
+    Map<String, Object> queryAssetsOrder(@Param("id")String id);
+
+    List<HisAssetsProduction> queryAssetsProduction(@Param("id") String id);
 }

+ 14 - 0
dao/src/main/java/com/dayou/mapper/DyoaRecordMapper.java

@@ -2,6 +2,12 @@ package com.dayou.mapper;
 
 import com.dayou.entity.DyoaRecord;
 import com.dayou.dao.CustomBaseMapper;
+import com.dayou.entity.OrderFund;
+
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +19,12 @@ import com.dayou.dao.CustomBaseMapper;
  */
 public interface DyoaRecordMapper extends CustomBaseMapper<DyoaRecord> {
 
+    Date getMaxOrderTime();
+
+    Date getMaxRealAmountCreatedTime();
+
+    Date getMaxClaimDate();
+
+    List<DyoaRecord> selectOrderFundIdByDyoaOrderId();
+
 }

+ 3 - 0
dao/src/main/java/com/dayou/mapper/FinanceClaimMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.dto.RealFundAssetsStatDTO;
 import com.dayou.entity.FinanceClaim;
 import com.dayou.dao.CustomBaseMapper;
+import com.dayou.entity.OrderFund;
 import com.dayou.vo.FinanceClaimVO;
 import com.dayou.vo.RealFundAssetsStatVO;
 import com.dayou.vo.RealFundMajorStatVO;
@@ -51,4 +52,6 @@ public interface FinanceClaimMapper extends CustomBaseMapper<FinanceClaim> {
     Page<RealFundPersonalVO> personalStat(Page page, @Param("dto")RealFundPersonalVO personalVO);
 
     List<RealFundPersonalVO> personalStatExport(@Param("dto") RealFundPersonalVO personalVO);
+
+    List<OrderFund> queryOrderTotalAmount();
 }

+ 164 - 5
dao/src/main/resources/mapper/DyoaHistoryMapper.xml

@@ -43,11 +43,12 @@
                description,
                 standardPrice,
                createdDatetime,
-               needPay
+               needPay,
+                 bankContactName
         from dy_order where id = #{id}
     </select>
 
-       <select id="queryMajorHouseTarget" parameterType="java.lang.String" resultType="com.dayou.dto.history.HisMajorTarget">
+       <select id="queryMajorHouseTarget" parameterType="java.lang.String" resultType="com.dayou.dto.history.HisMajorProduction">
            select
            d.id,
            doth.id as tId,
@@ -100,7 +101,7 @@
            left join dy_order_product dop on dop.orderId = d.id where doth.orderId = #{id}
        </select>
 
-       <select id="queryMajorLandTarget" parameterType="java.lang.String" resultType="com.dayou.dto.history.HisMajorTarget">
+       <select id="queryMajorLandTarget" parameterType="java.lang.String" resultType="com.dayou.dto.history.HisMajorProduction">
               select
                      d.id,
                      dotl.id as tId,
@@ -149,7 +150,7 @@
 
        </select>
 
-    <select id="queryMajorProduction" parameterType="java.lang.String" resultType="com.dayou.dto.history.HisMajorTarget">
+    <select id="queryMajorProduction" parameterType="java.lang.String" resultType="com.dayou.dto.history.HisMajorProduction">
         select
         d.id,
         dop.id as pId,
@@ -184,4 +185,162 @@
     <select id="selectDyoaMajorOrderIds" resultType="java.lang.String">
         select id from dy_order where masterName is not null
     </select>
-</mapper>
+
+    <select id="selectDyoaPersonalOrderIds" resultType="java.lang.String">
+        select id from dy_order where masterName is not null
+    </select>
+
+    <select id="queryPersonalOrder" parameterType="java.lang.String" resultType="map">
+        SELECT
+            id,
+            orderNo,
+            locations,
+            target,
+            purpose,
+            loanMaxMoney,
+            loanMaxYear,
+            masterName ,
+            principal1,
+            principal1Mobile,
+            principal2,
+            principal2Mobile,
+            description,
+            outerEmpName,
+            surveyEmpName,
+            productEmpName,
+            priceEmpName,
+            needPay,
+            agent,
+            loanProperty,
+            loanUsage,
+            loanExpired,
+            customerType,
+            customerName,
+            customerName2,
+            terminalType,
+            terminalName,
+            terminalContactName,
+            terminalContactMobile,
+            finished,
+            finishTime,
+            files,
+            createdDatetime,
+            bankContactName
+        FROM
+            dy_order_loan where id = #{id}
+    </select>
+
+    <select id="getNewOrderIds" parameterType="java.util.Date" resultType="java.lang.String">
+        select id from dy_order_loan
+        where  masterName IS NOT NULL
+          and deleted = 0
+        <if test="max!=null">
+            and createdDatetime &gt; #{max}
+        </if>
+    </select>
+
+    <select id="getNewRealAmount" parameterType="java.util.Date" resultType="java.lang.String">
+        select id
+        from dy_finance_income
+        <where>
+            <if test="max!=null">
+                and createdDatetime &gt; #{max}
+            </if>
+        </where>
+    </select>
+
+    <select id="getRealAmountInfo" parameterType="java.lang.String" resultType="map">
+        select id,incomeTime,companyName,bankName,bankNo,money,description,creatorName,createdDatetime
+        from dy_finance_income
+      where id = #{id}
+    </select>
+
+    <select id="getNewClaimRecordIds" parameterType="java.util.Date" resultType="java.lang.String">
+        SELECT
+           id
+        FROM
+            dy_finance_income_order
+        <where>
+            <if test="max!=null">
+                and createdDatetime &gt; #{max}
+            </if>
+        </where>
+    </select>
+
+    <select id="getNewClaimRecord" parameterType="java.lang.String" resultType="map">
+        SELECT
+            id,
+            orderId,
+            incomeId,
+            money,
+            takeEmpName,
+            orderType,
+            createdDatetime
+        FROM
+            dy_finance_income_order where id = #{id}
+    </select>
+
+    <select id="selectDyoaAssetsOrderIds" resultType="java.lang.String">
+        select id from dy_assets where deleted = 0
+    </select>
+
+    <select id="queryAssetsOrder" parameterType="java.lang.String" resultType="map">
+        SELECT
+            id,
+            masterName ,
+            assign,
+            masterOrgName,
+            code,
+            name,
+            businessType,
+            managerName,
+            companyName,
+            principal,
+            principalName,
+            principalMobile,
+            description,
+            orderTime,
+            needPay,
+            standardPrice,
+            archiveTime,
+            customerType,
+            customerName,
+            bankContactName,
+            terminalType,
+            terminalName,
+            terminalContactName,
+            importantAsset,
+            stateOwned,
+            abroadAsset,
+            cz,
+            stock,
+            repeatOrder
+        FROM
+            dy_assets where id = #{id} and deleted = 0
+
+    </select>
+
+    <select id="queryAssetsProduction" parameterType="java.lang.String" resultType="com.dayou.dto.history.HisAssetsProduction">
+        SELECT
+            da.id,
+            dop.id AS pId,
+            da.yjsReportNO,
+            da.reportNo,
+            da.needPay,
+            da.standardPrice,
+            da.principal,
+            da.principalMobile,
+            da.money,
+            da.area,
+            da.price,
+            dop.printQuantity,
+            da.archiveTime,
+            da.finished,
+            dop.type
+        FROM
+            dy_assets da
+                LEFT JOIN dy_order_product dop ON da.id = dop.orderId
+        WHERE
+            da.deleted = 0 and da.id = #{id}
+    </select>
+ </mapper>

+ 34 - 0
dao/src/main/resources/mapper/DyoaRecordMapper.xml

@@ -23,4 +23,38 @@
         mbs_type, mbs_id, dyoa_id, user_id
     </sql>
 
+    <select id="getMaxOrderTime" resultType="java.util.Date">
+        select max(order_datetime) from dyoa_record where mbs_type = 'PERSONAL_ORDER'
+    </select>
+
+    <select id="getMaxRealAmountCreatedTime" resultType="java.util.Date">
+        select max(order_datetime) from dyoa_record where mbs_type = 'REAL_AMOUNT'
+    </select>
+
+    <select id="getMaxClaimDate" resultType="java.util.Date">
+        select max(order_datetime) from dyoa_record where mbs_type = 'REAL_AMOUNT_CLAIM'
+    </select>
+
+    <select id="selectOrderFundIdByDyoaOrderId" resultType="com.dayou.entity.DyoaRecord">
+        SELECT
+            m.dyoa_id,
+            f.id as mbsId
+        FROM
+            (
+                SELECT
+                    mbs_id,
+                    dyoa_id,
+                    ( CASE mbs_type WHEN 'MAJOR_ORDER' THEN 'MAJOR_BUSINESS' WHEN 'PERSONAL_ORDER' THEN 'PERSONAL_BUSINESS'
+                        WHEN 'ASSETS_ORDER' THEN 'ASSET_BUSINESS'
+                        END ) AS mbs_type
+                FROM
+                    dyoa_record
+                WHERE
+                    mbs_type IN ( 'MAJOR_ORDER','PERSONAL_ORDER','ASSETS_ORDER' )) m
+                LEFT JOIN order_fund f ON (
+                f.business_id = m.mbs_id
+                    AND f.business_type = m.mbs_type) where f.id is not null
+    </select>
+
+
 </mapper>

+ 10 - 0
dao/src/main/resources/mapper/FinanceClaimMapper.xml

@@ -335,4 +335,14 @@
     <select id="personalStatExport" parameterType="com.dayou.vo.RealFundPersonalVO" resultType="com.dayou.vo.RealFundPersonalVO">
         <include refid="personalStatSql" />
     </select>
+
+    <select id="queryOrderTotalAmount" resultType="com.dayou.entity.OrderFund">
+        SELECT
+            fc.order_fund_id as id,
+            realAmount,
+            oof.business_type
+        FROM
+            ( SELECT order_fund_id, sum( claim_amount ) realAmount FROM finance_claim WHERE deleted = 0 GROUP BY order_fund_id ) fc
+                LEFT JOIN order_fund oof ON oof.id = fc.order_fund_id
+    </select>
 </mapper>

+ 1 - 1
dao/src/main/resources/mapper/PersonalMapper.xml

@@ -335,7 +335,7 @@
                 LEFT JOIN user u3 ON u3.id = p.pricing_staff
                 left join (select business_id,real_amount,should_amount from order_fund where business_type='PERSONAL_BUSINESS' and deleted = 0) o on o.business_id = p.id
         where
-            p.deleted = 0  and pt.deleted= 0 and p.client_manager_id = #{personal.clientManagerId}
+            p.deleted = 0  and p.client_manager_id = #{personal.clientManagerId}
         <if test="keyword!=null and keyword!='' ">
             and (
             p.location like concat ('%',#{keyword},'%')

+ 28 - 0
domain/src/main/java/com/dayou/dto/history/HisAssetsProduction.java

@@ -0,0 +1,28 @@
+package com.dayou.dto.history;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class HisAssetsProduction {
+
+    private String id;
+    private String pId;
+    private String type;
+    private String reportNo;
+    private String yjsReportNo;
+    private String principal;
+    private String principalMobile;
+    private String propertyName;
+    private BigDecimal area;
+    private BigDecimal money;
+    private BigDecimal price;
+    private Boolean finished;
+    private Date archiveTime;
+    private BigDecimal standardPrice;
+    private BigDecimal needPay;
+    private Integer printQuantity;
+
+}

+ 1 - 1
domain/src/main/java/com/dayou/dto/history/HisMajorTarget.java

@@ -7,7 +7,7 @@ import java.time.LocalDate;
 import java.util.Date;
 
 @Data
-public class HisMajorTarget {
+public class HisMajorProduction {
 
     private String id;
     private String tId;

+ 2 - 1
domain/src/main/java/com/dayou/entity/AssetsProduction.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.dayou.common.BaseEntity;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.Date;
 import java.util.List;
 
 import lombok.Data;
@@ -156,7 +157,7 @@ public class AssetsProduction extends BaseEntity {
      */
     @ImportCell
     @ExportCell(columnName = "归档日期")
-    private LocalDateTime saveFileDate;
+    private Date saveFileDate;
 
     /**
      * 送达状态

+ 8 - 0
domain/src/main/java/com/dayou/entity/DyoaRecord.java

@@ -5,6 +5,9 @@ import lombok.EqualsAndHashCode;
 import com.dayou.annotation.ExcelSheet;
 import com.dayou.annotation.ExportCell;
 import com.dayou.annotation.ImportCell;
+
+import java.util.Date;
+
 /**
  * <p>
  * 数据同步记录
@@ -44,5 +47,10 @@ public class DyoaRecord extends BaseEntity {
      */
     private Long userId;
 
+    /**
+     * 下单时间个贷
+     */
+    private Date orderDatetime;
+
 
 }

+ 2 - 1
domain/src/main/java/com/dayou/entity/FinanceClaim.java

@@ -2,6 +2,7 @@ package com.dayou.entity;
 import java.math.BigDecimal;
 import com.dayou.common.BaseEntity;
 import java.time.LocalDateTime;
+import java.util.Date;
 
 import com.github.liangbaika.validate.annations.AbcValidate;
 import com.github.liangbaika.validate.enums.Check;
@@ -50,7 +51,7 @@ public class FinanceClaim extends BaseEntity {
     /**
      * 认领时日
      */
-    private LocalDateTime claimDatetime;
+    private Date claimDatetime;
 
     /**
      * 认领金额

+ 9 - 1
domain/src/main/java/com/dayou/enums/MainBusinessEnum.java

@@ -31,7 +31,15 @@ public enum MainBusinessEnum implements CodeMsgEnumInterface<String,String> {
 
     ALL_BUSINESS("ALL_BUSINESS","全局业务"),
 
-    MAJOR_ORDER("MAJOR_ORDER","大中型订单")
+    MAJOR_ORDER("MAJOR_ORDER","大中型订单"),
+
+    PERSONAL_ORDER("PERSONAL_ORDER","个贷订单"),
+
+    REAL_AMOUNT("REAL_AMOUNT","实收款"),
+
+    REAL_AMOUNT_CLAIM("REAL_AMOUNT_CLAIM","实收款认领"),
+
+    ASSETS_ORDER("ASSETS_ORDER","资产订单")
     ;
 
    MainBusinessEnum(String code, String name) {

+ 628 - 44
service/src/main/java/com/dayou/dyoa/DyoaHistoryServiceImpl.java

@@ -14,17 +14,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.common.BaseEntity;
-import com.dayou.dto.PriceFeedbackDTO;
-import com.dayou.dto.history.HisAssetsOrder;
-import com.dayou.dto.history.HisMajorOrder;
-import com.dayou.dto.history.HisMajorTarget;
-import com.dayou.dto.history.HisOrderParam;
+import com.dayou.dto.history.*;
 import com.dayou.entity.*;
 import com.dayou.enums.MainBusinessEnum;
 import com.dayou.enums.ProductionEnum;
 import com.dayou.exception.ErrorCode;
 import com.dayou.mapper.DyoaHistoryMapper;
+import com.dayou.mapper.DyoaRecordMapper;
+import com.dayou.mapper.FinanceClaimMapper;
 import com.dayou.service.*;
+import com.dayou.service.impl.AssetsServiceImpl;
 import com.dayou.utils.DateUtils;
 import com.dayou.utils.HttpKit;
 import lombok.extern.slf4j.Slf4j;
@@ -44,8 +43,7 @@ import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 import static com.dayou.common.Constants.*;
-import static com.dayou.enums.MainBusinessEnum.MAJOR_BUSINESS;
-import static com.dayou.enums.MainBusinessEnum.MAJOR_ORDER;
+import static com.dayou.enums.MainBusinessEnum.*;
 
 @DS("dyoa")
 @Service
@@ -66,11 +64,26 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
 
     private Map<String,Long> departments = new HashMap<>();
 
+    private Map<String,Long> realAmounts = new HashMap<>();
+
+    private Map<String,Long> orderFundIds = new HashMap<>();
+
 
     private static final Map<String,String> MAJOR_ORDER_COLUM = new HashMap<>();
 
     private static final Map<String,String> MAJOR_PRODUCTION_COLUM = new HashMap<>();
 
+    private static final Map<String,String> PERSONAL_ORDER_COLUM = new HashMap<>();
+
+    private static final Map<String,String> REAL_AMOUNT_COLUM = new HashMap<>();
+
+    private static final Map<String,String> REAL_AMOUNT_CLAIM_COLUM = new HashMap<>();
+
+    private static final Map<String,String> ASSETS_ORDER_COLUM = new HashMap<>();
+
+    private static final Map<String,String> ASSETS_PRODUCTION_COLUM = new HashMap<>();
+
+
 
     @Autowired
     private IUserService userService;
@@ -85,13 +98,14 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
     private IDyoaRecordService dyoaRecordService;
 
     @Autowired
+    private IFinanceRealFundService financeRealFundService;
+
+    @Autowired
     private IOrderFundService orderFundService;
 
     @Autowired
     private IProductionFundService productionFundService;
 
-
-
     @Autowired
     private IMajorService majorServiceImpl;
 
@@ -99,6 +113,26 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
     @Autowired
     private IMajorProductionService majorProductionService;
 
+    @Autowired
+    private IPersonalService personalService;
+
+    @Autowired
+    private ICustomerCompanyService customerCompanyService;
+
+    @Autowired
+    private ICustomerLinkmanService customerLinkmanService;
+
+    @Autowired
+    private IAssetsService assetsService;
+
+    @Autowired
+    private IFinanceClaimService financeClaimService;
+
+    @Autowired
+    private IAssetsService assetsServiceImpl;
+
+    @Autowired
+    private IAssetsProductionService assetsProductionService;
     static {
 //        MAJOR_ORDER_COLUM.put("id","id");
         MAJOR_ORDER_COLUM.put("name","name");
@@ -134,6 +168,11 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
         MAJOR_ORDER_COLUM.put("terminalType","terminalClienteleType");
         MAJOR_ORDER_COLUM.put("members","members");
         MAJOR_ORDER_COLUM.put("description","remark");
+        MAJOR_ORDER_COLUM.put("customerName","clienteleId");
+        MAJOR_ORDER_COLUM.put("customerName2","clienteleSubId");
+        MAJOR_ORDER_COLUM.put("bankContactName","clienteleContactId");
+        MAJOR_ORDER_COLUM.put("terminalName","terminalClienteleId");
+        MAJOR_ORDER_COLUM.put("terminalContactName","terminalClienteleContactId");
 
         //大中型产品字段
         MAJOR_PRODUCTION_COLUM.put("pType","production");
@@ -160,8 +199,95 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
         MAJOR_PRODUCTION_COLUM.put("deliveryState","delivery");
         MAJOR_PRODUCTION_COLUM.put("printQuantity","printTimes");
 
+        //个贷订单字段
+        PERSONAL_ORDER_COLUM.put("orderNo","orderId");
+        PERSONAL_ORDER_COLUM.put("locations","location");
+        PERSONAL_ORDER_COLUM.put("target","evaluateAim");
+        PERSONAL_ORDER_COLUM.put("purpose","purpose");
+        PERSONAL_ORDER_COLUM.put("loanMaxMoney","loanLimit");
+        PERSONAL_ORDER_COLUM.put("loanMaxYear","loanPeriod");
+        PERSONAL_ORDER_COLUM.put("masterName","clientManagerId");
+        PERSONAL_ORDER_COLUM.put("principal1","bailorA");
+        PERSONAL_ORDER_COLUM.put("principal1Mobile","bailoraTel");
+        PERSONAL_ORDER_COLUM.put("principal2","bailorB");
+        PERSONAL_ORDER_COLUM.put("principal2Mobile","bailorbTel");
+        PERSONAL_ORDER_COLUM.put("description","remark");
+        PERSONAL_ORDER_COLUM.put("outerEmpName","outwardStaff");
+        PERSONAL_ORDER_COLUM.put("productEmpName","inwardStaff");
+        PERSONAL_ORDER_COLUM.put("priceEmpName","pricingStaff");
+        PERSONAL_ORDER_COLUM.put("agent","agent");
+        PERSONAL_ORDER_COLUM.put("loanProperty","loanNature");
+        PERSONAL_ORDER_COLUM.put("loanUsage","loanAim");
+        PERSONAL_ORDER_COLUM.put("loanExpired","loanExpire");
+        PERSONAL_ORDER_COLUM.put("customerType","clienteleType");
+        PERSONAL_ORDER_COLUM.put("customerName","clienteleId");
+        PERSONAL_ORDER_COLUM.put("customerName2","clienteleSubId");
+        PERSONAL_ORDER_COLUM.put("bankContactName","clienteleContactId");
+        PERSONAL_ORDER_COLUM.put("terminalType","terminalClienteleType");
+        PERSONAL_ORDER_COLUM.put("terminalName","terminalClienteleId");
+        PERSONAL_ORDER_COLUM.put("terminalContactName","terminalClienteleContactId");
+        PERSONAL_ORDER_COLUM.put("finished","ifSaveFile");
+        PERSONAL_ORDER_COLUM.put("finishTime","saveFileDate");
+        PERSONAL_ORDER_COLUM.put("files","credentials");
+
+        //实收款字段
+        REAL_AMOUNT_COLUM.put("incomeTime","payDatetime");
+        REAL_AMOUNT_COLUM.put("companyName","payer");
+        REAL_AMOUNT_COLUM.put("bankName","payerBank");
+        REAL_AMOUNT_COLUM.put("bankNo","payerAccount");
+        REAL_AMOUNT_COLUM.put("money","amount");
+        REAL_AMOUNT_COLUM.put("description","remark");
+        REAL_AMOUNT_COLUM.put("creatorName","creatorId");
+
+        //实收款认领记录
+        REAL_AMOUNT_CLAIM_COLUM.put("orderId","orderFundId");
+        REAL_AMOUNT_CLAIM_COLUM.put("incomeId","realFundId");
+        REAL_AMOUNT_CLAIM_COLUM.put("money","claimAmount");
+        REAL_AMOUNT_CLAIM_COLUM.put("takeEmpName","claimUserId");
+        REAL_AMOUNT_CLAIM_COLUM.put("createdDatetime","claimDatetime");
+
+        //资产订单字段
+        ASSETS_ORDER_COLUM.put("masterName","clientManagerId");
+        ASSETS_ORDER_COLUM.put("assign","allotType");
+        ASSETS_ORDER_COLUM.put("masterOrgName","departmentId");
+        ASSETS_ORDER_COLUM.put("code","orderId");
+        ASSETS_ORDER_COLUM.put("name","name");
+        ASSETS_ORDER_COLUM.put("businessType","assetsBusinessGener");
+        ASSETS_ORDER_COLUM.put("managerName","principalId");
+        ASSETS_ORDER_COLUM.put("companyName","clienteleSubId");
+        ASSETS_ORDER_COLUM.put("principal","bailor");
+        ASSETS_ORDER_COLUM.put("principalName","bailorContactName");
+        ASSETS_ORDER_COLUM.put("principalMobile","bailorContactTel");
+        ASSETS_ORDER_COLUM.put("description","remark");
+        ASSETS_ORDER_COLUM.put("customerType","clienteleType");
+        ASSETS_ORDER_COLUM.put("customerName","clienteleId");
+        ASSETS_ORDER_COLUM.put("bankContactName","clienteleContactId");
+        ASSETS_ORDER_COLUM.put("terminalType","terminalClienteleType");
+        ASSETS_ORDER_COLUM.put("terminalName","terminalClienteleId");
+        ASSETS_ORDER_COLUM.put("terminalContactName","terminalClienteleContactId");
+        ASSETS_ORDER_COLUM.put("importantAsset","significantAssetsReorganization");
+        ASSETS_ORDER_COLUM.put("stateOwned","stateAssets");
+        ASSETS_ORDER_COLUM.put("abroadAsset","foreignAssetsInvolved");
+        ASSETS_ORDER_COLUM.put("cz","dispenseBenefit");
+        ASSETS_ORDER_COLUM.put("stock","security");
+        ASSETS_ORDER_COLUM.put("repeatOrder","entrustAgain");
+
+        //资产产品字段
+        ASSETS_PRODUCTION_COLUM.put("principal","clientName");
+        ASSETS_PRODUCTION_COLUM.put("principalMobile","clientTel");
+        ASSETS_PRODUCTION_COLUM.put("money","evaluateAmount");
+        ASSETS_PRODUCTION_COLUM.put("area","evaluateAcreage");
+        ASSETS_PRODUCTION_COLUM.put("price","evaluatePrice");
+        ASSETS_PRODUCTION_COLUM.put("printQuantity","printCount");
+        ASSETS_PRODUCTION_COLUM.put("archiveTime","saveFileDate");
+        ASSETS_PRODUCTION_COLUM.put("finished","delivery");
+        ASSETS_PRODUCTION_COLUM.put("type","productionType");
+
     }
 
+
+
+
     @Override
     public Page<HisMajorOrder> hisMajorPage(HisOrderParam param) {
         checkCookie();
@@ -281,13 +407,14 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
             if (CollectionUtil.isNotEmpty(dataArray)){
                 List<HisAssetsOrder> hisAssetsOrders = dataArray.toJavaList(HisAssetsOrder.class);
                 page.setRecords(hisAssetsOrders);
-                page.setTotal(Long.parseLong(String.valueOf(data.get("total"))));
+                page.setTotal(Long.valueOf(String.valueOf(data.get("total"))));
             }
         } catch (JSONException e) {
             historySystemLogin();
             ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"远程连接超时,请刷新页面。");
         } catch (Exception e) {
             log.error("远程调用失败.");
+            e.printStackTrace();
         }
 
         return page;
@@ -296,30 +423,23 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
     @DSTransactional
     @Override
     public void fetchDyoaMajorOrderProduction() {
-        List<String> dyoaIds = dyoaHistoryMapper.selectDyoaMajorOrderIds();
-        dyoaIds.stream().forEach(x->{
+        List<String> majorOrderIds = dyoaHistoryMapper.selectDyoaMajorOrderIds();
+        majorOrderIds.stream().forEach(x->{
             fetchAboutMajor(x);
         });
     }
 
-
-    public Map<String,Object> queryMajorOrder(String majorId){
-        Map<String, Object> resultMap = dyoaHistoryMapper.queryMajorOrder(majorId);
-        return resultMap;
-    }
-
-    //多数据源切换,主方法用@DSTransactional注解解决事务失效问题
-
     @Override
-    public Boolean fetchAboutMajor(String id) {
+    public void fetchAboutMajor(String id) {
         try {
             //1. 获取订单信息,插入major表。
             Map<String, Object> dyoaMajorOrder = dyoaHistoryMapper.queryMajorOrder(id);
             Long mbsId = this.doCreateMajorOrder(dyoaMajorOrder);
             //2. 同步产品
             Double shouldAmount = (Double) dyoaMajorOrder.get("needPay");
-            this.doCreateMajorProduction(shouldAmount,id, mbsId);
-            return Boolean.TRUE;
+            String code = (String) dyoaMajorOrder.get("code");
+            String name = (String) dyoaMajorOrder.get("name");
+            this.doCreateMajorProduction(shouldAmount,id, mbsId,code,name);
         } catch (NoSuchFieldException e) {
             throw new RuntimeException(e);
         } catch (IllegalAccessException e) {
@@ -327,30 +447,466 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
         }
     }
 
-    public void doCreateMajorProduction(Double shouldAmount ,String id,Long majorId) throws NoSuchFieldException, IllegalAccessException {
-        List<HisMajorTarget> majorProductions = dyoaHistoryMapper.queryMajorProduction(id);
-        if (CollectionUtil.isNotEmpty(majorProductions)){
+    @DSTransactional
+    @Override
+    public void fetchDyoaPersonalOrder(){
+        Date max = dyoaRecordService.getMaxOrderTime();
+        List<String> personalOrderIds = dyoaHistoryMapper.getNewOrderIds(max);
+        personalOrderIds.stream().forEach(x->{
+            fetchAboutPersonal(x);
+        });
+    }
 
-            OrderFund orderFund = orderFundService.getOne(new LambdaQueryWrapper<OrderFund>().eq(OrderFund::getBusinessType, MAJOR_BUSINESS.name())
-                    .eq(OrderFund::getBusinessId, majorId).eq(OrderFund::getOrderId, majorProductions.get(0).getCode()));
-
-            if (orderFund==null){
-                //创建订单收款记录
-                orderFund = new OrderFund();
-                orderFund.setBusinessId(majorId);
-                orderFund.setBusinessType(MAJOR_BUSINESS.name());
-                orderFund.setOrderId(majorProductions.get(0).getCode());
-                orderFund.setOrderName(majorProductions.get(0).getName());
-                orderFund.setShouldAmount(BigDecimal.valueOf(shouldAmount));
-                orderFundService.save(orderFund);
+    @DSTransactional
+    @Override
+    public void fetchRealAmountClaimData() {
+        Date max = dyoaRecordService.getMaxClaimDate();
+        List<String> claimIds = dyoaHistoryMapper.getNewClaimRecordIds(max);
+        claimIds.stream().forEach(x->{
+            fetchClaimRecord(x);
+        });
+        //更新订单实收款金额
+        List<OrderFund> orderTotalAmount = financeClaimService.queryOrderTotalAmount();
+        orderFundService.updateBatchById(orderTotalAmount);
+
+        //分配认领金额到产品收款表
+        List<OrderFund> majorOrderFund = orderTotalAmount.stream().filter(x -> x.getBusinessType().equals(MAJOR_BUSINESS.name())).collect(Collectors.toList());
+        majorOrderFund.stream().forEach(x->{
+            List<ProductionFund> prods = productionFundService.list(new LambdaQueryWrapper<ProductionFund>()
+                    .eq(ProductionFund::getOrderFundId, x.getId()).select(ProductionFund::getProductionType));
+            if (CollectionUtil.isNotEmpty(prods)){
+                if (prods.size()>1){
+                    List<ProductionFund> noStatement = prods.stream().filter(p -> !p.getProductionType().equals(ProductionEnum.STATEMENT.name())).collect(Collectors.toList());
+                    if (noStatement.size()>1){
+                        productionFundService.update(new LambdaUpdateWrapper<ProductionFund>()
+                                .eq(ProductionFund::getOrderFundId,x.getId())
+                                .eq(ProductionFund::getProductionType,ProductionEnum.REPORT.name())
+                                .set(ProductionFund::getRealAmount,x.getRealAmount()));
+                    }else {
+                        productionFundService.update(new LambdaUpdateWrapper<ProductionFund>()
+                                .eq(ProductionFund::getOrderFundId,x.getId())
+                                .eq(ProductionFund::getProductionType,noStatement.get(0).getProductionType())
+                                .set(ProductionFund::getRealAmount,x.getRealAmount()));
+                    }
+                }else{
+                    productionFundService.update(new LambdaUpdateWrapper<ProductionFund>()
+                            .eq(ProductionFund::getOrderFundId,x.getId()).set(ProductionFund::getRealAmount,x.getRealAmount()));
+                }
             }
+        });
 
-            for (HisMajorTarget production :majorProductions){
+    }
+
+    private void fetchClaimRecord(String id) {
+        try{
+            Map<String, Object> resultMap = dyoaHistoryMapper.getNewClaimRecord(id);
+            FinanceClaim financeClaim = new FinanceClaim();
+            Class<FinanceClaim> fClass = FinanceClaim.class;
+            String dyoaId = (String) resultMap.get("id");
+            for (Map.Entry<String, String> entry : REAL_AMOUNT_CLAIM_COLUM.entrySet()){
+                Object columValue = resultMap.get(entry.getKey());
+                if (columValue!=null){
+                    String mbsColum = entry.getValue();
+                    Field field = fClass.getDeclaredField(mbsColum);
+                    field.setAccessible(true);
+                    switch (mbsColum){
+                        case "realFundId":
+                            Long realAmountMbsId = findRealAmountMbsId((String) columValue);
+                            if (realAmountMbsId==null){
+                                return;
+                            }
+                            field.set(financeClaim, realAmountMbsId);break;
+                        case "orderFundId":
+                            Long orderFundMbsId = findOrderFundId((String) columValue);
+                            if (orderFundMbsId==null){
+                                return;
+                            }
+                            field.set(financeClaim, orderFundMbsId);break;
+                        case "claimUserId":
+                            field.set(financeClaim,getMbsUserId((String) columValue));break;
+                        case "claimAmount":
+                            field.set(financeClaim, BigDecimal.valueOf((Double) columValue));break;
+//                        case "claimDatetime":
+//                            LocalDate value = DateUtils.parseLocalDateTime((Date) columValue);
+//                            field.set(financeClaim, (Date) columValue);break;
+                        default:
+                            field.set(financeClaim,columValue);
+                    }
+
+                }
+
+            }
+            Date createdDatetime = (Date) resultMap.get("createdDatetime");
+            financeClaim.setCreated(createdDatetime);
+            financeClaimService.save(financeClaim);
+            //插入同步记录表
+            Long mbsId = financeClaim.getId();
+            dyoaRecordService.insert(MainBusinessEnum.REAL_AMOUNT_CLAIM, mbsId, dyoaId,createdDatetime);
+        }catch (NoSuchFieldException e) {
+            throw new RuntimeException(e);
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+
+    @DSTransactional
+    @Override
+    public void fetchRealAmount() {
+        Date max = dyoaRecordService.getMaxRealAmountCreatedTime();
+        List<String> newRealAmount = dyoaHistoryMapper.getNewRealAmount(max);
+        newRealAmount.stream().forEach(x-> {
+            fetchReamAmountDetail(x);
+        });
+    }
+
+    @DSTransactional
+    @Override
+    public void fetchAssetsOrderProduction() {
+        List<String> assetsOrderIds = dyoaHistoryMapper.selectDyoaAssetsOrderIds();
+        assetsOrderIds.stream().forEach(x->{
+            fetchAboutAssets(x);
+        });
+    }
+
+    private void fetchAboutAssets(String id) {
+        try {
+            //1. 获取订单信息,插入assets表。
+            Map<String, Object> dyoaAssetsOrder = dyoaHistoryMapper.queryAssetsOrder(id);
+            Long mbsId = this.doCreateAssetsOrder(dyoaAssetsOrder);
+            //2. 同步产品
+            Double shouldAmount = (Double) dyoaAssetsOrder.get("needPay");
+            String code = (String) dyoaAssetsOrder.get("code");
+            String name = (String) dyoaAssetsOrder.get("name");
+            this.doCreateAssetsProduction(shouldAmount,id, mbsId,code,name);
+        } catch (NoSuchFieldException e) {
+            throw new RuntimeException(e);
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private Long doCreateAssetsOrder(Map<String, Object> dyoaAssetsOrder) throws NoSuchFieldException, IllegalAccessException {
+        String dyoaId = (String) dyoaAssetsOrder.get("id");
+        String managerName = (String) dyoaAssetsOrder.get("managerName");
+
+        DyoaRecord record = dyoaRecordService.getOne(new LambdaQueryWrapper<DyoaRecord>().eq(DyoaRecord::getMbsType, ASSETS_ORDER.name()).eq(DyoaRecord::getDyoaId, dyoaId));
+        if (record != null){
+            //更新项目负责人
+            Long mbsOrderId = record.getMbsId();
+            if (StrUtil.isNotEmpty(managerName)){
+                Assets assets = assetsService.getOne(new LambdaQueryWrapper<Assets>().eq(BaseEntity::getId, mbsOrderId).select(BaseEntity::getId, Assets::getPrincipalId));
+                if (assets.getPrincipalId()==null){
+                    assetsService.update(new LambdaUpdateWrapper<Assets>().set(Assets::getPrincipalId,getMbsUserId(managerName)).eq(BaseEntity::getId, mbsOrderId));
+                    log.info("项目负责人被更新 mbsId: {}",mbsOrderId);
+                }
+            }
+            return mbsOrderId;
+        }
+        Assets assets = new Assets();
+        Class<Assets> aClass = Assets.class;
+        for (Map.Entry<String, String> entry : ASSETS_ORDER_COLUM.entrySet()){
+            Object columValue = dyoaAssetsOrder.get(entry.getKey());
+            if (columValue!=null){
+                String mbsColum = entry.getValue();
+                Field field = aClass.getDeclaredField(mbsColum);
+                field.setAccessible(true);
+                switch (mbsColum){
+                    case "allotType":
+                        field.set(assets,(Boolean) columValue?ASSIGN:BY_TURNS);break;
+                    case "clientManagerId":
+                    case "principalId":
+                        field.set(assets,getMbsUserId((String) columValue));break;
+                    case "departmentId":
+                        field.set(assets,getMbsDepartmentId((String) columValue));break;
+                    case "clienteleSubId":
+                    case "clienteleId":
+                    case "terminalClienteleId":
+                        field.set(assets, getCompanyId((String) columValue));break;
+                    case "terminalClienteleContactId":
+                    case "clienteleContactId":
+                        field.set(assets, getCompanyLinkmanId((String) columValue));break;
+                    default:
+                        field.set(assets,columValue);
+                }
+
+            }
+        }
+        assets.setCreated((Date) dyoaAssetsOrder.get("orderTime"));
+        assetsServiceImpl.save(assets);
+        //插入同步记录表
+        Long mbsId = assets.getId();
+        dyoaRecordService.insert(MainBusinessEnum.ASSETS_ORDER, mbsId, dyoaId,null);
+        return mbsId;
+    }
+
+    private void doCreateAssetsProduction(Double shouldAmount, String id, Long mbsId, String code, String name) throws NoSuchFieldException, IllegalAccessException {
+        //创建订单收款记录
+        OrderFund orderFund = orderFundService.getOne(new LambdaQueryWrapper<OrderFund>().eq(OrderFund::getBusinessType, ASSET_BUSINESS.name())
+                .eq(OrderFund::getBusinessId, mbsId).eq(OrderFund::getOrderId, code));
+        if (orderFund==null){
+            orderFund = new OrderFund();
+            orderFund.setBusinessId(mbsId);
+            orderFund.setBusinessType(ASSET_BUSINESS.name());
+            orderFund.setOrderId(code);
+            orderFund.setOrderName(name);
+            orderFund.setShouldAmount(BigDecimal.valueOf(shouldAmount==null?0d:shouldAmount));
+            orderFundService.save(orderFund);
+        }
+        List<HisAssetsProduction> assetsProductions = dyoaHistoryMapper.queryAssetsProduction(id);
+        //创建产品收款记录
+        if (CollectionUtil.isNotEmpty(assetsProductions)){
+            for (HisAssetsProduction production :assetsProductions){
+                if (StrUtil.isNotBlank(production.getPId())){
+                    AssetsProduction assetsProduction = new AssetsProduction();
+                    assetsProduction.setBusinessId(mbsId);
+                    for (Map.Entry<String, String> entry : ASSETS_PRODUCTION_COLUM.entrySet()){
+                        Field field = HisAssetsProduction.class.getDeclaredField(entry.getKey());
+                        field.setAccessible(true);
+                        Object value = field.get(production);
+                        if (value!=null){
+                            String mbsColum = entry.getValue();
+                            Field xFiled = AssetsProduction.class.getDeclaredField(mbsColum);
+                            xFiled.setAccessible(true);
+                            switch (mbsColum){
+                                case "productionType":
+                                    String productionType = getProductionType((String) value);
+                                    xFiled.set(assetsProduction, productionType);
+                                    break;
+                                default:
+                                    xFiled.set(assetsProduction,value);
+                                    break;
+                            }
+                        }
+
+                    }
+                    if (assetsProduction.getProductionType().equals(ProductionEnum.STATEMENT.name())){
+                        assetsProduction.setProductionNo(production.getYjsReportNo());
+                    }else{
+                        assetsProduction.setProductionNo(production.getReportNo());
+                    }
+                    AssetsProduction mp = assetsProductionService.getOne(new LambdaQueryWrapper<AssetsProduction>().eq(AssetsProduction::getBusinessId, mbsId)
+                            .eq(AssetsProduction::getProductionNo, assetsProduction.getProductionNo()).eq(AssetsProduction::getProductionType, assetsProduction.getProductionType()));
+                    //插入产品记录
+                    if (mp==null){
+                        //查询有没有产品号,如果没有就不创建产品和产品收款
+                        if (StrUtil.isNotBlank(assetsProduction.getProductionNo())){
+                            assetsProductionService.save(assetsProduction);
+                            //创建产品收款记录
+                            ProductionFund productionFund = new ProductionFund();
+                            productionFund.setBusinessId(mbsId);
+                            productionFund.setBusinessType(ASSET_BUSINESS.name());
+                            productionFund.setProductionNo(assetsProduction.getProductionNo());
+                            productionFund.setProductionType(assetsProduction.getProductionType());
+                            productionFund.setOrderFundId(orderFund.getId());
+                            productionFund.setStandardAmount(production.getStandardPrice());
+                            productionFund.setProductionShouldAmount(orderFund.getShouldAmount());
+                            productionFundService.save(productionFund);
+                        }
+
+                    }
+                }
+            }
+        }
+
+    }
+
+
+    private void fetchReamAmountDetail(String id){
+        try{
+            Map<String,Object> resultMap = dyoaHistoryMapper.getRealAmountInfo(id);
+            FinanceRealFund realFund = new FinanceRealFund();
+            Class<FinanceRealFund> fClass = FinanceRealFund.class;
+            String dyoaId = (String) resultMap.get("id");
+            for (Map.Entry<String, String> entry : REAL_AMOUNT_COLUM.entrySet()){
+                Object columValue = resultMap.get(entry.getKey());
+                if (columValue!=null){
+                    String mbsColum = entry.getValue();
+                    Field field = fClass.getDeclaredField(mbsColum);
+                    field.setAccessible(true);
+                    switch (mbsColum){
+                        case "payDatetime":
+                            field.set(realFund,DateUtils.dateToLocalDate((Date) columValue));break;
+                        case "creatorId":
+                            field.set(realFund,getMbsUserId((String) columValue));break;
+                        case "amount":
+                            field.set(realFund, BigDecimal.valueOf((Double) columValue));break;
+                        default:
+                            field.set(realFund,columValue);
+                    }
+
+                }
+            }
+            Date createdDatetime = (Date) resultMap.get("createdDatetime");
+            realFund.setCreated(createdDatetime);
+            financeRealFundService.save(realFund);
+            //插入同步记录表
+            Long mbsId = realFund.getId();
+            dyoaRecordService.insert(MainBusinessEnum.REAL_AMOUNT, mbsId, dyoaId,createdDatetime);
+        }catch (NoSuchFieldException e) {
+            throw new RuntimeException(e);
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+
+    private void fetchAboutPersonal(String dyoaId) {
+        Map<String, Object> dyoaPersonalOrder = dyoaHistoryMapper.queryPersonalOrder(dyoaId);
+        try {
+            //1.插入personal表
+            Personal personal = this.doCreatePersonalOrder(dyoaPersonalOrder);
+            //2.创建订单收款记录
+            this.doCreatedOrderFund(personal);
+        } catch (NoSuchFieldException e) {
+            throw new RuntimeException(e);
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private void doCreatedOrderFund(Personal personal) {
+        //创建订单收款记录
+        OrderFund orderFund = new OrderFund();
+        orderFund.setBusinessId(personal.getId());
+        orderFund.setBusinessType(PERSONAL_BUSINESS.name());
+        orderFund.setOrderId(personal.getOrderId());
+        orderFund.setOrderName(personal.getLocation());
+        orderFundService.save(orderFund);
+    }
+
+    private Personal doCreatePersonalOrder(Map<String, Object> dyoaPersonalOrder) throws NoSuchFieldException, IllegalAccessException {
+        Personal personal = new Personal();
+        Class<Personal> mClass = Personal.class;
+        String dyoaId = (String) dyoaPersonalOrder.get("id");
+        for (Map.Entry<String, String> entry : PERSONAL_ORDER_COLUM.entrySet()){
+            Object columValue = dyoaPersonalOrder.get(entry.getKey());
+            if (columValue!=null){
+                String mbsColum = entry.getValue();
+                Field field = mClass.getDeclaredField(mbsColum);
+                field.setAccessible(true);
+                switch (mbsColum){
+                    case "purpose":
+                    case "credentials":
+                        field.set(personal,covertData((String) columValue,mbsColum));break;
+                    case "clientManagerId":
+                    case "outwardStaff":
+                    case "inwardStaff":
+                    case "pricingStaff":
+                        field.set(personal,getMbsUserId((String) columValue));break;
+                    case "loanLimit":
+                        field.set(personal, BigDecimal.valueOf((Double) columValue));break;
+                    case "loanPeriod":
+                        field.set(personal, BigDecimal.valueOf((Integer) columValue));break;
+                    case "clienteleSubId":
+                    case "clienteleId":
+                        field.set(personal, getCompanyId((String) columValue));break;
+                    case "terminalClienteleId":
+                        String terminalType = (String) dyoaPersonalOrder.get("terminalType");
+                        if ("企业".equals(terminalType)){
+                            field.set(personal, getCompanyId((String) columValue));
+                        }else {
+                            field.set(personal, getCompanyLinkmanId((String) columValue));
+                        }
+                        break;
+                    case "terminalClienteleContactId":
+                    case "clienteleContactId":
+                        field.set(personal, getCompanyLinkmanId((String) columValue));break;
+                    default:
+                        field.set(personal,columValue);
+                }
+
+            }
+        }
+        Date createdDatetime = (Date) dyoaPersonalOrder.get("createdDatetime");
+        personal.setCreated(createdDatetime);
+        personalService.save(personal);
+        //插入同步记录表
+        Long mbsId = personal.getId();
+        dyoaRecordService.insert(MainBusinessEnum.PERSONAL_ORDER, mbsId, dyoaId,createdDatetime);
+        return personal;
+    }
+
+    private static String covertData(String columValue, String mbsColum) {
+        List<String> list = Arrays.asList(columValue.split(","));
+        List<String> ret = new ArrayList<>();
+        if (mbsColum.equals("purpose")){
+            list.stream().forEach(x->{
+                if (x.equals("住宅")){
+                    ret.add("HOUSE");
+                }else if (x.equals("商业")){
+                    ret.add("BUSINESS");
+                }else if (x.equals("办公")){
+                    ret.add("OFFICE");
+                }else if (x.equals("工业")){
+                    ret.add("INDUSTRIAL");
+                }else if (x.equals("其他")){
+                    ret.add("OTHER");
+                }
+            });
+        }
+        if (mbsColum.equals("credentials")){
+            list.stream().forEach(x->{
+                if (x.equals("房产证")){
+                    ret.add("HOUSE_CERTIFICATE");
+                }else if (x.equals("国土证")){
+                    ret.add("LAND_CERTIFICATE");
+                }else if (x.equals("不动产权证")){
+                    ret.add("IMMOVABLE_CERTIFICATE");
+                }
+            });
+        }
+        return JSON.toJSONString(ret);
+    }
+
+    private Long getCompanyId(String columValue) {
+        List<CustomerCompany> list = customerCompanyService.list(new LambdaQueryWrapper<CustomerCompany>().eq(CustomerCompany::getName, columValue)
+                .select(BaseEntity::getId));
+        if (CollectionUtil.isNotEmpty(list)){
+            return list.get(0).getId();
+        }
+        return null;
+    }
+
+    private Long getCompanyLinkmanId(String columValue) {
+        List<CustomerLinkman> list = customerLinkmanService.list(new LambdaQueryWrapper<CustomerLinkman>().eq(CustomerLinkman::getName, columValue)
+                .select(BaseEntity::getId));
+        if (CollectionUtil.isNotEmpty(list)){
+            return list.get(0).getId();
+        }
+        return null;
+    }
+
+    private String toJsonString(String columValue) {
+        List<String> list = Arrays.asList(columValue.split(","));
+        return JSON.toJSONString(list);
+    }
+
+    private void doCreateMajorProduction(Double shouldAmount ,String id,Long majorId,String code,String name) throws NoSuchFieldException, IllegalAccessException {
+
+        //创建订单收款记录
+        OrderFund orderFund = orderFundService.getOne(new LambdaQueryWrapper<OrderFund>().eq(OrderFund::getBusinessType, MAJOR_BUSINESS.name())
+                .eq(OrderFund::getBusinessId, majorId).eq(OrderFund::getOrderId, code));
+        if (orderFund==null){
+            orderFund = new OrderFund();
+            orderFund.setBusinessId(majorId);
+            orderFund.setBusinessType(MAJOR_BUSINESS.name());
+            orderFund.setOrderId(code);
+            orderFund.setOrderName(name);
+            orderFund.setShouldAmount(BigDecimal.valueOf(shouldAmount==null?0d:shouldAmount));
+            orderFundService.save(orderFund);
+        }
+
+        List<HisMajorProduction> majorProductions = dyoaHistoryMapper.queryMajorProduction(id);
+        //创建产品收款记录
+        if (CollectionUtil.isNotEmpty(majorProductions)){
+
+            for (HisMajorProduction production :majorProductions){
                 if (StrUtil.isNotBlank(production.getPId())){
                     MajorProduction majorProduction = new MajorProduction();
                     majorProduction.setMajorId(majorId);
                     for (Map.Entry<String, String> entry : MAJOR_PRODUCTION_COLUM.entrySet()){
-                        Field field = HisMajorTarget.class.getDeclaredField(entry.getKey());
+                        Field field = HisMajorProduction.class.getDeclaredField(entry.getKey());
                         field.setAccessible(true);
                         Object value = field.get(production);
                         if (value!=null){
@@ -409,7 +965,13 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
 
     }
 
-
+    private Long findRealAmountMbsId(String columValue) {
+        if (CollectionUtil.isEmpty(realAmounts)){
+            realAmounts = dyoaRecordService.list(new LambdaQueryWrapper<DyoaRecord>().select(DyoaRecord::getMbsId, DyoaRecord::getDyoaId)
+                    .eq(DyoaRecord::getMbsType, REAL_AMOUNT.name())).stream().collect(Collectors.toMap(DyoaRecord::getDyoaId, DyoaRecord::getMbsId));
+        }
+        return realAmounts.get(columValue);
+    }
 
     private String getProductionType(String value) {
         if (value.contains(ProductionEnum.REPORT.getMsg())){
@@ -463,6 +1025,13 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
                         field.set(major, BigDecimal.valueOf((Double) columValue));break;
                     case "members":
                         field.set(major,getMbsUserIds((String) columValue));break;
+                    case "clienteleSubId":
+                    case "clienteleId":
+                    case "terminalClienteleId":
+                        field.set(major, getCompanyId((String) columValue));break;
+                    case "terminalClienteleContactId":
+                    case "clienteleContactId":
+                        field.set(major, getCompanyLinkmanId((String) columValue));break;
                     default:
                         field.set(major,columValue);
                 }
@@ -473,8 +1042,7 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
         majorServiceImpl.save(major);
         //插入同步记录表
         Long mbsId = major.getId();
-
-        dyoaRecordService.insert(MainBusinessEnum.MAJOR_ORDER, mbsId, dyoaId);
+        dyoaRecordService.insert(MainBusinessEnum.MAJOR_ORDER, mbsId, dyoaId,null);
         return mbsId;
 
     }
@@ -500,9 +1068,18 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
         if (departmentName.equals("土地综合部")){
             departmentName = "土地规划与评估事业部";
         }
-        if (departmentName.equals("资产事业部")){
+        if (departmentName.equals("资产事业部") ||departmentName.equals("事业部")  ){
             departmentName = "资产评估事业部";
         }
+        if (departmentName.equals("资产评估1组")){
+            departmentName = "资产评估一组";
+        }
+        if (departmentName.equals("资产评估2组")){
+            departmentName = "资产评估二组";
+        }
+        if (departmentName.equals("资产评估3组")){
+            departmentName = "资产评估三组";
+        }
         return departments.get(departmentName);
     }
 
@@ -515,6 +1092,13 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
         return JSON.toJSONString(userIds);
     }
 
+    private Long findOrderFundId(String columValue){
+        if (CollectionUtil.isEmpty(orderFundIds)){
+            orderFundIds = dyoaRecordService.selectOrderFundIdByDyoaOrderId().stream().collect(Collectors.toMap(DyoaRecord::getDyoaId,DyoaRecord::getMbsId));
+        }
+        return orderFundIds.get(columValue);
+    }
+
 //    private Long getMbsWorkFlows(String flowCode){
 //        if (CollectionUtil.isEmpty(workFlows)){
 //            List<WorkFlow> list = workFlowService.list(new LambdaQueryWrapper<WorkFlow>().select(BaseEntity::getId, WorkFlow::getCode));

+ 9 - 4
service/src/main/java/com/dayou/dyoa/IDyoaHistoryService.java

@@ -15,9 +15,7 @@ public interface IDyoaHistoryService {
 
     String getEverCookie();
 
-    Map<String,Object> queryMajorOrder(String majorId);
-
-    Boolean fetchAboutMajor(String id);
+    void fetchAboutMajor(String id);
 
     /**
      * 获取老系统资产订单
@@ -26,6 +24,13 @@ public interface IDyoaHistoryService {
      */
     Page<HisAssetsOrder> hisAssetsPage(HisOrderParam param);
 
-    //批量同步大中型订单和产品
     void fetchDyoaMajorOrderProduction();
+
+    void fetchDyoaPersonalOrder();
+
+    void fetchRealAmountClaimData();
+
+    void fetchRealAmount();
+
+     void fetchAssetsOrderProduction();
 }

+ 37 - 0
service/src/main/java/com/dayou/dyoa/task/FetchDyoaDataSchedule.java

@@ -0,0 +1,37 @@
+package com.dayou.dyoa.task;
+
+import com.dayou.dyoa.IDyoaHistoryService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component
+public class FetchDyoaDataSchedule {
+
+    @Autowired
+    private IDyoaHistoryService dyoaHistoryService;
+
+
+    //每天凌晨01:30触发
+    @Scheduled(cron = "0 30 1 * * ?")
+    public void syncRealAmountDate(){
+        dyoaHistoryService.fetchRealAmount();
+        log.info("同步实收款数据完成");
+    }
+
+    //每天凌晨02:00触发
+    @Scheduled(cron = "0 0 2 * * ?")
+    public void syncDyoaMajorDate(){
+        dyoaHistoryService.fetchDyoaMajorOrderProduction();
+        log.info("同步大中型数据完成");
+    }
+
+    //每天凌晨02:30触发
+    @Scheduled(cron = "0 30 2 * * ?")
+    public void syncDyoaPersonalDate(){
+        dyoaHistoryService.fetchDyoaPersonalOrder();
+        log.info("同步个贷数据完成");
+    }
+}

+ 14 - 1
service/src/main/java/com/dayou/service/IDyoaRecordService.java

@@ -6,6 +6,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.dayou.enums.MainBusinessEnum;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
 /**
  * <p>
  * 数据同步记录 服务类
@@ -18,8 +23,16 @@ public interface IDyoaRecordService extends IService<DyoaRecord> {
 
         Page<DyoaRecord> selectPage(Page page,DyoaRecord dyoaRecord);
 
-        void insert(MainBusinessEnum businessEnum, Long mbsId, String dyoaId);
+        void insert(MainBusinessEnum businessEnum, Long mbsId, String dyoaId,Date orderTime);
 
         void isExist(MainBusinessEnum businessEnum,String dyodId);
+
+        Date getMaxOrderTime();
+
+        Date getMaxRealAmountCreatedTime();
+
+        Date getMaxClaimDate();
+
+        List<DyoaRecord> selectOrderFundIdByDyoaOrderId();
 }
 

+ 3 - 0
service/src/main/java/com/dayou/service/IFinanceClaimService.java

@@ -4,6 +4,7 @@ import com.dayou.dto.RealFundAssetsStatDTO;
 import com.dayou.entity.FinanceClaim;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.entity.OrderFund;
 import com.dayou.vo.FinanceClaimVO;
 import com.dayou.vo.RealFundAssetsStatVO;
 import com.dayou.vo.RealFundMajorStatVO;
@@ -82,4 +83,6 @@ public interface IFinanceClaimService extends IService<FinanceClaim> {
     Page<RealFundPersonalVO> personalStat(Page page, RealFundPersonalVO personalVO);
 
     List<RealFundPersonalVO> personalStatExport(RealFundPersonalVO personalVO);
+
+    List<OrderFund> queryOrderTotalAmount();
 }

+ 3 - 1
service/src/main/java/com/dayou/service/impl/AssetsProductionServiceImpl.java

@@ -2,6 +2,7 @@ package com.dayou.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.dayou.common.BaseEntity;
 import com.dayou.dto.*;
 import com.dayou.entity.*;
@@ -40,6 +41,7 @@ import static com.dayou.enums.ProductionEnum.STATEMENT;
  * @author GouGengquan
  * @since 2024-03-28
  */
+@DS("mbs")
 @Service
 public class AssetsProductionServiceImpl extends ServiceImpl<AssetsProductionMapper, AssetsProduction> implements IAssetsProductionService {
 
@@ -413,7 +415,7 @@ public class AssetsProductionServiceImpl extends ServiceImpl<AssetsProductionMap
                 financeClaim.setRealFundId(financeFundId);
                 financeClaim.setOrderFundId(orderReportDTO.getOrderFundId());
                 financeClaim.setClaimAmount(thisTimeAmount);
-                financeClaim.setClaimDatetime(LocalDateTime.now());
+                financeClaim.setClaimDatetime(new Date());
                 financeClaim.setProductionFundId(orderReportDTO.getProductionFundId());
                 financeClaimService.add(financeClaim);
             }

+ 3 - 1
service/src/main/java/com/dayou/service/impl/AssetsServiceImpl.java

@@ -2,6 +2,7 @@ package com.dayou.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.dayou.bo.SimpleParentModel;
 import com.dayou.entity.*;
@@ -48,6 +49,7 @@ import static com.dayou.enums.ProductionEnum.*;
  * @author GouGengquan
  * @since 2024-03-28
  */
+@DS("mbs")
 @Service
 public class AssetsServiceImpl extends ServiceImpl<AssetsMapper, Assets> implements IAssetsService {
 
@@ -626,7 +628,7 @@ public class AssetsServiceImpl extends ServiceImpl<AssetsMapper, Assets> impleme
                 financeClaim.setRealFundId(financeFundId);
                 financeClaim.setOrderFundId(orderFundId);
                 financeClaim.setClaimAmount(thisTimeAmount);
-                financeClaim.setClaimDatetime(LocalDateTime.now());
+                financeClaim.setClaimDatetime(new Date());
                 financeClaimService.add(financeClaim);
             }
             return Boolean.TRUE;

+ 2 - 0
service/src/main/java/com/dayou/service/impl/CustomerCompanyServiceImpl.java

@@ -1,5 +1,6 @@
 package com.dayou.service.impl;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.dayou.common.BaseEntity;
 import com.dayou.entity.CustomerCompany;
 import com.dayou.entity.CustomerLinkman;
@@ -38,6 +39,7 @@ import com.dayou.enums.BatchTaskTypeEnum;
  * @author wucl
  * @since 2023-12-01
  */
+@DS("mbs")
 @Service
 public class CustomerCompanyServiceImpl extends ServiceImpl<CustomerCompanyMapper, CustomerCompany> implements ICustomerCompanyService {
 

+ 2 - 0
service/src/main/java/com/dayou/service/impl/CustomerLinkmanServiceImpl.java

@@ -1,5 +1,6 @@
 package com.dayou.service.impl;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.dayou.entity.CustomerLinkman;
 import com.dayou.mapper.CustomerLinkmanMapper;
 import com.dayou.service.ICustomerLinkmanService;
@@ -33,6 +34,7 @@ import com.dayou.enums.BatchTaskTypeEnum;
  * @author wucl
  * @since 2023-12-01
  */
+@DS("mbs")
 @Service
 public class CustomerLinkmanServiceImpl extends ServiceImpl<CustomerLinkmanMapper, CustomerLinkman> implements ICustomerLinkmanService {
 

+ 29 - 1
service/src/main/java/com/dayou/service/impl/DyoaRecordServiceImpl.java

@@ -9,10 +9,15 @@ import com.dayou.mapper.DyoaRecordMapper;
 import com.dayou.service.IDyoaRecordService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayou.utils.LoginContext;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
 
 /**
  * <p>
@@ -27,6 +32,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 public class DyoaRecordServiceImpl extends ServiceImpl<DyoaRecordMapper, DyoaRecord> implements IDyoaRecordService {
 
 
+    @Autowired
+    private DyoaRecordMapper dyoaRecordMapper;
+
     @Override
     @SuppressWarnings("unchecked")
     public Page<DyoaRecord> selectPage(Page page,DyoaRecord dyoaRecord){
@@ -34,12 +42,13 @@ public class DyoaRecordServiceImpl extends ServiceImpl<DyoaRecordMapper, DyoaRec
     }
 
     @Override
-    public void insert(MainBusinessEnum businessEnum,Long mbsId,String dyoaId){
+    public void insert(MainBusinessEnum businessEnum,Long mbsId,String dyoaId,Date orderTime){
         DyoaRecord dyoaRecord = new DyoaRecord();
         dyoaRecord.setDyoaId(dyoaId);
         dyoaRecord.setMbsId(mbsId);
         dyoaRecord.setMbsType(businessEnum.name());
         dyoaRecord.setUserId(1L);
+        dyoaRecord.setOrderDatetime(orderTime);
         this.save(dyoaRecord);
     }
 
@@ -53,5 +62,24 @@ public class DyoaRecordServiceImpl extends ServiceImpl<DyoaRecordMapper, DyoaRec
         }
     }
 
+    @Override
+    public Date getMaxOrderTime() {
+        return dyoaRecordMapper.getMaxOrderTime();
+    }
+
+    @Override
+    public Date getMaxRealAmountCreatedTime() {
+        return dyoaRecordMapper.getMaxRealAmountCreatedTime();
+    }
+
+    @Override
+    public Date getMaxClaimDate() {
+        return dyoaRecordMapper.getMaxClaimDate();
+    }
+
+    @Override
+    public List<DyoaRecord> selectOrderFundIdByDyoaOrderId() {
+        return dyoaRecordMapper.selectOrderFundIdByDyoaOrderId();
+    }
 
 }

+ 9 - 1
service/src/main/java/com/dayou/service/impl/FinanceClaimServiceImpl.java

@@ -2,6 +2,7 @@ package com.dayou.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.dayou.common.BaseEntity;
 import com.dayou.dto.OrderReportDTO;
@@ -31,6 +32,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Collections;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -46,6 +48,7 @@ import org.springframework.web.multipart.MultipartFile;
  * @author wucl
  * @since 2023-12-08
  */
+@DS("mbs")
 @Service
 public class FinanceClaimServiceImpl extends ServiceImpl<FinanceClaimMapper, FinanceClaim> implements IFinanceClaimService {
 
@@ -215,6 +218,11 @@ public class FinanceClaimServiceImpl extends ServiceImpl<FinanceClaimMapper, Fin
         return financeClaimMapper.personalStatExport(personalVO);
     }
 
+    @Override
+    public List<OrderFund> queryOrderTotalAmount() {
+        return financeClaimMapper.queryOrderTotalAmount();
+    }
+
 
     @Override
     public synchronized BigDecimal checkFinanceFound(Long financeFundId) {
@@ -259,7 +267,7 @@ public class FinanceClaimServiceImpl extends ServiceImpl<FinanceClaimMapper, Fin
             financeClaim.setRealFundId(financeFundId);
             financeClaim.setOrderFundId(orderFund.getId());
             financeClaim.setClaimUserId(LoginContext.getCurrentUserId());
-            financeClaim.setClaimDatetime(LocalDateTime.now());
+            financeClaim.setClaimDatetime(new Date());
             financeClaim.setClaimAmount(x.getAmount());
             this.save(financeClaim);
         });

+ 2 - 0
service/src/main/java/com/dayou/service/impl/FinanceRealFundServiceImpl.java

@@ -1,6 +1,7 @@
 package com.dayou.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.dayou.common.BaseEntity;
 import com.dayou.entity.FinanceClaim;
 import com.dayou.entity.FinanceRealFund;
@@ -43,6 +44,7 @@ import com.dayou.enums.BatchTaskTypeEnum;
  * @author wucl
  * @since 2023-12-08
  */
+@DS("mbs")
 @Service
 public class FinanceRealFundServiceImpl extends ServiceImpl<FinanceRealFundMapper, FinanceRealFund> implements IFinanceRealFundService {
 

+ 2 - 2
service/src/main/java/com/dayou/service/impl/MajorProductionServiceImpl.java

@@ -413,7 +413,7 @@ public class MajorProductionServiceImpl extends ServiceImpl<MajorProductionMappe
                 financeClaim.setRealFundId(financeFundId);
                 financeClaim.setOrderFundId(orderFundId);
                 financeClaim.setClaimAmount(thisTimeAmount);
-                financeClaim.setClaimDatetime(LocalDateTime.now());
+                financeClaim.setClaimDatetime(new Date());
                 financeClaim.setProductionFundId(productionFundId);
                 financeClaimService.save(financeClaim);
             }
@@ -458,7 +458,7 @@ public class MajorProductionServiceImpl extends ServiceImpl<MajorProductionMappe
                 financeClaim.setRealFundId(financeFundId);
                 financeClaim.setOrderFundId(orderFundId);
                 financeClaim.setClaimAmount(thisTimeAmount);
-                financeClaim.setClaimDatetime(LocalDateTime.now());
+                financeClaim.setClaimDatetime(new Date());
                 financeClaimService.save(financeClaim);
             }
             return Boolean.TRUE;

+ 3 - 1
service/src/main/java/com/dayou/service/impl/PersonalServiceImpl.java

@@ -3,6 +3,7 @@ package com.dayou.service.impl;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.dayou.common.BaseEntity;
 import com.dayou.dto.*;
@@ -49,6 +50,7 @@ import static com.dayou.enums.workflow.NodeStateEnum.PENDING;
  * @author wucl
  * @since 2024-03-01
  */
+@DS("mbs")
 @Service
 public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> implements IPersonalService {
 
@@ -345,7 +347,7 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
                 financeClaim.setRealFundId(financeFundId);
                 financeClaim.setOrderFundId(orderFund.getId());
                 financeClaim.setClaimUserId(LoginContext.getCurrentUserId());
-                financeClaim.setClaimDatetime(LocalDateTime.now());
+                financeClaim.setClaimDatetime(new Date());
                 financeClaim.setClaimAmount(x.getThisTimeAmount());
                 financeClaimService.save(financeClaim);
                 //更新订单认领总金额

+ 48 - 6
sql/update_sql.sql

@@ -577,11 +577,53 @@ ALTER TABLE `personal_production` ADD is_online bit(1) NULL COMMENT '是否是
     修改人:吴长林
     未更新到test-env
  */
-ALTER TABLE major MODIFY COLUMN clientele_contact_id bigint(20) NULL;
-ALTER TABLE major MODIFY COLUMN bailor varchar(255) NULL;
-ALTER TABLE major MODIFY COLUMN bailor_contact_name varchar(255) NULL;
-ALTER TABLE major MODIFY COLUMN bailor_contact_tel varchar(255) NULL;
-ALTER TABLE major MODIFY COLUMN owner varchar(255) NULL;
-ALTER TABLE major MODIFY COLUMN clientele_type varchar(32) NULL;
+ALTER TABLE major MODIFY COLUMN clientele_contact_id bigint(20) NULL COMMENT '客户联系人id';
+ALTER TABLE major MODIFY COLUMN bailor varchar(255) NULL COMMENT '委托人';
+ALTER TABLE major MODIFY COLUMN bailor_contact_name varchar(255) NULL COMMENT '委托联系人姓名';
+ALTER TABLE major MODIFY COLUMN bailor_contact_tel varchar(255) NULL COMMENT '委托人联系人电话';
+ALTER TABLE major MODIFY COLUMN owner varchar(255) NULL COMMENT '产权人';
+ALTER TABLE personal MODIFY COLUMN clientele_type varchar(255) NULL COMMENT '客户类型(企业,个人)';
+ALTER TABLE personal MODIFY COLUMN inward_staff bigint(32) NULL COMMENT '内业人员';
+ALTER TABLE personal MODIFY COLUMN evaluate_aim varchar(255) NULL COMMENT '评估目的';
+ALTER TABLE personal MODIFY COLUMN bailorA varchar(255) NULL COMMENT '委托人1';
+ALTER TABLE personal MODIFY COLUMN bailorB varchar(255) NULL COMMENT '委托人2';
+ALTER TABLE personal MODIFY COLUMN bailorA_tel varchar(255) NULL COMMENT '委托人1电话';
+ALTER TABLE personal MODIFY COLUMN bailorB_tel varchar(255) NULL COMMENT '委托人2电话';
+ALTER TABLE personal MODIFY COLUMN clientele_contact_id bigint(32) NULL COMMENT '客户联系人id';
+ALTER TABLE personal MODIFY COLUMN loan_limit decimal(16,4) NULL COMMENT '贷款额度';
+ALTER TABLE personal MODIFY COLUMN location varchar(400) NULL COMMENT '坐落';
+ALTER TABLE order_fund MODIFY COLUMN order_name varchar(400) NULL COMMENT '订单名称';
+
+DROP TABLE IF EXISTS `dyoa_record`;
+CREATE TABLE `dyoa_record` (
+                               `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
+                               `mbs_type` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT '业务',
+                               `mbs_id` bigint NOT NULL COMMENT 'mbsId',
+                               `dyoa_id` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'dyoaId',
+                               `user_id` bigint NOT NULL COMMENT '操作人',
+                               `modified` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) COMMENT '修改时间',
+                               `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+                               `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除标识:1:删除 0:未删除',
+                               `order_datetime` datetime DEFAULT NULL COMMENT '下单时间(个贷用)',
+                               PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=201039 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='数据同步记录';
+
+SET FOREIGN_KEY_CHECKS = 1;
+
+ALTER TABLE assets MODIFY COLUMN name varchar(400) NOT NULL COMMENT '项目名称';
+ALTER TABLE assets MODIFY COLUMN bailor varchar(400) NULL COMMENT '委托人';
+ALTER TABLE assets MODIFY COLUMN clientele_type varchar(32) NULL COMMENT '客户类型(企业,个人)';
+ALTER TABLE assets MODIFY COLUMN clientele_contact_id bigint(32) NULL COMMENT '客户联系人id';
+ALTER TABLE assets MODIFY COLUMN security bit(1) NULL COMMENT '是否证券项目(0:Y 1:N)';
+ALTER TABLE assets MODIFY COLUMN significant_assets_reorganization bit(1) NULL COMMENT '是否资产重组项目(0:Y 1:N)';
+ALTER TABLE assets MODIFY COLUMN state_assets bit(1) NULL COMMENT '是否国资项目(0:Y 1:N)';
+ALTER TABLE assets MODIFY COLUMN foreign_assets_involved bit(1) NULL COMMENT '是否涉及境外资产(0:Y 1:N)';
+ALTER TABLE assets MODIFY COLUMN dispense_benefit bit(1) NULL COMMENT '是否分配产值';
+ALTER TABLE assets MODIFY COLUMN terminal_clientele_type varchar(32) NULL COMMENT '终端客户类型(企业,个人)';
+
+
+
+
+