瀏覽代碼

个贷收款预警和排期bug修复

wucl 1 年之前
父節點
當前提交
4c89bd23ab

+ 13 - 2
biz-base/src/main/java/com/dayou/controller/FinanceRealFundController.java

@@ -287,12 +287,23 @@ public class FinanceRealFundController extends BaseController {
      * @return
      * @return
      */
      */
     @GetMapping("/overdue/personal")
     @GetMapping("/overdue/personal")
-    public RestResponse<Page<PersonalProdOverdueVO>> overduePersonal(PersonalProdOverdueVO overdueVO, Page page){
-        Page<PersonalProdOverdueVO> result = financeRealFundService.overduePersonal(overdueVO,page);
+    public RestResponse<Page<PersonalOverdueVO>> overduePersonal(PersonalOverdueVO overdueVO, Page page){
+        Page<PersonalOverdueVO> result = financeRealFundService.overduePersonal(overdueVO,page);
         return RestResponse.data(result);
         return RestResponse.data(result);
     }
     }
 
 
     /**
     /**
+     * 个贷产品逾期未收款导出
+     * @param overdueVO
+     * @return
+     */
+    @GetMapping("/overdue/personal/export")
+    public void overduePersonal(PersonalOverdueVO overdueVO, HttpServletResponse response) throws IOException {
+        List<PersonalOverdueVO> list = financeRealFundService.overduePersonalList(overdueVO);
+        exportPlus(response, "个贷逾期未收款列表", list, PersonalOverdueVO.class);
+    }
+
+    /**
      * 资产评估人员提成计算
      * 资产评估人员提成计算
      * @param vo vo
      * @param vo vo
      * @return List<UserCommissionTotalAmountVO>
      * @return List<UserCommissionTotalAmountVO>

+ 4 - 1
dao/src/main/java/com/dayou/mapper/FinanceRealFundMapper.java

@@ -51,7 +51,6 @@ public interface FinanceRealFundMapper extends CustomBaseMapper<FinanceRealFund>
 
 
     List<UserCommissionProdVO> marketUserDetailExport(@Param("vo")UserCommissionProdVO vo);
     List<UserCommissionProdVO> marketUserDetailExport(@Param("vo")UserCommissionProdVO vo);
 
 
-    Page<PersonalProdOverdueVO> overduePersonal(Page page, PersonalProdOverdueVO overdueVO);
     /**
     /**
      * 资产评估人员提成计算
      * 资产评估人员提成计算
      * @param vo vo
      * @param vo vo
@@ -152,4 +151,8 @@ public interface FinanceRealFundMapper extends CustomBaseMapper<FinanceRealFund>
      * @return List<SettleAssetsProductionVO>
      * @return List<SettleAssetsProductionVO>
      */
      */
     List<SettleAssetsProductionVO> assetsEvaluatorSettleExport(@Param("settleVO")SettleAssetsProductionVO settleVO);
     List<SettleAssetsProductionVO> assetsEvaluatorSettleExport(@Param("settleVO")SettleAssetsProductionVO settleVO);
+
+    Page<PersonalOverdueVO> overduePersonal(Page page, @Param("overdueVO")PersonalOverdueVO overdueVO);
+
+    List<PersonalOverdueVO> overduePersonalList(@Param("overdueVO") PersonalOverdueVO overdueVO);
 }
 }

+ 70 - 5
dao/src/main/resources/mapper/FinanceRealFundMapper.xml

@@ -95,7 +95,7 @@
         cc1.NAME AS clientName,
         cc1.NAME AS clientName,
         cc2.NAME AS clientSubName,
         cc2.NAME AS clientSubName,
         pf.production_should_amount,
         pf.production_should_amount,
