Kaynağa Gözat

提交集疏运上港数据内容接口测试情况和内容

zk 4 gün önce
ebeveyn
işleme
c173b7e213

+ 15 - 0
ghjg-item-datashare-server/src/main/java/com/shanghaichengdi/ghjgitem/controller/AuthController.java

@@ -1,10 +1,13 @@
 package com.shanghaichengdi.ghjgitem.controller;
 
+import cn.hutool.core.util.IdUtil;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.shanghaichengdi.ghjgitem.constant.Constants;
 import com.shanghaichengdi.ghjgitem.constant.HttpStatus;
 import com.shanghaichengdi.ghjgitem.domain.SysDataShareUser;
+import com.shanghaichengdi.ghjgitem.domain.TransportSgDwNzxContainers;
 import com.shanghaichengdi.ghjgitem.enums.OutsideInterface;
 import com.shanghaichengdi.ghjgitem.service.RedisService;
 import com.shanghaichengdi.ghjgitem.service.SysDatashareServiceNewService;
@@ -16,6 +19,8 @@ import com.shanghaichengdi.ghjgitem.vo.request.AuthRequest;
 import com.shanghaichengdi.ghjgitem.vo.request.DecryptReq;
 import com.shanghaichengdi.ghjgitem.vo.request.FrequencyCacheReq;
 import com.shanghaichengdi.ghjgitem.vo.response.ReturnMsg;
+
+import java.math.BigDecimal;
 import java.nio.charset.StandardCharsets;
 import java.util.Date;
 import java.util.HashMap;
@@ -110,6 +115,16 @@ public class AuthController {
             "ghThreeDataShare".getBytes()));
     return ReturnMsg.success(mvData);
   }
