|
@@ -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;
|
|
|
}
|
|
|
|
|
|
/**
|