-        of.should_amount,
+        ofu.should_amount,
         mp.*
         mp.*
         FROM
         FROM
         (
         (
@@ -115,7 +115,7 @@
         AND repertory_out_time IS NOT NULL  and production != 'STATEMENT'
         AND repertory_out_time IS NOT NULL  and production != 'STATEMENT'
         ) mp
         ) mp
         LEFT JOIN ( SELECT business_id, production_no, production_should_amount, real_amount FROM production_fund WHERE business_type = 'MAJOR_BUSINESS' AND deleted = 0 ) pf ON ( mp.major_id = pf.business_id AND mp.report_no = pf.production_no )
         LEFT JOIN ( SELECT business_id, production_no, production_should_amount, real_amount FROM production_fund WHERE business_type = 'MAJOR_BUSINESS' AND deleted = 0 ) pf ON ( mp.major_id = pf.business_id AND mp.report_no = pf.production_no )
-        left join ( SELECT business_id,should_amount FROM order_fund WHERE business_type = 'MAJOR_BUSINESS' AND deleted = 0 ) of ON of.business_id = mp.major_id
+        left join ( SELECT business_id,should_amount FROM order_fund WHERE business_type = 'MAJOR_BUSINESS' AND deleted = 0 ) ofu ON ofu.business_id = mp.major_id
         LEFT JOIN major m ON m.id = mp.major_id
         LEFT JOIN major m ON m.id = mp.major_id
         LEFT JOIN user u ON u.id = m.client_manager_id
         LEFT JOIN user u ON u.id = m.client_manager_id
         LEFT JOIN user u1 ON u1.id = m.principal_id
         LEFT JOIN user u1 ON u1.id = m.principal_id
@@ -124,7 +124,7 @@
         WHERE
         WHERE
         mp.production != 'STATEMENT'
         mp.production != 'STATEMENT'
         AND ( pf.production_no IS NULL OR pf.real_amount IS NULL )
         AND ( pf.production_no IS NULL OR pf.real_amount IS NULL )
-        AND DATEDIFF(CURDATE(),DATE( mp.repertory_out_time )) &gt;= #{overdueVO.overdueMin}
+        AND DATEDIFF(CURDATE(),DATE( mp.repertory_out_time )) >= #{overdueVO.overdueMin}
         <if test="overdueVO!=null and overdueVO.overdueMax!=null">
         <if test="overdueVO!=null and overdueVO.overdueMax!=null">
             AND DATEDIFF(CURDATE(),DATE( mp.repertory_out_time )) &lt;= #{overdueVO.overdueMax}
             AND DATEDIFF(CURDATE(),DATE( mp.repertory_out_time )) &lt;= #{overdueVO.overdueMax}
         </if>
         </if>
@@ -780,10 +780,75 @@
         order by mpa.user_id
         order by mpa.user_id
     </select>
     </select>
 
 