+  @PostMapping("/encryptArray")
+  public ReturnMsg encrypt(@RequestBody String req) {
+
+    JSONArray jsonObject = JSONArray.parseArray(req);
+    String mvData = Encodes.encodeBase64(
+            Encodes.aesEncrypt(jsonObject.toString().getBytes(StandardCharsets.UTF_8),
+                    "ghThreeDataShare".getBytes(),
+                    "ghThreeDataShare".getBytes()));
+    return ReturnMsg.success(mvData);
+  }
 
   @PostMapping("/decrypt")
   public ReturnMsg decrypt(@RequestBody DecryptReq req) {

+ 2 - 2
ghjg-item-datashare-server/src/main/java/com/shanghaichengdi/ghjgitem/domain/TransportSgDwNzxAgent.java

@@ -26,13 +26,13 @@ public class TransportSgDwNzxAgent extends BaseEntity {
     /**
      * 上港航方企业缩写
      */
-    @TableField("NZA_NZXNM")
+    @TableId("NZA_NZXNM")
     private String nzaNzxnm;
 
     /**
      * 上港航方企业全写
      */
-    @TableId("NZA_OUTNAME")
+    @TableField("NZA_OUTNAME")
     private String nzaOutname;
 
 

+ 4 - 4
ghjg-item-datashare-server/src/main/resources/mapper/TransportSgBaseNumberMapper.xml

@@ -9,9 +9,9 @@
         ghjg_port_manage.TRANSPORT_SG_DW_NZX_CONTAINERS con
         left join  ghjg_port_manage.TRANSPORT_SG_DW_NZX_BOAT boat on boat.nzx_sch_pkid=con.NZC_NZX_SCH_PKID
         where
-        boat.NZX_ASTARTTM >= #{startTime}
+        boat.NZX_AENDTM >= #{startTime}
         and
-        boat.NZX_ASTARTTM <= #{endTime}
+        boat.NZX_AENDTM <= #{endTime}
         group by boat.nzx_agent,boat.nzx_vslcnname,boat.nzx_type,boat.nzx_line,con.nzc_effg,con.NZC_CSIZECD
         order by boat.nzx_vslcnname,boat.nzx_type,boat.nzx_line,con.nzc_effg,con.NZC_CSIZECD
     </select>
@@ -21,9 +21,9 @@
         ghjg_port_manage.TRANSPORT_SG_DW_NZX_CONTAINERS con
         left join  ghjg_port_manage.TRANSPORT_SG_DW_NZX_BOAT boat on boat.nzx_sch_pkid=con.NZC_NZX_SCH_PKID
         where
-        boat.NZX_ASTARTTM &gt;= #{startTime}
+        boat.NZX_AENDTM &gt;= #{startTime}
         and
-        boat.NZX_ASTARTTM &lt;= #{endTime}
+        boat.NZX_AENDTM &lt;= #{endTime}
         and boat.trans_update=1
         group by boat.nzx_agent,boat.nzx_vslcnname,boat.nzx_type,boat.nzx_line,con.nzc_effg,con.NZC_CSIZECD
         order by boat.nzx_vslcnname,boat.nzx_type,boat.nzx_line,con.nzc_effg,con.NZC_CSIZECD

+ 443 - 33
ghjg-item-datashare-server/src/test/java/com/shanghaichengdi/ghjgitem/GhjgItemServerApplicationTests.java

@@ -1,54 +1,464 @@
 package com.shanghaichengdi.ghjgitem;
 
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 import cn.smallbun.screw.core.Configuration;
 import cn.smallbun.screw.core.engine.EngineConfig;
 import cn.smallbun.screw.core.engine.EngineFileType;
 import cn.smallbun.screw.core.engine.EngineTemplateType;
 import cn.smallbun.screw.core.execute.DocumentationExecute;
 import cn.smallbun.screw.core.process.ProcessConfig;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import com.shanghaichengdi.ghjgitem.domain.TransportSgBaseNumber;
+import com.shanghaichengdi.ghjgitem.domain.TransportSgDwNzxAgent;
+import com.shanghaichengdi.ghjgitem.domain.TransportSgDwNzxBoat;
+import com.shanghaichengdi.ghjgitem.domain.TransportSgSyncStatus;
+import com.shanghaichengdi.ghjgitem.mapper.TransportSgBaseNumberMapper;
+import com.shanghaichengdi.ghjgitem.service.TransportSgBaseNumberService;
+import com.shanghaichengdi.ghjgitem.service.TransportSgDwNzxBoatService;
+import com.shanghaichengdi.ghjgitem.service.TransportSgSyncStatusService;
+import com.shanghaichengdi.ghjgitem.util.Encodes;
+import com.shanghaichengdi.ghjgitem.util.StringUtils;
+import com.shanghaichengdi.ghjgitem.vo.response.ReturnMsg;
+import com.shanghaigeography.Util.DateUtils;
+import com.shanghaigeography.Util.ObjOPUtil;
+import com.shanghaigeography.Util.SnowflakeConfig;
 import com.zaxxer.hikari.HikariDataSource;
 import org.junit.jupiter.api.Test;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.nio.charset.StandardCharsets;
+import java.text.ParseException;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 @SpringBootTest
 class GhjgItemServerApplicationTests {
+  @Autowired
+  private TransportSgBaseNumberMapper baseNumberMapper;
+  @Autowired
+  private TransportSgSyncStatusService sgSyncStatusService;
+
+
+  @Autowired
+  SnowflakeConfig snowflakeConfig;
+  @Autowired
+  private TransportSgBaseNumberService baseNumberService;
+  @Autowired
+  private TransportSgDwNzxBoatService boatService;
+
+
+  @Autowired
+  private TransportSgDwNzxBoatService sgDwNzxBoatService;
+// 上港数据测试
+  public static void main(String[] args) {
+
+    TransportSgDwNzxAgent transportSgDwNzxAgent=new TransportSgDwNzxAgent();
+    transportSgDwNzxAgent.setNzaNzxnm("上港集团");
+    transportSgDwNzxAgent.setNzaNzxnm("上海国际港务(集团)股份有限公司");
+      String mvData = Encodes.encodeBase64(
+            Encodes.aesEncrypt(("["+ JSONUtil.parse(transportSgDwNzxAgent).toString()+"]").getBytes(StandardCharsets.UTF_8),
+                    "ghThreeDataShare".getBytes(),
+                    "ghThreeDataShare".getBytes()));
+    System.out.println(mvData);
+
+
+//    String mvData = Encodes.encodeBase64(
+//            Encodes.aesEncrypt("[{\"nzxSchPkid\":1905448138362191872,\"nzxAendtm\":\"2025-01-01 10:00:00\", \"nzxVslcnname\":\"测试船舶\",\"nzxVslcd\":\"船舶Code\",\"nzxType\":\"BL\",\"nzxAgent\":\"测试企业\"}]".getBytes(StandardCharsets.UTF_8),
+//                    "ghThreeDataShare".getBytes(),
+//                    "ghThreeDataShare".getBytes()));
+//    System.out.println(mvData);
+//
+////
+////    String data="{\n" +
+////            "\"syncStatus\":1,\n" +
+////            "\"syncYear\":2025,\n" +
+////            "\"syncQuarter\":1,\n" +
+////            "\"syncBoatTotal\":1,\n" +
+////            "\"syncContainersTotal\":1,\n" +
+////            "\"syncStartTime\":\"2025-03-28 10:00:00\",\n" +
+////            "\"syncUpdateStatus\":0,\n" +
+////            "\"syncUpdateTime\":\"2025-03-28 10:00:00\"\n" +
+////            "}";
+////    String mvData = Encodes.encodeBase64(
+////            Encodes.aesEncrypt(data.getBytes(StandardCharsets.UTF_8),
+////                    "ghThreeDataShare".getBytes(),
+////                    "ghThreeDataShare".getBytes()));
+////    System.out.println(mvData);
+//
+////    TransportSgDwNzxContainers nzxContainers=new TransportSgDwNzxContainers();
+////    nzxContainers.setNzcPkid(IdUtil.getSnowflake(0,1).nextId());
+////    nzxContainers.setNzcNzxSchPkid(1905448138362191872L);
+////    nzxContainers.setNzcCntrid(1L);
+////    nzxContainers.setNzcCntrno("箱号");
+////    nzxContainers.setNzcCsizecd("20");
+////    nzxContainers.setNzcCtpCtypecd("GP");
+////    nzxContainers.setNzcCheightcd("25");
+////    nzxContainers.setNzcCweight(new BigDecimal("2225"));
+////    nzxContainers.setNzcEffg("E");
+////    nzxContainers.setNzcThroughcustom("N");
+////    System.out.println(JSONObject.toJSON(nzxContainers));
+////        String mvData = Encodes.encodeBase64(
+////            Encodes.aesEncrypt(("["+JSONObject.toJSON(nzxContainers)+"]").getBytes(StandardCharsets.UTF_8),
+////                    "ghThreeDataShare".getBytes(),
+////                    "ghThreeDataShare".getBytes()));
+////    System.out.println(mvData);
+  }
+    @Test
+    void getConnRecordInfoListSync() throws ParseException {
+//      TransportSgDwNzxBoat sgDwNzxBoat=new TransportSgDwNzxBoat();
+//      sgDwNzxBoat.setNzxSchPkid(snowflakeConfig.snowflakeId());
+//      sgDwNzxBoat.setNzxVslcnname("测试船舶");
+//      sgDwNzxBoat.setNzxType("类型");
+//      sgDwNzxBoat.setNzxAgent("测试企业");
+//      sgDwNzxBoat.setNzxVslcd("测试企业");
+//      System.out.println(JSONUtil.parse(sgDwNzxBoat));
+//      boolean a= sgDwNzxBoatService.save(sgDwNzxBoat);
+
+  }
+
+//    public static void main(String[] args) {
+//    List<TransportSgDwNzxBoat>  transportSgDwNzxBoats=new ArrayList<>();
+//    TransportSgDwNzxBoat sgDwNzxBoat=new TransportSgDwNzxBoat();
+//    sgDwNzxBoat.setNzxLine("测试航线").setNzxAgent("测试公司").setNzxType("测试类型").setNzxVslcnname("测试船舶").setNzxSchPkid(1L);
+//    transportSgDwNzxBoats.add(sgDwNzxBoat);
+//    TransportSgDwNzxBoat sgDwNzxBoat1=new TransportSgDwNzxBoat();
+//    sgDwNzxBoat1.setNzxLine("测试航线11").setNzxAgent("测试公司1").setNzxType("测试类型1").setNzxVslcnname("测试船舶1").setNzxSchPkid(2L);
+//    transportSgDwNzxBoats.add(sgDwNzxBoat1);
+//    TransportSgDwNzxBoat sgDwNzxBoat2=new TransportSgDwNzxBoat();
+//    sgDwNzxBoat2.setNzxLine("测试航线2").setNzxAgent("测试公司2").setNzxType("测试类型2").setNzxVslcnname("测试船舶2").setNzxSchPkid(3L);
+//    transportSgDwNzxBoats.add(sgDwNzxBoat2);
+//
+//    List<TransportSgBaseNumber>  islocks=new ArrayList<>();
+//    TransportSgBaseNumber sgDwNzxBoats=new TransportSgBaseNumber();
+//    sgDwNzxBoats.setBaseLine("测试航线").setBaseCompyName("测试公司").setBaseType("测试类型").setBaseBoatName("测试船舶");
+//    islocks.add(sgDwNzxBoats);
+//    TransportSgBaseNumber sgDwNzxBoats1=new TransportSgBaseNumber();
+//    sgDwNzxBoats1.setBaseLine("测试航线11").setBaseCompyName("测试公司1").setBaseType("测试类型1").setBaseBoatName("测试船舶1");
+//    islocks.add(sgDwNzxBoats1);
+//    TransportSgBaseNumber sgDwNzxBoats2=new TransportSgBaseNumber();
+//    sgDwNzxBoats2.setBaseLine("测试航线2").setBaseCompyName("测试公司22").setBaseType("测试类型2").setBaseBoatName("测试船舶2");
+//    islocks.add(sgDwNzxBoats2);
+//    Function<TransportSgDwNzxBoat, List<Object>> compositeKey = boats ->
+//            Arrays.asList(boats.getNzxType(), boats.getNzxLine(), boats.getNzxVslcnname(), boats.getNzxAgent());
+//    Map<List<Object>, List<TransportSgDwNzxBoat>> updata = transportSgDwNzxBoats.stream().collect(Collectors.groupingBy(compositeKey, Collectors.toList()));
+//
+//    Function<TransportSgBaseNumber, List<Object>> lockDataKey = boats ->
+//            Arrays.asList(boats.getBaseType(), boats.getBaseLine(), boats.getBaseBoatName(), boats.getBaseCompyName());
+//    Map<List<Object>, List<TransportSgBaseNumber>> lockData = islocks.stream().collect(Collectors.groupingBy(lockDataKey, Collectors.toList()));
+//
+//    if (updata != null && updata.keySet() != null && updata.keySet().size() > 0) {
+//      StringBuilder stringBuilder = new StringBuilder();
+//      List<TransportSgDwNzxBoat> needSaves = new ArrayList<>();
+//      updata.keySet().forEach(i -> {
+//        if (lockData.keySet().contains(i))    //如果过滤数据一致
+//        {
+//          List<Long> stringsFilter = updata.get(i).stream().map(TransportSgDwNzxBoat::getNzxSchPkid).collect(Collectors.toList());
+//          stringBuilder.append("【" + stringsFilter.toString() + "】");
+//        } else {
+//          needSaves.addAll(updata.get(i));
+//        }
+//      });
+//      System.out.println("不通过:"+stringBuilder.toString());
+//      System.out.println("通过:"+needSaves.toString());
+//    }
+//  }
+
+
+
+
 
   @Test
-  void generate() {
-    // 生成文件配置
-    EngineConfig engineConfig = EngineConfig.builder()
-        // 生成文件路径,自己mac本地的地址,这里需要自己更换下路径
-        .fileOutputDir("E:\\DataShareFolder\\tableStructure")
-        // 打开目录
-        .openOutputDir(false)
-        // 文件类型 HTML/WORD/MD 三种格式
-        .fileType(EngineFileType.WORD)
-        // 生成模板实现
-        .produceType(EngineTemplateType.freemarker).build();
-
-    //数据库名称
-
-    HikariDataSource hikariDataSource = new HikariDataSource();
-    //设置数据库连接
-    hikariDataSource.setJdbcUrl("jdbc:oracle:thin:@//10.114.4.56/shhwdb");
-    hikariDataSource.setUsername("ghjg_bussiness");
-    hikariDataSource.setPassword("GHJG@123");
-    // 生成文档配置(包含以下自定义版本号、描述等配置连接)
-    Configuration config = Configuration.builder()
-        .version("1.0.1")
-        .description("数据库设计文档")
-        .dataSource(hikariDataSource)
-        .engineConfig(engineConfig)
-        .produceConfig(getProcessConfig())
-        .build();
-
-    // 执行生成
-    new DocumentationExecute(config).execute();
+  void puQuarterlyStatus() throws ParseException {
+
+    TransportSgSyncStatus sgSyncStatuses= new TransportSgSyncStatus();
+    sgSyncStatuses.setSyncId(snowflakeConfig.snowflakeId());
+    sgSyncStatuses.setSyncYear(2024);
+    sgSyncStatuses.setSyncQuarter(4);
+    sgSyncStatuses.setSyncStatus(1);
+    sgSyncStatuses.setSyncStartTime(new Date());
+    sgSyncStatuses.setSyncUpdateStatus(0);
+    if(sgSyncStatuses!=null) {
+      int pageSize = 2;
+      int count=1;
+      if (sgSyncStatuses.getSyncUpdateStatus() == 0) {
+        Calendar startDate = DateUtils.getQuarterStart(sgSyncStatuses.getSyncYear(), sgSyncStatuses.getSyncQuarter());
+        Calendar endDate = DateUtils.getQuarterEnd(sgSyncStatuses.getSyncYear(), sgSyncStatuses.getSyncQuarter());
+        PageHelper.startPage(count, pageSize);
+        Page<TransportSgBaseNumber> baseNumberPage = baseNumberMapper.getAllForCountData(startDate.getTime(), endDate.getTime());
+        PageHelper.clearPage();
+        if (baseNumberPage != null && baseNumberPage.size() > 0 && baseNumberPage.getResult() != null && baseNumberPage.getResult().size() > 0) {
+          if (baseNumberPage.getTotal() > pageSize) {
+            Long totalCount = baseNumberPage.getTotal();
+            Long totalPages = (totalCount + pageSize - 1) / pageSize;
+            for (int i = 1; i <= totalPages; i++) {
+              System.out.println("===  本次运行第:"+i+"页");
+              PageHelper.startPage(i, pageSize);
+              Page<TransportSgBaseNumber> baseNumberPages = baseNumberMapper.getAllForCountData(startDate.getTime(), endDate.getTime());
+              if (i == 1) {
+                saveAllTransportSgBaseNumber(sgSyncStatuses.getSyncYear(), sgSyncStatuses.getSyncQuarter(), baseNumberPages.getResult(), null);
+              } else {
+                saveAllTransportSgBaseNumber(sgSyncStatuses.getSyncYear(), sgSyncStatuses.getSyncQuarter(), baseNumberPages.getResult(), null);
+              }
+              PageHelper.clearPage();
+            }
+          } else {
+            saveAllTransportSgBaseNumber(sgSyncStatuses.getSyncYear(), sgSyncStatuses.getSyncQuarter(), baseNumberPage.getResult(), null);
+          }
+        }
+
+        //所以企业数据合并成上港的
+        LambdaQueryWrapper<TransportSgBaseNumber> lambdaQueryWrappera = new LambdaQueryWrapper();
+        lambdaQueryWrappera.eq(TransportSgBaseNumber::getBaseYear, sgSyncStatuses.getSyncYear());
+        lambdaQueryWrappera.eq(TransportSgBaseNumber::getBaseQuarter, sgSyncStatuses.getSyncQuarter());
+        IPage<TransportSgBaseNumber> baseNumberPages = baseNumberMapper.selectPage(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(count, pageSize), lambdaQueryWrappera);
+        if (baseNumberPages.getTotal() > pageSize) {
+          Long totalCount = baseNumberPage.getTotal();
+          Long totalPages = (totalCount + pageSize - 1) / pageSize;
+          for (int i = 1; i <= totalPages; i++) {
+            if (i == 1) {
+              baseNumberPages.getRecords().forEach(j -> {
+                j.setBaseCompyName("上港集团");
+                j.setBaseHangId(j.getBaseId());
+                j.setBaseId(snowflakeConfig.snowflakeId());
+              });
+              baseNumberService.saveOrUpdateBatch(baseNumberPages.getRecords());
+            } else {
+              IPage<TransportSgBaseNumber> baseNumberPagesNow = baseNumberService.page(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(i, pageSize), lambdaQueryWrappera);
+              baseNumberPagesNow.getRecords().forEach(j -> {
+                j.setBaseCompyName("上港集团");
+                j.setBaseHangId(j.getBaseId());
+                j.setBaseId(snowflakeConfig.snowflakeId());
+              });
+              baseNumberService.saveOrUpdateBatch(baseNumberPagesNow.getRecords());
+            }
+          }
+        } else {
+          baseNumberPages.getRecords().forEach(i -> {
+            i.setBaseCompyName("上港集团");
+            i.setBaseHangId(i.getBaseId());
+            i.setBaseId(snowflakeConfig.snowflakeId());
+          });
+          baseNumberService.saveOrUpdateBatch(baseNumberPages.getRecords());
+        }
+      }
+      else {
+        Calendar startDate = DateUtils.getQuarterStart(sgSyncStatuses.getSyncYear(), sgSyncStatuses.getSyncQuarter());
+        Calendar endDate = DateUtils.getQuarterEnd(sgSyncStatuses.getSyncYear(), sgSyncStatuses.getSyncQuarter());
+        PageHelper.startPage(count, pageSize);
+        Page<TransportSgBaseNumber> baseNumberPage = baseNumberMapper.getAllForCountDataForUpdate(startDate.getTime(), endDate.getTime());
+        if (baseNumberPage != null && baseNumberPage.size() > 0 && baseNumberPage.getResult() != null && baseNumberPage.getResult().size() > 0) {
+          if (baseNumberPage.getTotal() > pageSize ){
+            Long totalCount = baseNumberPage.getTotal();
+            Long totalPages = (totalCount + pageSize - 1) / pageSize;
+            for (int i = count; i <= totalPages; i++) {
+              if (i == 1) {
+                saveAllTransportSgBaseNumber(sgSyncStatuses.getSyncYear(), sgSyncStatuses.getSyncQuarter(), baseNumberPage.getResult(), null);
+              } else {
+                PageHelper.startPage(i, pageSize);
+                Page<TransportSgBaseNumber> baseNumberPages = baseNumberMapper.getAllForCountData(startDate.getTime(), endDate.getTime());
+                saveAllTransportSgBaseNumber(sgSyncStatuses.getSyncYear(), sgSyncStatuses.getSyncQuarter(), baseNumberPages.getResult(), null);
+              }
+            }
+          } else {
+            saveAllTransportSgBaseNumber(sgSyncStatuses.getSyncYear(), sgSyncStatuses.getSyncQuarter(), baseNumberPage.getResult(), null);
+          }
+        }
+
+        LambdaQueryWrapper<TransportSgBaseNumber> lambdaQueryWrappera1 = new LambdaQueryWrapper();
+        lambdaQueryWrappera1.eq(TransportSgBaseNumber::getBaseYear, sgSyncStatuses.getSyncYear());
+        lambdaQueryWrappera1.eq(TransportSgBaseNumber::getBaseQuarter, sgSyncStatuses.getSyncQuarter());
+        baseNumberMapper.delete(lambdaQueryWrappera1.eq(TransportSgBaseNumber::getBaseCompyName,"上港集团"));
+        //所以企业数据合并成上港
+        LambdaQueryWrapper<TransportSgBaseNumber> lambdaQueryWrappera = new LambdaQueryWrapper();
+        lambdaQueryWrappera.eq(TransportSgBaseNumber::getBaseYear, sgSyncStatuses.getSyncYear());
+        lambdaQueryWrappera.eq(TransportSgBaseNumber::getBaseQuarter, sgSyncStatuses.getSyncQuarter());
+        IPage<TransportSgBaseNumber> baseNumberPages = baseNumberMapper.selectPage(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(count, pageSize), lambdaQueryWrappera);
+        if (baseNumberPages.getTotal() > pageSize) {
+          Long totalCount = baseNumberPage.getTotal();
+          Long totalPages = (totalCount + pageSize - 1) / pageSize;
+          for (int i = count; i <= totalPages; i++) {
+            if (i == 1) {
+              baseNumberPages.getRecords().forEach(j -> {
+                j.setBaseCompyName("上港集团");
+                j.setBaseHangId(j.getBaseId());
+                j.setBaseId(snowflakeConfig.snowflakeId());
+              });
+              baseNumberService.saveOrUpdateBatch(baseNumberPages.getRecords());
+            } else {
+              IPage<TransportSgBaseNumber> baseNumberPagesNow = baseNumberService.page(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(i, pageSize), lambdaQueryWrappera);
+              baseNumberPagesNow.getRecords().forEach(j -> {
+                j.setBaseCompyName("上港集团");
+                j.setBaseHangId(j.getBaseId());
+                j.setBaseId(snowflakeConfig.snowflakeId());
+              });
+              baseNumberService.saveOrUpdateBatch(baseNumberPagesNow.getRecords());
+            }
+          }
+        } else {
+          baseNumberPages.getRecords().forEach(i -> {
+            i.setBaseCompyName("上港集团");
+            i.setBaseHangId(i.getBaseId());
+            i.setBaseId(snowflakeConfig.snowflakeId());
+          });
+          baseNumberService.saveOrUpdateBatch(baseNumberPages.getRecords());
+        }
+
+        LambdaQueryWrapper<TransportSgDwNzxBoat> lambdaQueryWrapper = new LambdaQueryWrapper();
+        lambdaQueryWrapper.eq(TransportSgDwNzxBoat::getTransUpdate, 1);
+        TransportSgDwNzxBoat sgDwNzxBoat = new TransportSgDwNzxBoat();
+        sgDwNzxBoat.setTransUpdate(0);
+        boatService.update(sgDwNzxBoat, lambdaQueryWrapper);
+      }
+    }
+    boolean a = sgSyncStatusService.saveOrUpdateByMultiId(sgSyncStatuses);
+}
+
+
+  /**
+   * 组装数据
+   * @param sgBaseNumberList
+   * @return
+   */
+  List<TransportSgBaseNumber>   saveAllTransportSgBaseNumber(Integer year,Integer q,List<TransportSgBaseNumber> sgBaseNumberList,String compyName)
+  {
+    System.out.println("===   本次查询数据:"+sgBaseNumberList.toString());
+    //先分组
+    Map<Integer,List<TransportSgBaseNumber>> listMap=new HashMap<>();
+    sgBaseNumberList.stream().forEach(i->{
+      String hashKey=i.getBaseBoatName()+i.getBaseCompyName()+i.getBaseLine()+i.getBaseType();
+      List<TransportSgBaseNumber> baseNumbers= listMap.get(hashKey.hashCode());
+      if (baseNumbers!=null && baseNumbers.size()>0) {
+        baseNumbers.add(i);
+        listMap.put(hashKey.hashCode(),baseNumbers);
+      }else {
+        List<TransportSgBaseNumber> sgBaseNumberList1=new ArrayList<>();
+        sgBaseNumberList1.add(i);
+        listMap.put(hashKey.hashCode(),sgBaseNumberList1);
+      }
+    });
+    List<TransportSgBaseNumber> needSaveData=new ArrayList<>();
+    //再合并
+    listMap.keySet().forEach(i->{
+      List<TransportSgBaseNumber> baseNumbers= listMap.get(i);
+      List<TransportSgBaseNumber> base20E= baseNumbers.stream().filter(j->"E".equals(j.getColumn2())).filter(j->"20".equals(j.getColumn1())).collect(Collectors.toList());
+      List<TransportSgBaseNumber> base40E= baseNumbers.stream().filter(j->"E".equals(j.getColumn2())).filter(j->"40".equals(j.getColumn1())).collect(Collectors.toList());
+      List<TransportSgBaseNumber> base45E= baseNumbers.stream().filter(j->"E".equals(j.getColumn2())).filter(j->"45".equals(j.getColumn1())).collect(Collectors.toList());
+      List<TransportSgBaseNumber> base20F= baseNumbers.stream().filter(j->"F".equals(j.getColumn2())).filter(j->"20".equals(j.getColumn1())).collect(Collectors.toList());
+      List<TransportSgBaseNumber> base40F= baseNumbers.stream().filter(j->"F".equals(j.getColumn2())).filter(j->"40".equals(j.getColumn1())).collect(Collectors.toList());
+      List<TransportSgBaseNumber> base45F= baseNumbers.stream().filter(j->"F".equals(j.getColumn2())).filter(j->"45".equals(j.getColumn1())).collect(Collectors.toList());
+      TransportSgBaseNumber sgBaseNumber= new TransportSgBaseNumber();
+      BeanUtils.copyProperties(baseNumbers.get(0), sgBaseNumber);
+      if (base20E!=null && base20E.size()>0) {
+        sgBaseNumber.setBaseBoxes20e(new BigDecimal(base20E.get(0).getColumn3()));
+      }
+      if (base40E!=null && base40E.size()>0) {
+        sgBaseNumber.setBaseBoxes40e(new BigDecimal(base40E.get(0).getColumn3()));
+      }
+      if (base45E!=null && base45E.size()>0) {
+        sgBaseNumber.setBaseBoxes45e(new BigDecimal(base45E.get(0).getColumn3()));
+      }
+      if (base20F!=null && base20F.size()>0) {
+        sgBaseNumber.setBaseBoxes20f(new BigDecimal(base20F.get(0).getColumn3()));
+      }
+      if (base40F!=null && base40F.size()>0) {
+        sgBaseNumber.setBaseBoxes40f(new BigDecimal(base40F.get(0).getColumn3()));
+      }
+      if (base45F!=null && base45F.size()>0) {
+        sgBaseNumber.setBaseBoxes45f(new BigDecimal(base45F.get(0).getColumn3()));
+      }
+      if (StringUtils.isNotEmpty(compyName))
+      {
+        sgBaseNumber.setBaseCompyName(compyName);
+      }
+      sgBaseNumber.setBaseYear(year);
+      sgBaseNumber.setBaseQuarter(q);
+      //设置hascode
+      sgBaseNumber.setColumn1(String.valueOf(i));
+      needSaveData.add(sgBaseNumber);
+    });
+
+    System.out.println("===   合并属性合并后数据:"+needSaveData.toString());
+    ////已查到 分组数据,再次合并成一条数据
+    if (needSaveData!=null && needSaveData.size()>0) {
+
+      Map<String,TransportSgBaseNumber> hashCodes = needSaveData.stream().collect(Collectors.toMap(TransportSgBaseNumber::getColumn1, Function.identity()));
+      LambdaQueryWrapper<TransportSgBaseNumber> lambdaQueryWrapper= new LambdaQueryWrapper<>();
+      lambdaQueryWrapper.in(TransportSgBaseNumber::getColumn1,hashCodes.keySet());
+      lambdaQueryWrapper.ne(TransportSgBaseNumber::getBaseCompyName,"上港集团");
+      //获取已存储后的数据
+      List<TransportSgBaseNumber> sgBaseNumbers =    baseNumberService.list(lambdaQueryWrapper);
+      if (sgBaseNumbers!=null && sgBaseNumbers.size()>0)
+      {
+        List<TransportSgBaseNumber> needSaveDatas=onlySum(needSaveData,sgBaseNumbers);
+        if (needSaveDatas!=null && needSaveDatas.size()>0)
+        {
+          System.out.println("===   存储数据:"+needSaveDatas.toString());
+          baseNumberService.saveOrUpdateBatch(needSaveDatas);
+          return needSaveDatas;
+        }
+      }
+      else {  //未查到
+        needSaveData.forEach(i->{
+          i.setBaseId(snowflakeConfig.snowflakeId());
+        });
+        System.out.println("===   存储数据:"+needSaveData.toString());
+        baseNumberService.saveBatch(needSaveData);
+      }
+    }
+    return needSaveData;
+
+  }
+
+  /**
+   * 属性合并并条目合并
+   * @param centers  旧的
+   * @param list  新的
+   * @return
+   */
+  private List<TransportSgBaseNumber> onlySum(List<TransportSgBaseNumber> centers, List<TransportSgBaseNumber> list) {
+    if (centers==null || centers.size()<1)
+    {
+      try {
+        return ObjOPUtil.deepCopy(list);
+
+      } catch (IOException e) {
+        e.printStackTrace();
+      } catch (ClassNotFoundException e) {
+        e.printStackTrace();
+      }
+    }
+    List<TransportSgBaseNumber> list1=new ArrayList<>();
+    List<String> common=centers.stream().map(TransportSgBaseNumber::getColumn1).collect(Collectors.toList());
+    List<String> newDataCode=list.stream().map(TransportSgBaseNumber::getColumn1).collect(Collectors.toList());
+    common.retainAll(newDataCode);
+    Map<String,TransportSgBaseNumber> old=centers.stream().collect(Collectors.toMap(TransportSgBaseNumber::getColumn1,Function.identity()));
+    Map<String,TransportSgBaseNumber> newData=list.stream().collect(Collectors.toMap(TransportSgBaseNumber::getColumn1,Function.identity()));
+    //找到旧的不存在的
+    List<TransportSgBaseNumber>  newDatas=list.stream().filter(i->!old.containsKey(i.getColumn1())).collect(Collectors.toList());
+    list1.addAll(newDatas);
 
+    for (String oldCode:old.keySet() ){
+      if (common.contains(oldCode))
+      {         //存储公共的
+        TransportSgBaseNumber center=new ObjOPUtil<TransportSgBaseNumber>().fildMergeNewBean(newData.get(oldCode),old.get(oldCode));
+        list1.add(center);
+      }else {
+        TransportSgBaseNumber sgBaseNumber =old.get(oldCode);
+        sgBaseNumber.setBaseId(snowflakeConfig.snowflakeId());
+        list1.add(sgBaseNumber);
+      }
+    };
+    return list1;
   }
 
   /**