فهرست منبع

同步个贷订单和实收款

wucl 1 سال پیش
والد
کامیت
94c8d193be

+ 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>

+ 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.fetchRealAmount();
     }
 }

+ 10 - 0
dao/src/main/java/com/dayou/mapper/DyoaHistoryMapper.java

@@ -3,6 +3,7 @@ package com.dayou.mapper;
 import com.dayou.dto.history.HisMajorTarget;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -18,4 +19,13 @@ public interface DyoaHistoryMapper {
 
     List<HisMajorTarget> 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);
 }

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

@@ -3,6 +3,9 @@ package com.dayou.mapper;
 import com.dayou.entity.DyoaRecord;
 import com.dayou.dao.CustomBaseMapper;
 
+import java.time.LocalDate;
+import java.util.Date;
+
 /**
  * <p>
  * 数据同步记录 Mapper 接口
@@ -13,4 +16,7 @@ import com.dayou.dao.CustomBaseMapper;
  */
 public interface DyoaRecordMapper extends CustomBaseMapper<DyoaRecord> {
 
+    Date getMaxOrderTime();
+
+    Date getMaxRealAmountCreatedTime();
 }

+ 68 - 0
dao/src/main/resources/mapper/DyoaHistoryMapper.xml

@@ -184,4 +184,72 @@
     <select id="selectDyoaMajorOrderIds" resultType="java.lang.String">
         select id from dy_order where masterName is not null
     </select>
+
+    <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
+        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>
 </mapper>

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

@@ -23,4 +23,13 @@
         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>
+
+
 </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},'%')

+ 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;
+
 
 }

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

@@ -31,7 +31,11 @@ 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","实收款")
     ;
 
    MainBusinessEnum(String code, String name) {

+ 224 - 15
service/src/main/java/com/dayou/dyoa/DyoaHistoryServiceImpl.java

@@ -44,8 +44,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
@@ -71,6 +70,10 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
 
     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<>();
+
 
     @Autowired
     private IUserService userService;
@@ -85,13 +88,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 +103,14 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
     @Autowired
     private IMajorProductionService majorProductionService;
 
+    @Autowired
+    private IPersonalService personalService;
+
+    @Autowired
+    private ICustomerCompanyService customerCompanyService;
+
+    @Autowired
+    private ICustomerLinkmanService customerLinkmanService;
     static {
 //        MAJOR_ORDER_COLUM.put("id","id");
         MAJOR_ORDER_COLUM.put("name","name");
@@ -134,6 +146,10 @@ 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("terminalName","terminalClienteleId");
+        MAJOR_ORDER_COLUM.put("terminalContactName","terminalClienteleContactId");
 
         //大中型产品字段
         MAJOR_PRODUCTION_COLUM.put("pType","production");
@@ -160,6 +176,45 @@ 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("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");
+
     }
 
     @Override
@@ -281,13 +336,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,22 +352,171 @@ 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);
         });
     }
 
+    @DSTransactional
+    @Override
+    public void fetchDyoaPersonalOrder(){
+        Date max = dyoaRecordService.getMaxOrderTime();
+        List<String> personalOrderIds = dyoaHistoryMapper.getNewOrderIds(max);
+        personalOrderIds.stream().forEach(x->{
+            fetchAboutPersonal(x);
+        });
+    }
+
+    @Override
+    public void fetchRealAmountClaimData() {
 
-    public Map<String,Object> queryMajorOrder(String majorId){
-        Map<String, Object> resultMap = dyoaHistoryMapper.queryMajorOrder(majorId);
-        return resultMap;
     }
 
-    //多数据源切换,主方法用@DSTransactional注解解决事务失效问题
+    @Override
+    public void fetchRealAmount() {
+        Date max = dyoaRecordService.getMaxRealAmountCreatedTime();
+        List<String> newRealAmount = dyoaHistoryMapper.getNewRealAmount(max);
+        newRealAmount.stream().forEach(x-> {
+            fetchReamAmountDetail(x);
+        });
+    }
+
+
+    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,toJsonString((String) columValue));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":
+                    case "terminalClienteleId":
+                        field.set(personal, getCompanyId((String) columValue));break;
+                    case "terminalClienteleContactId":
+                        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 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);
+    }
+
+
+    //多数据源切换,主方法用@DSTransactional注解解决事务失效问题
     @Override
-    public Boolean fetchAboutMajor(String id) {
+    public void fetchAboutMajor(String id) {
         try {
             //1. 获取订单信息,插入major表。
             Map<String, Object> dyoaMajorOrder = dyoaHistoryMapper.queryMajorOrder(id);
@@ -319,7 +524,6 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
             //2. 同步产品
             Double shouldAmount = (Double) dyoaMajorOrder.get("needPay");
             this.doCreateMajorProduction(shouldAmount,id, mbsId);
-            return Boolean.TRUE;
         } catch (NoSuchFieldException e) {
             throw new RuntimeException(e);
         } catch (IllegalAccessException e) {
@@ -463,6 +667,12 @@ 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":
+                        field.set(major, getCompanyLinkmanId((String) columValue));break;
                     default:
                         field.set(major,columValue);
                 }
@@ -473,8 +683,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;
 
     }

+ 7 - 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,11 @@ public interface IDyoaHistoryService {
      */
     Page<HisAssetsOrder> hisAssetsPage(HisOrderParam param);
 
-    //批量同步大中型订单和产品
     void fetchDyoaMajorOrderProduction();
+
+    void fetchDyoaPersonalOrder();
+
+    void fetchRealAmountClaimData();
+
+    void fetchRealAmount();
 }

+ 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("同步个贷数据完成");
+    }
+}

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

@@ -6,6 +6,9 @@ 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.Date;
+
 /**
  * <p>
  * 数据同步记录 服务类
@@ -18,8 +21,12 @@ 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();
 }
 

+ 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 {
 

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

@@ -9,10 +9,13 @@ 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.Date;
+
 
 /**
  * <p>
@@ -27,6 +30,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 +40,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 +60,15 @@ public class DyoaRecordServiceImpl extends ServiceImpl<DyoaRecordMapper, DyoaRec
         }
     }
 
+    @Override
+    public Date getMaxOrderTime() {
+        return dyoaRecordMapper.getMaxOrderTime();
+    }
+
+    @Override
+    public Date getMaxRealAmountCreatedTime() {
+        return dyoaRecordMapper.getMaxRealAmountCreatedTime();
+    }
+
 
 }

+ 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 - 0
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 {
 

+ 26 - 1
sql/update_sql.sql

@@ -582,6 +582,31 @@ 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 personal MODIFY COLUMN clientele_type varchar(255) NULL;
+ALTER TABLE personal MODIFY COLUMN inward_staff bigint(32) NULL;
+ALTER TABLE personal MODIFY COLUMN evaluate_aim varchar(255) NULL;
+ALTER TABLE personal MODIFY COLUMN bailorA varchar(255) NULL;
+ALTER TABLE personal MODIFY COLUMN bailorB varchar(255) NULL;
+ALTER TABLE personal MODIFY COLUMN bailorA_tel varchar(255) NULL;
+ALTER TABLE personal MODIFY COLUMN bailorB_tel varchar(255) NULL;
+ALTER TABLE personal MODIFY COLUMN clientele_contact_id bigint(32) NULL;
+ALTER TABLE personal MODIFY COLUMN loan_limit decimal(16,4) NULL;
+ALTER TABLE personal MODIFY COLUMN location varchar(400) NULL;
+ALTER TABLE order_fund MODIFY COLUMN order_name varchar(400) NULL;
+
+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;