-    <select id="overduePersonal" parameterType="com.dayou.vo.PersonalProdOverdueVO" resultType="com.dayou.vo.PersonalProdOverdueVO">
-
+    <sql id="personalOverdueSql">
+        SELECT
+        DATEDIFF(
+        CURDATE(),
+        DATE ( pp.rot )) AS overdueDay,
+        p.*,
+        pt.acreage,
+        pt.price,
+        pt.amount,
+        cc1.NAME AS clientName,
+        cc2.NAME AS clientSubName,
+        cl1.NAME AS contactName,
+        cl1.mobile AS contactTel,
+        u.NAME AS clientManager,
+        u1.NAME AS outwardStaffName,
+        u2.NAME AS inwardStaffName,
+        u3.NAME AS pricingStaffName,
+        pp.rot
+        FROM
+        (
+        SELECT
+        id,
+        location,
+        order_id,
+        agent,
+        bailorA,
+        bailorB,
+        clientele_id,
+        clientele_sub_id,
+        clientele_contact_id,
+        client_manager_id,
+        outward_staff,
+        inward_staff,
+        pricing_staff
+        FROM
+        personal
+        WHERE
+        deleted = 0
+        ) p
+        LEFT JOIN personal_target pt ON pt.personal_id = p.id
+        LEFT JOIN ( SELECT business_id, should_amount, real_amount FROM order_fund WHERE business_type = 'PERSONAL_BUSINESS' AND deleted = 0 AND real_amount IS NULL ) ofu ON ofu.business_id = p.id
+        LEFT JOIN ( SELECT target_id,( repertory_out_time ) rot FROM personal_production WHERE repertory_out_time IS NOT NULL GROUP BY target_id ) pp ON pp.target_id = pt.id
+        LEFT JOIN customer_company cc1 ON cc1.id = p.clientele_id
+        LEFT JOIN customer_company cc2 ON cc2.id = p.clientele_sub_id
+        LEFT JOIN customer_linkman cl1 ON cl1.id = p.clientele_contact_id
+        LEFT JOIN USER u ON u.id = p.client_manager_id
+        LEFT JOIN USER u1 ON u1.id = p.outward_staff
+        LEFT JOIN USER u2 ON u2.id = p.inward_staff
+        LEFT JOIN USER u3 ON u3.id = p.pricing_staff
+        WHERE
+        DATEDIFF(
+        CURDATE(),
+        DATE ( pp.rot )) >= #{overdueVO.overdueMin}
+        <if test="overdueVO!=null and overdueVO.overdueMax!=null">
+            AND DATEDIFF(CURDATE(),DATE( pp.rot )) &lt;= #{overdueVO.overdueMax}
+        </if>
+        <if test="overdueVO!=null and overdueVO.orderId!=null and overdueVO.orderId!=''">
+            and m.order_id = #{overdueVO.orderId}
+        </if>
+        ORDER BY
+        overdueDay DESC
+    </sql>
+    <select id="overduePersonal" parameterType="com.dayou.vo.PersonalOverdueVO" resultType="com.dayou.vo.PersonalOverdueVO">
+       <include refid="personalOverdueSql" />
     </select>
     </select>
 
 
+    <select id="overduePersonalList" parameterType="com.dayou.vo.PersonalOverdueVO" resultType="com.dayou.vo.PersonalOverdueVO">
+        <include refid="personalOverdueSql" />
+    </select>
     <!--资产评估人员提成计算-->
     <!--资产评估人员提成计算-->
     <select id="assetsEvaluatorCommission" resultType="com.dayou.vo.UserCommissionTotalAmountVO">
     <select id="assetsEvaluatorCommission" resultType="com.dayou.vo.UserCommissionTotalAmountVO">
         SELECT bpd.member_id as id,
         SELECT bpd.member_id as id,

+ 73 - 0
domain/src/main/java/com/dayou/vo/PersonalOverdueVO.java

@@ -0,0 +1,73 @@
+package com.dayou.vo;
+
+import com.dayou.annotation.Excel;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class PersonalOverdueVO{
+
+    private Long id;
+
+    @Excel(name = "超期天数")
+    private Integer overdueDay;
+
+    @Excel(name = "项目编号")
+    private String orderId;
+
+    @Excel(name = "坐落")
+    private String location;
+
+    @Excel(name = "面积")
+    private BigDecimal acreage;
+
+    @Excel(name = "单机")
+    private BigDecimal price;
+
+    @Excel(name = "总价")
+    private BigDecimal amount;
+
+    @Excel(name = "客户名称")
+    private String clientName;
+
+    @Excel(name = "业务来源")
+    private String clientSubName;
+
+    @Excel(name = "中介")
+    private String agent;
+
+    @Excel(name = "联系人")
+    private String contactName;
+
+    @Excel(name = "联系电话")
+    private String contactTel;
+
+    @Excel(name = "委托人一")
+    private String bailorA;
+
+    @Excel(name = "委托人二")
+    private String bailorB;
+
+    @Excel(name = "客户经理")
+    private String clientManager;
+
+    @Excel(name = "勘察人")
+    private String outwardStaffName;
+
+    @Excel(name = "产品内业")
+    private String inwardStaffName;
+
+    @Excel(name = "定价内业")
+    private String pricingStaffName;
+
+    @Excel(name = "出库日期")
+    private Date rot;
+
+    private Integer overdueMin;
+
+    private Integer overdueMax;
+
+
+}

