diff --git a/src/main/java/common/service/impl/ContractServiceImpl.java b/src/main/java/common/service/impl/ContractServiceImpl.java
index a3682ac..28a2987 100644
--- a/src/main/java/common/service/impl/ContractServiceImpl.java
+++ b/src/main/java/common/service/impl/ContractServiceImpl.java
@@ -96,6 +96,8 @@ public class ContractServiceImpl implements ContractService {
         put("合同开始日期", "start_date");
         put("合同结束日期", "end_date");
         put("签约销售", "sale");
+        put("关联合同编号", "relation_code");
+        put("补充协议签订日期", "signed_date");
     }};
 
     private static final Map<String, String> SHEET_TITLE_RESERVE = new HashMap() {{
@@ -115,6 +117,8 @@ public class ContractServiceImpl implements ContractService {
         put("start_date", "合同开始日期");
         put("end_date", "合同结束日期");
         put("sale", "签约销售");
+        put("relation_code", "关联合同编号");
+        put("signed_date", "补充协议签订日期");
     }};
 
     public static final String UPLOAD_TITLE = "我方签约主体,客户签约主体,行业分类,合同开始日期,合同结束日期," +
@@ -510,7 +514,7 @@ public class ContractServiceImpl implements ContractService {
             }
             //补充协议开始日期不能晚于原始合同的结束日期
             Contract relationContract = contractRepository.findOne(resource.getRelationContract());
-            if(relationContract.getEndDate().compareTo(resource.getStartDate())<0){
+            if(relationContract.getEndDate().compareTo(resource.getSignedDate())<0){
                 Contract contractExist = new Contract();
                 contractExist.setId(-100L);
                 contractExist.setErroMessage("补充协议开始日期不能晚于原始合同的结束日期");
@@ -887,7 +891,7 @@ public class ContractServiceImpl implements ContractService {
             }
             //补充协议开始日期不能晚于原始合同的结束日期
             Contract relationContract = contractRepository.findOne(resource.getRelationContract());
-            if(relationContract.getEndDate().compareTo(resource.getStartDate())<0){
+            if(relationContract.getEndDate().compareTo(resource.getSignedDate())<0){
                 Contract contractExist = new Contract();
                 contractExist.setId(-100L);
                 contractExist.setErroMessage("补充协议开始日期不能晚于原始合同的结束日期");
@@ -2423,7 +2427,7 @@ public class ContractServiceImpl implements ContractService {
         try {
             int row_length;
             if (platform.equals("tkio")) {
-                row_length = 15;
+                row_length = 17;
             } else {
                 row_length = 13;
             }
@@ -2505,6 +2509,10 @@ public class ContractServiceImpl implements ContractService {
             titleKey.remove("track_flow");
             titleKey.remove("赠送流量");
             titleKey.remove("extra_flow");
+            titleKey.remove("补充协议签订日期");
+            titleKey.remove("signed_date");
+            titleKey.remove("关联合同编号");
+            titleKey.remove("relation_code");
         }
 
         int row_already = titleKey.size();
@@ -2537,6 +2545,9 @@ public class ContractServiceImpl implements ContractService {
                 continue;
             }
 
+            Map<String, String> filter = new HashMap<>();
+            filter.put("rowIndex",j+"");
+
             for (int w = 0; w < titleKey.size(); w++) {
                 String sheetTitle = titleKey.get(w);
                 Cell cell = row_data.getCell(w);
@@ -2593,6 +2604,7 @@ public class ContractServiceImpl implements ContractService {
                             return ResultModel.ERROR("第" + line_num + "行【签约类型】错误");
                         } else {
                             s_data[w] = CONTRACT_TYPE_NAME.get(dataSTR);
+                            filter.put("contractType",CONTRACT_TYPE_NAME.get(dataSTR));
                         }
                     } else if ("price_level".equals(sheetTitle)) {
                         if (packageMap != null && (!packageMap.containsKey(dataSTR) && !packageMap.containsValue(Long.parseLong(dataSTR)))) {
@@ -2604,7 +2616,7 @@ public class ContractServiceImpl implements ContractService {
                                 s_data[w] = packageMap.get(dataSTR);
                             }
                         }
-                    } else if ("start_date".equals(sheetTitle) || "end_date".equals(sheetTitle)) {
+                    } else if ("start_date".equals(sheetTitle) || "end_date".equals(sheetTitle) || "signed_date".equals(sheetTitle)) {
                         String dfmate = cell.getCellStyle().getDataFormatString();
 
                         if (!"yyyy/mm;@".equals(dfmate)
@@ -2621,11 +2633,15 @@ public class ContractServiceImpl implements ContractService {
                         if (org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(cell)) {
                             // 用于转化为日期格式
                             Date d = cell.getDateCellValue();
-                            if ("start_date".equals(sheetTitle)) {
-                                createTime = d;
-                            }
                             DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
                             s_data[w] = formater.format(d);
+                            if("signed_date".equals(sheetTitle)){
+                                createTime = d;
+                                filter.put("signedDate",formater.format(d));
+                            }else if ("start_date".equals(sheetTitle)) {
+                                createTime = d;
+                            }
+
                         } else {
                             s_data[w] = cell.toString();
                         }
@@ -2643,7 +2659,16 @@ public class ContractServiceImpl implements ContractService {
                         } else {
                             return ResultModel.ERROR("第" + line_num + "行【行政区域】code错误");
                         }
-                    } else {
+                    }else if ("barrio_id".equals(sheetTitle)) {
+                        if (barrioCityMap.containsKey(Long.parseLong(dataSTR))) {
+                            s_data[w] = dataSTR;
+                        } else {
+                            return ResultModel.ERROR("第" + line_num + "行【行政区域】code错误");
+                        }
+                    }else if("relation_contract".equals(sheetTitle)){
+                        s_data[w] = dataSTR;
+                        filter.put("relationContract",dataSTR);
+                    }else {
                         //主账号不为空,按照之前逻辑不变
                         s_data[w] = dataSTR;
                         if ("email".equals(sheetTitle) && !StringUtils.isEmpty(dataSTR) && "tkio".equals(platformexcl)) {
@@ -2656,6 +2681,29 @@ public class ContractServiceImpl implements ContractService {
                 }
             }
 
+            if(platform.equals("tkio")&&filter.get("contractType").equals("2")){
+                if(filter.get("relationContract")==null){
+                    return ResultModel.ERROR("第" + filter.get("rowIndex") + "行【关联合同编号】为空");
+                }else{
+                    String relationContract = filter.get("relationContract");
+                    Contract masterContract = contractRepository.findByCodePlatform(relationContract, "tkio");
+                    if(masterContract==null){
+                        return ResultModel.ERROR("第" + filter.get("rowIndex") + "行【关联合同编号】不存在");
+                    }else{
+                        String endDate = masterContract.getEndDate();
+                        String signedDate = filter.get("signedDate");
+                        if(signedDate==null){
+                            return ResultModel.ERROR("第" + filter.get("rowIndex") + "行【补充协议签订日期】为空");
+                        }else{
+                            if(endDate.compareTo(signedDate)<0){
+                                return ResultModel.ERROR("第" + filter.get("rowIndex") + "行【补充协议签订日期】不能晚于关联合同的结束日期");
+                            }
+
+                        }
+                    }
+                }
+            }
+
             if (!accountsEmail.isEmpty()) {
                 List<String> emails = accountRepository.findEmailByEmails(accountsEmail);
                 Map<String, String> emailDic;
diff --git "a/src/main/webapp/upload/\345\220\210\345\220\214\346\250\241\346\235\277-tkio.xlsx" "b/src/main/webapp/upload/\345\220\210\345\220\214\346\250\241\346\235\277-tkio.xlsx"
index de39b32..b9b19b6 100644
Binary files "a/src/main/webapp/upload/\345\220\210\345\220\214\346\250\241\346\235\277-tkio.xlsx" and "b/src/main/webapp/upload/\345\220\210\345\220\214\346\250\241\346\235\277-tkio.xlsx" differ