+ 0 - 106
domain/src/main/java/com/dayou/vo/PersonalProdOverdueVO.java

@@ -1,106 +0,0 @@
-package com.dayou.vo;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.dayou.annotation.ExportCell;
-import com.dayou.annotation.ImportCell;
-import lombok.Data;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * 类说明:
- *
- * @author: wucl
- * @since: 2024/6/12
- * created with IntelliJ IDEA.
- */
-@Data
-public class PersonalProdOverdueVO {
-
-    /**
-     * 订单编号
-     */
-    private String orderId;
-
-    /**
-     * 产品类型
-     */
-    private String production;
-
-    /**
-     * 坐落
-     */
-    private String location;
-
-    /**
-     * 面积
-     */
-    private BigDecimal acreage;
-    /**
-     * 单价
-     */
-    private BigDecimal price;
-    /**
-     * 总价
-     */
-    private BigDecimal amount;
-    /**
-     * 客户名称
-     */
-    private String clientName;
-    /**
-     * 业务来源
-     */
-    private String clientSubName;
-    /**
-     * 客户联系人
-     */
-    private String contactName;
-    /**
-     * 联系人电话
-     */
-    private String contactTel;
-
-    /**
-     * 委托人1
-     */
-    private String bailorA;
-
-    /**
-     * 委托人1电话
-     */
-    private String bailoraTel;
-
-    /**
-     * 委托人2
-     */
-    private String bailorB;
-
-    /**
-     * 委托人2电话
-     */
-    private String bailorbTel;
-
-    /**
-     * 客户经理
-     */
-    private String clientManager;
-    /**
-     * 外业人员
-     */
-    private String outwardStaffName;
-    /**
-     * 内业人员
-     */
-    private String inwardStaffName;
-    /**
-     * 定价人员
-     */
-    private String pricingStaffName;
-
-    /**
-     * 出库时间
-     */
-    private LocalDateTime repertoryOutTime;
-}

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

@@ -64,7 +64,7 @@ public interface IFinanceRealFundService extends IService<FinanceRealFund> {
 
 
     List<UserCommissionProdVO> marketAllUserDetailExport(UserCommissionProdVO vo);
     List<UserCommissionProdVO> marketAllUserDetailExport(UserCommissionProdVO vo);
 
 
-    Page<PersonalProdOverdueVO> overduePersonal(PersonalProdOverdueVO overdueVO, Page page);
+    Page<PersonalOverdueVO> overduePersonal(PersonalOverdueVO overdueVO, Page page);
 
 
     /**
     /**
      * 资产评估人员提成计算
      * 资产评估人员提成计算
@@ -180,4 +180,6 @@ public interface IFinanceRealFundService extends IService<FinanceRealFund> {
      * @return List<SettleAssetsProductionVO>
      * @return List<SettleAssetsProductionVO>
      */
      */
     List<SettleAssetsProductionVO> assetsEvaluatorSettleExport(SettleAssetsProductionVO settleVO);
     List<SettleAssetsProductionVO> assetsEvaluatorSettleExport(SettleAssetsProductionVO settleVO);
+
+    List<PersonalOverdueVO> overduePersonalList(PersonalOverdueVO overdueVO);
 }
 }

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

@@ -29,6 +29,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.util.Collections;
 import java.util.List;
 import java.util.List;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
@@ -183,8 +184,8 @@ public class FinanceRealFundServiceImpl extends ServiceImpl<FinanceRealFundMappe
     }
     }
 
 
     @Override
     @Override
-    public Page<PersonalProdOverdueVO> overduePersonal(PersonalProdOverdueVO overdueVO, Page page) {
-        Page<PersonalProdOverdueVO> result = financeRealFundMapper.overduePersonal(page,overdueVO);
+    public Page<PersonalOverdueVO> overduePersonal(PersonalOverdueVO overdueVO, Page page) {
+        Page<PersonalOverdueVO> result = financeRealFundMapper.overduePersonal(page,overdueVO);
         return result;
         return result;
     }
     }
 
 
@@ -352,4 +353,10 @@ public class FinanceRealFundServiceImpl extends ServiceImpl<FinanceRealFundMappe
     public List<SettleAssetsProductionVO> assetsEvaluatorSettleExport(SettleAssetsProductionVO settleVO) {
     public List<SettleAssetsProductionVO> assetsEvaluatorSettleExport(SettleAssetsProductionVO settleVO) {
         return financeRealFundMapper.assetsEvaluatorSettleExport(settleVO);
         return financeRealFundMapper.assetsEvaluatorSettleExport(settleVO);
     }
     }
+
+    @Override
+    public List<PersonalOverdueVO> overduePersonalList(PersonalOverdueVO overdueVO) {
+        List<PersonalOverdueVO> list = financeRealFundMapper.overduePersonalList(overdueVO);
+        return list;
+    }
 }
 }

+ 31 - 30
service/src/main/java/com/dayou/service/impl/ItemBrokerageGeneralServiceImpl.java

@@ -311,36 +311,37 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
         if (item.getAmount()!=null){
         if (item.getAmount()!=null){
             NonMarketerMarketerBrokerageCalculator calculator = (NonMarketerMarketerBrokerageCalculator) brokerageCalculateSupport.getCalculator(BrokerageRule.LAND_OTHER_RULE);
             NonMarketerMarketerBrokerageCalculator calculator = (NonMarketerMarketerBrokerageCalculator) brokerageCalculateSupport.getCalculator(BrokerageRule.LAND_OTHER_RULE);
             ItemBrokerageGeneral general = brokerageGeneralMapper.getByItemId(itemStageVO.getItemId());
             ItemBrokerageGeneral general = brokerageGeneralMapper.getByItemId(itemStageVO.getItemId());
-            Set<ItemStageVO.ParticipatorWeight> participators = itemStageVO.getParticipators();
-            Set<ItemBrokerageDetail> participatorBrokerageDetails = participators.stream().filter(s->s.getWeight()!=null).map(x -> {
-                BrokerageDetailBO brokerageDetailBO = BrokerageDetailBO.builder().build();
-                brokerageDetailBO.setBrokerageRule(BrokerageRule.LAND_OTHER_RULE.getCode());
-                brokerageDetailBO.setBrokerageMode(BrokerageMode.PERSONAL.getCode());
-                brokerageDetailBO.setAdvanceAmount(BigDecimal.ZERO);
-                brokerageDetailBO.setPredictAmount(BigDecimal.ZERO);
-                brokerageDetailBO.setActualAmount(BigDecimal.ZERO);
-                brokerageDetailBO.setAmount(item.getAmount());
-                brokerageDetailBO.setUserId(x.getUserId());
-                brokerageDetailBO.setGeneralId(general.getId());
-                brokerageDetailBO.setBrokerageStageId(brokerageStageId);
-                brokerageDetailBO.setStageWeight(itemStageVO.getWeight());
-                brokerageDetailBO.setParticipantWeight(x.getWeight());
-                brokerageDetailBO.setParticipantStatus(general.getParticipantStatus());
-                ItemBrokerageDetail itemBrokerageDetail = calculator.predictAmount(brokerageDetailBO);
-                return itemBrokerageDetail;
-            }).collect(Collectors.toSet());
-            BigDecimal participatorPredictTotalAmount = participatorBrokerageDetails.stream().map(ItemBrokerageDetail::getPredictAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-
-            //创建参与人的项目提成详情
-            iItemBrokerageDetailService.saveBatch(participatorBrokerageDetails);
-            //更新项目提成总表信息
-            general.setParticipantPredictBrokerageAmount(participatorPredictTotalAmount.add(general.getParticipantPredictBrokerageAmount()));
-            general.setParticipantAdvanceStatus(Boolean.TRUE);
-            general.setBrokeragePredictAmount(general.getMarketerBrokerageAmount().add(general.getParticipantPredictBrokerageAmount()));
-            general.setParticipantActualBrokerageAmount(BigDecimal.ZERO);
-            general.setParticipantStatus(BrokerageState.PREDICTING.getCode());
-
-            this.updateById(general);
+            if (general!=null){
+                Set<ItemStageVO.ParticipatorWeight> participators = itemStageVO.getParticipators();
+                Set<ItemBrokerageDetail> participatorBrokerageDetails = participators.stream().filter(s->s.getWeight()!=null).map(x -> {
+                    BrokerageDetailBO brokerageDetailBO = BrokerageDetailBO.builder().build();
+                    brokerageDetailBO.setBrokerageRule(BrokerageRule.LAND_OTHER_RULE.getCode());
+                    brokerageDetailBO.setBrokerageMode(BrokerageMode.PERSONAL.getCode());
+                    brokerageDetailBO.setAdvanceAmount(BigDecimal.ZERO);
+                    brokerageDetailBO.setPredictAmount(BigDecimal.ZERO);
+                    brokerageDetailBO.setActualAmount(BigDecimal.ZERO);
+                    brokerageDetailBO.setAmount(item.getAmount());
+                    brokerageDetailBO.setUserId(x.getUserId());
+                    brokerageDetailBO.setGeneralId(general.getId());
+                    brokerageDetailBO.setBrokerageStageId(brokerageStageId);
+                    brokerageDetailBO.setStageWeight(itemStageVO.getWeight());
+                    brokerageDetailBO.setParticipantWeight(x.getWeight());
+                    brokerageDetailBO.setParticipantStatus(general.getParticipantStatus());
+                    ItemBrokerageDetail itemBrokerageDetail = calculator.predictAmount(brokerageDetailBO);
+                    return itemBrokerageDetail;
+                }).collect(Collectors.toSet());
+                BigDecimal participatorPredictTotalAmount = participatorBrokerageDetails.stream().map(ItemBrokerageDetail::getPredictAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                //创建参与人的项目提成详情
+                iItemBrokerageDetailService.saveBatch(participatorBrokerageDetails);
+                //更新项目提成总表信息
+                general.setParticipantPredictBrokerageAmount(participatorPredictTotalAmount.add(general.getParticipantPredictBrokerageAmount()));
+                general.setParticipantAdvanceStatus(Boolean.TRUE);
+                general.setBrokeragePredictAmount(general.getMarketerBrokerageAmount().add(general.getParticipantPredictBrokerageAmount()));
+                general.setParticipantActualBrokerageAmount(BigDecimal.ZERO);
+                general.setParticipantStatus(BrokerageState.PREDICTING.getCode());
+                this.updateById(general);
+            }
 
 
         }else {
         }else {
             log.info("未设置合同金额,创建参与人提成记录终止。itemId[{}]",item.getId());
             log.info("未设置合同金额,创建参与人提成记录终止。itemId[{}]",item.getId());

+ 25 - 1
sql/update_sql.sql

@@ -577,4 +577,28 @@ ALTER TABLE `personal_production` ADD is_online bit(1) NULL COMMENT '是否是
     修改人:吴长林
     修改人:吴长林
     未更新到test-env
     未更新到test-env
  */
  */
-ALTER TABLE major MODIFY COLUMN clientele_contact_id bigint(20) NULL;
+ALTER TABLE major MODIFY COLUMN clientele_contact_id bigint(20) NULL;
+
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+/**
+    日期:2024-07-29
+    修改人:吴长林
+    未更新到test-env
+ */
+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:未删除',
+                               PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='数据同步记录';
+
+SET FOREIGN_KEY_CHECKS = 1;