Commit 6d886fd1 authored by 刘林's avatar 刘林

Merge remote-tracking branch 'origin/develop_tzs_main' into develop_tzs_main

parents baf56083 5ba6d6ed
package com.yeejoin.amos.boot.module.common.api.dto; package com.yeejoin.amos.boot.module.common.api.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Id;
......
...@@ -652,4 +652,7 @@ public class ESEquipmentInfo { ...@@ -652,4 +652,7 @@ public class ESEquipmentInfo {
@Field(type = FieldType.Keyword) @Field(type = FieldType.Keyword)
private String meMaster1Phone; private String meMaster1Phone;
} }
@Field(type = FieldType.Keyword)
private String version;
} }
package com.yeejoin.amos.boot.module.common.biz.service.impl;
import lombok.RequiredArgsConstructor;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import static com.yeejoin.amos.boot.module.common.api.constant.TZSCommonConstant.ES_INDEX_NAME_EQUIPMENT_INFO;
@Service
@RequiredArgsConstructor
public class ESEquipmentInfoService {
private final RestHighLevelClient restHighLevelClient;
public List<String> findSequenceNbrByIds(List<String> ids) {
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()
.query(QueryBuilders.termsQuery("SEQUENCE_NBR.keyword", ids))
.fetchSource(false);
SearchRequest request = new SearchRequest(ES_INDEX_NAME_EQUIPMENT_INFO)
.source(sourceBuilder);
try {
SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
return Arrays.stream(response.getHits().getHits())
.map(SearchHit::getId)
.collect(Collectors.toList());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
...@@ -3,9 +3,26 @@ package com.yeejoin.amos.boot.module.common.biz.service.impl; ...@@ -3,9 +3,26 @@ package com.yeejoin.amos.boot.module.common.biz.service.impl;
import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory; import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory;
import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto; import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.SearchHits;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import static com.yeejoin.amos.boot.module.common.api.constant.TZSCommonConstant.ES_INDEX_NAME_JG_ALL;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class EquipmentCategoryService { public class EquipmentCategoryService {
...@@ -14,10 +31,28 @@ public class EquipmentCategoryService { ...@@ -14,10 +31,28 @@ public class EquipmentCategoryService {
private final ElasticsearchOperations elasticsearchOperations; private final ElasticsearchOperations elasticsearchOperations;
private final RestHighLevelClient restHighLevelClient;
public ESEquipmentCategoryDto saveWithImmediateRefresh(ESEquipmentCategoryDto dto) { public ESEquipmentCategoryDto saveWithImmediateRefresh(ESEquipmentCategoryDto dto) {
ESEquipmentCategoryDto saved = equipmentCategoryDao.save(dto); ESEquipmentCategoryDto saved = equipmentCategoryDao.save(dto);
// 手动触发索引刷新 // 手动触发索引刷新
elasticsearchOperations.indexOps(ESEquipmentCategoryDto.class).refresh(); elasticsearchOperations.indexOps(ESEquipmentCategoryDto.class).refresh();
return saved; return saved;
} }
public List<String> findSequenceNbrByIds(List<String> ids) {
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()
.query(QueryBuilders.termsQuery("SEQUENCE_NBR.keyword", ids))
.fetchSource(false);
SearchRequest request = new SearchRequest(ES_INDEX_NAME_JG_ALL)
.source(sourceBuilder);
try {
SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
return Arrays.stream(response.getHits().getHits())
.map(SearchHit::getId)
.collect(Collectors.toList());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
} }
\ No newline at end of file
...@@ -159,7 +159,7 @@ public class DataDockController extends BaseController { ...@@ -159,7 +159,7 @@ public class DataDockController extends BaseController {
@ApiOperation(httpMethod = "POST", value = "工业 、公用、长输管道批量保存", notes = "工业 、公用、长输管道批量保存") @ApiOperation(httpMethod = "POST", value = "工业 、公用、长输管道批量保存", notes = "工业 、公用、长输管道批量保存")
@RestEventTrigger(value = "operateLogRestEventHandler") @RestEventTrigger(value = "operateLogRestEventHandler")
public ResponseModel<?> savePipingData(@RequestBody Map<String, Object> paramMap) { public ResponseModel<?> savePipingData(@RequestBody Map<String, Object> paramMap) {
return ResponseHelper.buildResponse(dataDockService.savePipingData(paramMap, getSelectedOrgInfo().getCompany())); return ResponseHelper.buildResponse(dataDockService.savePipingData(paramMap, getSelectedOrgInfo()));
} }
/** /**
......
...@@ -456,4 +456,13 @@ public class DataHandlerController extends BaseController { ...@@ -456,4 +456,13 @@ public class DataHandlerController extends BaseController {
return ResponseHelper.buildResponse(dataHandlerService.insertEquipFromDb2NewEs(paramMap)); return ResponseHelper.buildResponse(dataHandlerService.insertEquipFromDb2NewEs(paramMap));
} }
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/sync-equip/shard")
@ApiOperation(httpMethod = "PUT", value = "分片对齐设备的数据与es数据", notes = "分片对齐设备的数据与es数据")
public ResponseModel<Boolean> syncEquipShard(@RequestParam Integer shard,
@RequestParam Integer slots,
@RequestParam String batchNo){
return ResponseHelper.buildResponse(dataHandlerService.syncEquipShard(shard, slots, batchNo));
}
} }
\ No newline at end of file
package com.yeejoin.amos.boot.module.jg.biz.job;
import cn.hutool.core.date.DateUtil;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.component.robot.AmosRequestContext;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
@Component
@RequiredArgsConstructor
@Slf4j
public class DataConsistencyJob {
private final AmosRequestContext requestContext;
private final DiscoveryClient discoveryClient;
private final RestTemplate restTemplate; // 需要提前注入
@Value("${spring.application.name}")
private String applicationName;
// @Scheduled(cron = "0 0 3 * * ?")
// @SchedulerLock(name = "equipConsistencyJob", lockAtMostFor = "PT1H")
public void execute() {
List<ServiceInstance> instanceList = discoveryClient.getInstances(applicationName);
int slots = instanceList.size();
Executor executor = Executors.newFixedThreadPool(slots);
HttpHeaders headers = this.builderHeaders();
HttpEntity<?> requestEntity = new HttpEntity<>(headers);
List<CompletableFuture<Void>> futures = new ArrayList<>();
String batchNo = DateUtil.today();
for (int i = 0; i < slots; i++) {
int index = i;
ServiceInstance instance = instanceList.get(i);
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
String baseUrl = instance.getUri().toString();
String apiUrl = baseUrl + "/jg/dataHandler/sync-equip/shard?shard={shard}&slots={slots}&batchNo={batchNo}";
Map<String, Object> params = new HashMap<>();
params.put("shard", index);
params.put("slots", slots);
params.put("batchNo", batchNo);
restTemplate.exchange(
apiUrl,
HttpMethod.PUT,
requestEntity,
FeignClientResult.class,
params
);
}, executor);
futures.add(future);
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]))
.exceptionally(ex -> {
log.error("任务执行异常", ex);
return null;
})
.join();
}
}
private HttpHeaders builderHeaders() {
HttpHeaders httpheaders = new HttpHeaders();
httpheaders.add("appKey", requestContext.getAppKey());
httpheaders.add("product", requestContext.getProduct());
httpheaders.add("token", requestContext.getToken());
httpheaders.setContentType(MediaType.APPLICATION_JSON);
return httpheaders;
}
}
...@@ -20,6 +20,7 @@ import com.google.common.collect.Maps; ...@@ -20,6 +20,7 @@ import com.google.common.collect.Maps;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo; import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.utils.*; import com.yeejoin.amos.boot.biz.common.utils.*;
import com.yeejoin.amos.boot.module.common.api.converter.CommonCustomConverter; import com.yeejoin.amos.boot.module.common.api.converter.CommonCustomConverter;
import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory; import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory;
...@@ -54,8 +55,8 @@ import com.yeejoin.amos.boot.module.jg.biz.utils.CodeUtil; ...@@ -54,8 +55,8 @@ import com.yeejoin.amos.boot.module.jg.biz.utils.CodeUtil;
import com.yeejoin.amos.boot.module.jg.biz.utils.JsonUtils; import com.yeejoin.amos.boot.module.jg.biz.utils.JsonUtils;
import com.yeejoin.amos.boot.module.ymt.api.entity.*; import com.yeejoin.amos.boot.module.ymt.api.entity.*;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.*; import com.yeejoin.amos.boot.module.ymt.api.mapper.*;
import com.yeejoin.amos.feign.privilege.Privilege; import com.yeejoin.amos.feign.privilege.Privilege;
...@@ -70,9 +71,8 @@ import org.apache.commons.lang3.math.NumberUtils; ...@@ -70,9 +71,8 @@ import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
...@@ -89,9 +89,11 @@ import java.util.*; ...@@ -89,9 +89,11 @@ import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.function.Function;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
import java.util.stream.StreamSupport;
import static com.alibaba.fastjson.JSON.toJSONString; import static com.alibaba.fastjson.JSON.toJSONString;
import static com.yeejoin.amos.boot.module.common.api.constant.TZSCommonConstant.EQU_CATEGORY_CODE_GDYLRQ; import static com.yeejoin.amos.boot.module.common.api.constant.TZSCommonConstant.EQU_CATEGORY_CODE_GDYLRQ;
...@@ -174,11 +176,9 @@ public class DataDockServiceImpl { ...@@ -174,11 +176,9 @@ public class DataDockServiceImpl {
private final IdxBizJgConstructionInfoMapper idxBizJgConstructionInfoMapper; private final IdxBizJgConstructionInfoMapper idxBizJgConstructionInfoMapper;
private final IdxBizJgOtherInfoMapper idxBizJgOtherInfoMapper; private final IdxBizJgOtherInfoMapper idxBizJgOtherInfoMapper;
private final IdxBizJgInspectionDetectionInfoMapper idxBizJgInspectionDetectionInfoMapper; private final IdxBizJgInspectionDetectionInfoMapper idxBizJgInspectionDetectionInfoMapper;
private final ESEquipmentCategory esEquipmentCategoryDao;
private final PieLineDataChangeServiceImpl pieLineDataChangeService; private final PieLineDataChangeServiceImpl pieLineDataChangeService;
private final ElevatorDataTransactionService elevatorDataTransactionService;
@Value("${equip.detail.path:/mixuap?appId=1742358052905971713&id=1734100233714954241&formType=detail&record=%s&DATA_SOURCE=%s}") @Value("${equip.detail.path:/mixuap?appId=1742358052905971713&id=1734100233714954241&formType=detail&record=%s&DATA_SOURCE=%s}")
private String equipRoutePath; private String equipRoutePath;
...@@ -862,7 +862,9 @@ public class DataDockServiceImpl { ...@@ -862,7 +862,9 @@ public class DataDockServiceImpl {
equipmentCategoryDto.setSTATUS("已认领"); equipmentCategoryDto.setSTATUS("已认领");
equipmentCategoryDto.setIS_DO_BUSINESS(Boolean.TRUE); equipmentCategoryDto.setIS_DO_BUSINESS(Boolean.TRUE);
equipmentCategoryDto.setIS_COMPLETE_XA(Objects.equals("0", isCompleteXa)); equipmentCategoryDto.setIS_COMPLETE_XA(Objects.equals("0", isCompleteXa));
if (ValidationUtil.isEmpty(equipmentCategoryDto.getProblemStatus())) {
equipmentCategoryDto.setProblemStatus(SafetyProblemStatusEnum.HANDLED.getCode()); equipmentCategoryDto.setProblemStatus(SafetyProblemStatusEnum.HANDLED.getCode());
}
esEquipmentCategory.save(equipmentCategoryDto); esEquipmentCategory.save(equipmentCategoryDto);
} }
} }
...@@ -1970,7 +1972,7 @@ public class DataDockServiceImpl { ...@@ -1970,7 +1972,7 @@ public class DataDockServiceImpl {
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Object savePipingData(Map<String, Object> paramMap, CompanyBo company) { public Object savePipingData(Map<String, Object> paramMap, ReginParams reginParams) {
// 获取数据 // 获取数据
List<String> records = new ArrayList<>(); List<String> records = new ArrayList<>();
try { try {
...@@ -1998,17 +2000,16 @@ public class DataDockServiceImpl { ...@@ -1998,17 +2000,16 @@ public class DataDockServiceImpl {
} }
} }
} }
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
// 监管——历史——管道——批量 // 监管——历史——管道——批量
String dataSource = "jg_his_gd_pl"; String dataSource = "jg_his_gd_pl";
// 公共参数提取 // 公共参数提取
EquipRequestParamsDto paramsDto = this.extractCommonData(dataSource, reginParams, equipInfo, equLists); EquipRequestParamsDto paramsDto = this.extractCommonData(dataSource, reginParams, equipInfo, equLists);
// 是否工业管道 // 是否工业管道
boolean isGYGD = "8300".equals(paramsDto.getEquCategoryCode()); boolean isGYGD = "8300".equals(paramsDto.getEquCategoryCode());
boolean haveUseRegistration = false; List<JgUseRegistrationManage> jgUseRegistrationManages = new ArrayList<>();
// 确保使用登记证和工程装置在该单位下都是不存在的,方可导入数据 // 确保使用登记证和工程装置在该单位下都是不存在的,方可导入数据
if (isGYGD) { if (isGYGD) {
haveUseRegistration = this.checkTheUnitRegManageAlreadyExists(paramsDto, haveUseRegistration); jgUseRegistrationManages = this.checkTheUnitRegManageAlreadyExists(paramsDto);
} }
idxBizJgProjectContraptionServiceImpl.checkTheUnitProConMatching(paramsDto); idxBizJgProjectContraptionServiceImpl.checkTheUnitProConMatching(paramsDto);
this.checkTheUnitProConAlreadyExists(paramsDto); this.checkTheUnitProConAlreadyExists(paramsDto);
...@@ -2020,28 +2021,24 @@ public class DataDockServiceImpl { ...@@ -2020,28 +2021,24 @@ public class DataDockServiceImpl {
// 生成使用登记表信息 + 设备关系表 + 历史表 // 生成使用登记表信息 + 设备关系表 + 历史表
JgUseRegistration useReg = this.saveUseRegAndEq(paramsDto, records, proCon); JgUseRegistration useReg = this.saveUseRegAndEq(paramsDto, records, proCon);
// 生成使用登记证表数据 // 生成使用登记证表数据
if (!haveUseRegistration) { if (jgUseRegistrationManages.isEmpty()) {
JgUseRegistrationManage regManage = this.saveUseRegManage(paramsDto, useReg); JgUseRegistrationManage regManage = this.saveUseRegManage(paramsDto, useReg);
// 流水表 // 流水表
this.saveCertChangeRecord(useReg, regManage, records, paramsDto); this.saveCertChangeRecord(useReg, regManage, records, paramsDto);
} else { } else {
// 1.更新使用登记证信息 // 1.更新使用登记证信息,健壮处理,系统业务限制一个证号只能有一个证管理表
JgUseRegistrationManage jgUseRegistrationManage = jgUseRegistrationManageService.lambdaQuery() LambdaUpdateWrapper<JgUseRegistrationManage> manageLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
.eq(JgUseRegistrationManage::getUseRegistrationCode, paramsDto.getUseOrgCode()) manageLambdaUpdateWrapper.set(JgUseRegistrationManage::getSuperviseOrgCode, paramsDto.getOrgBranchCode());
.eq(JgUseRegistrationManage::getIsDelete, 0) manageLambdaUpdateWrapper.set(JgUseRegistrationManage::getSuperviseOrgName, paramsDto.getOrgBranchName());
.one(); manageLambdaUpdateWrapper.set(JgUseRegistrationManage::getEquUseAddress, Stream.of(paramsDto.getProvinceName(), paramsDto.getCityName(), paramsDto.getCountyName(), paramsDto.getStreetName(), paramsDto.getAddress())
if (jgUseRegistrationManage != null) {
jgUseRegistrationManage.setSuperviseOrgCode(paramsDto.getOrgBranchCode());
jgUseRegistrationManage.setSuperviseOrgName(paramsDto.getOrgBranchName());
jgUseRegistrationManage.setEquUseAddress(Stream.of(paramsDto.getProvinceName(), paramsDto.getCityName(), paramsDto.getCountyName(), paramsDto.getStreetName(), paramsDto.getAddress())
.map(value -> value == null || "null".equals(value) ? "" : value) .map(value -> value == null || "null".equals(value) ? "" : value)
.collect(Collectors.joining())); .collect(Collectors.joining()));
jgUseRegistrationManage.setRecDate(new Date()); manageLambdaUpdateWrapper.set(JgUseRegistrationManage::getRecDate, new Date());
jgUseRegistrationManageService.updateById(jgUseRegistrationManage); manageLambdaUpdateWrapper.eq(BaseEntity::getSequenceNbr, jgUseRegistrationManages.stream().map(BaseEntity::getSequenceNbr).collect(Collectors.toList()));
} jgUseRegistrationManageService.update(manageLambdaUpdateWrapper);
} }
} }
this.createResumePipeline(proCon.getSequenceNbr(), String.format(pipelineRoutePath, proCon.getSequenceNbr() + ""), company); this.createResumePipeline(proCon.getSequenceNbr(), String.format(pipelineRoutePath, proCon.getSequenceNbr() + ""), reginParams.getCompany());
eventPublisher.publish(new EquipCreateOrEditEvent(this, BusinessTypeEnum.JG_NEW_PROJECT.name(), Sets.newHashSet(proCon.getSequenceNbr() + ""), EquipCreateOrEditEvent.EquipType.project)); eventPublisher.publish(new EquipCreateOrEditEvent(this, BusinessTypeEnum.JG_NEW_PROJECT.name(), Sets.newHashSet(proCon.getSequenceNbr() + ""), EquipCreateOrEditEvent.EquipType.project));
return Boolean.TRUE; return Boolean.TRUE;
} catch (Exception e) { } catch (Exception e) {
...@@ -2113,17 +2110,9 @@ public class DataDockServiceImpl { ...@@ -2113,17 +2110,9 @@ public class DataDockServiceImpl {
* *
* @param paramsDto 设备请求参数 * @param paramsDto 设备请求参数
*/ */
public boolean checkTheUnitRegManageAlreadyExists(EquipRequestParamsDto paramsDto, boolean haveUseRegistration) { public List<JgUseRegistrationManage> checkTheUnitRegManageAlreadyExists(EquipRequestParamsDto paramsDto) {
// 1. 判断是否使用未来系统生成编号 // 1. 判断是否使用未来系统生成编号
idxBizJgRegisterInfoServiceImpl.checkUseRegistrationCode(paramsDto.getUseOrgCode(), "unit"); idxBizJgRegisterInfoServiceImpl.checkUseRegistrationCode(paramsDto.getUseOrgCode(), "unit");
// 2. 获取使用登记管理列表
// List<JgUseRegistration> useRegistrationList = jgUseRegistrationMapper.selectList(
// new LambdaQueryWrapper<JgUseRegistration>()
// .eq(JgUseRegistration::getUseRegistrationCode, paramsDto.getUseOrgCode())
// .eq(JgUseRegistration::getIsDelete, 0)
// .eq(JgUseRegistration::getStatus, "已完成")
// .orderByDesc(JgUseRegistration::getRecDate)
// .last("limit 1"));
List<JgUseRegistrationManage> useRegistrationManageList = jgUseRegistrationManageMapper.selectList( List<JgUseRegistrationManage> useRegistrationManageList = jgUseRegistrationManageMapper.selectList(
new LambdaQueryWrapper<JgUseRegistrationManage>() new LambdaQueryWrapper<JgUseRegistrationManage>()
.eq(JgUseRegistrationManage::getUseRegistrationCode, paramsDto.getUseOrgCode()) .eq(JgUseRegistrationManage::getUseRegistrationCode, paramsDto.getUseOrgCode())
...@@ -2132,15 +2121,11 @@ public class DataDockServiceImpl { ...@@ -2132,15 +2121,11 @@ public class DataDockServiceImpl {
.orderByDesc(JgUseRegistrationManage::getRecDate)); .orderByDesc(JgUseRegistrationManage::getRecDate));
if (!useRegistrationManageList.isEmpty()) { if (!useRegistrationManageList.isEmpty()) {
// if (useRegistrationList.stream().filter(map -> !"1".equals(map.getRegType())).count() > 1) {
// throw new BadRequest("该使用登记证编号已由系统自动生成,不能导入,请确认使用登记证编号是否正确!");
// }
if (useRegistrationManageList.stream().anyMatch(map -> !paramsDto.getCompanyCode().equals(map.getUseUnitCreditCode()))) { if (useRegistrationManageList.stream().anyMatch(map -> !paramsDto.getCompanyCode().equals(map.getUseUnitCreditCode()))) {
throw new BadRequest("该使用登记证编号在其他企业使用,不能导入,请确认使用登记证编号是否正确!"); throw new BadRequest("该使用登记证编号在其他企业使用,不能导入,请确认使用登记证编号是否正确!");
} }
haveUseRegistration = true;
} }
return haveUseRegistration; return useRegistrationManageList;
} }
/** /**
...@@ -2722,17 +2707,29 @@ public class DataDockServiceImpl { ...@@ -2722,17 +2707,29 @@ public class DataDockServiceImpl {
* @param equLists 数据集 * @param equLists 数据集
* @return 保存结果 * @return 保存结果
*/ */
@Transactional
public Set<String> saveElevatorData(List<Map<String, Object>> equLists) { public Set<String> saveElevatorData(List<Map<String, Object>> equLists) {
RequestContextWrapper contextWrapper = RequestContextWrapper.capture(); RequestContextWrapper contextWrapper = RequestContextWrapper.capture();
Set<String> recordSet = Sets.newConcurrentHashSet(); Set<String> successfulRecordSet = Sets.newConcurrentHashSet();
Set<String> resultSet = Sets.newConcurrentHashSet(); Set<String> failedRecordSet = Sets.newConcurrentHashSet();
Set<String> failedResultSet = Sets.newConcurrentHashSet();
// 分批处理大小 // 分批处理大小
int batchSize = 100; int batchSize = 100;
int totalSize = equLists.size(); int totalSize = equLists.size();
int successCount = 0; int successfulCount = 0;
int failedCount = 0; int failedCount = 0;
// 从equList中取出record
Set<String> recordList = equLists.stream().map(equ -> MapUtil.getStr(equ, "record")).collect(Collectors.toSet());
// 记录es数据快照
Map<String, ESEquipmentCategoryDto> originalEsResultMap = StreamSupport.stream(
esEquipmentCategoryDao.findAllById(recordList).spliterator(), false)
.collect(Collectors.toMap(
ESEquipmentCategoryDto::getSEQUENCE_NBR,
Function.identity()
));
// 分批处理数据 // 分批处理数据
for (int i = 0; i < totalSize; i += batchSize) { for (int i = 0; i < totalSize; i += batchSize) {
int endIndex = Math.min(i + batchSize, totalSize); int endIndex = Math.min(i + batchSize, totalSize);
...@@ -2743,7 +2740,7 @@ public class DataDockServiceImpl { ...@@ -2743,7 +2740,7 @@ public class DataDockServiceImpl {
.map(equ -> CompletableFuture.supplyAsync(() -> { .map(equ -> CompletableFuture.supplyAsync(() -> {
contextWrapper.apply(); contextWrapper.apply();
try { try {
Object resultObj = elevatorDataTransactionService.saveSingleElevatorData(equ); Object resultObj = this.saveElevatorDataInTransaction(equ, "jg_his_xa", null);
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
result.put("success", true); result.put("success", true);
result.put("data", resultObj); result.put("data", resultObj);
...@@ -2769,17 +2766,19 @@ public class DataDockServiceImpl { ...@@ -2769,17 +2766,19 @@ public class DataDockServiceImpl {
if ((Boolean) result.get("success")) { if ((Boolean) result.get("success")) {
Object resultObj = result.get("data"); Object resultObj = result.get("data");
if (resultObj instanceof String) { if (resultObj instanceof String) {
recordSet.add(resultObj.toString()); successfulRecordSet.add(resultObj.toString());
successCount++; successfulCount++;
} }
// 记录做了其他业务则不能更新的record
if (resultObj instanceof Map) { if (resultObj instanceof Map) {
resultSet.add(JSONObject.toJSONString(resultObj)); failedResultSet.add(JSONObject.toJSONString(resultObj));
failedCount++; failedCount++;
} }
} else { } else {
Exception e = (Exception) result.get("exception"); Exception e = (Exception) result.get("exception");
Map<String, Object> equ = (Map<String, Object>) result.get("equ"); Map<String, Object> equ = (Map<String, Object>) result.get("equ");
handleProcessException(e, equ, resultSet); failedRecordSet.add(MapUtil.getStr(equ, "record"));
handleProcessException(e, equ, failedResultSet);
failedCount++; failedCount++;
} }
} catch (Exception e) { } catch (Exception e) {
...@@ -2789,25 +2788,49 @@ public class DataDockServiceImpl { ...@@ -2789,25 +2788,49 @@ public class DataDockServiceImpl {
} }
log.info("已处理数据 {}/{} - 成功: {}, 失败: {}", log.info("已处理数据 {}/{} - 成功: {}, 失败: {}",
Math.min(i + batchSize, totalSize), totalSize, successCount, failedCount); Math.min(i + batchSize, totalSize), totalSize, successfulCount, failedCount);
} }
// 发布成功记录的事件 // 发布成功记录的事件
if (!recordSet.isEmpty()) { if (!ValidationUtil.isEmpty(successfulRecordSet)) {
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { eventPublisher.publish(new EquipCreateOrEditEvent(this, BusinessTypeEnum.JG_NEW_EQUIP.name(), successfulRecordSet, EquipCreateOrEditEvent.EquipType.equip));
@Override }
public void afterCommit() { // 处理失败记录对应es
eventPublisher.publish(new EquipCreateOrEditEvent(this, BusinessTypeEnum.JG_NEW_EQUIP.name(), recordSet, EquipCreateOrEditEvent.EquipType.equip)); if (!ValidationUtil.isEmpty(failedRecordSet)) {
// 分离需要更新和需要删除的记录
List<ESEquipmentCategoryDto> updateList = new ArrayList<>();
List<ESEquipmentCategoryDto> deleteList = new ArrayList<>();
for (String record : failedRecordSet) {
ESEquipmentCategoryDto esEquipment = originalEsResultMap.get(record);
if (esEquipment != null) {
updateList.add(esEquipment);
} else {
// 创建仅包含ID的DTO对象用于删除
ESEquipmentCategoryDto deleteDto = new ESEquipmentCategoryDto();
deleteDto.setSEQUENCE_NBR(record); // 设置主键字段
deleteList.add(deleteDto);
} }
});
} }
// 批量更新存在的记录
if (!updateList.isEmpty()) {
esEquipmentCategoryDao.saveAll(updateList);
}
// 批量删除不存在的记录
if (!deleteList.isEmpty()) {
esEquipmentCategoryDao.deleteAll(deleteList);
}
}
log.info("数据导入完成 - 总计: {}条, 成功: {}条, 失败: {}条", log.info("数据导入完成 - 总计: {}条, 成功: {}条, 失败: {}条",
totalSize, successCount, failedCount); totalSize, successfulCount, failedCount);
log.info("未更新设备record:{}", resultSet); log.info("未更新设备record:{}", failedResultSet);
return resultSet; return failedResultSet;
} }
private void handleProcessException(Exception e, Map<String, Object> equ, Set<String> inUseRecordSet) { private void handleProcessException(Exception e, Map<String, Object> equ, Set<String> failedResultSet) {
try { try {
String traceInfo = Arrays.stream(e.getStackTrace()) String traceInfo = Arrays.stream(e.getStackTrace())
.filter(x -> x.getClassName().contains("com.yeejoin")) .filter(x -> x.getClassName().contains("com.yeejoin"))
...@@ -2819,20 +2842,20 @@ public class DataDockServiceImpl { ...@@ -2819,20 +2842,20 @@ public class DataDockServiceImpl {
.map(String::valueOf) .map(String::valueOf)
.orElse(UUID.randomUUID().toString()); .orElse(UUID.randomUUID().toString());
// esEquipmentCategory.deleteById(record);
ExcelImportErrorLogDto errorLogDto = JSON.parseObject(toJSONString(equ), ExcelImportErrorLogDto.class); ExcelImportErrorLogDto errorLogDto = JSON.parseObject(toJSONString(equ), ExcelImportErrorLogDto.class);
errorLogDto.setErrorInfo(e.getMessage()); errorLogDto.setErrorInfo(e.getMessage());
errorLogDto.setTraceInfo(traceInfo); errorLogDto.setTraceInfo(traceInfo);
errorLogDto.setCreateTime(new Date()); errorLogDto.setCreateTime(new Date());
excelImportErrorLogDao.save(errorLogDto); excelImportErrorLogDao.save(errorLogDto);
inUseRecordSet.add(JSONObject.toJSONString(errorLogDto)); failedResultSet.add(JSONObject.toJSONString(errorLogDto));
log.error("处理数据时发生异常,record: {}", record, e); log.error("处理数据时发生异常,record: {}", record, e);
} catch (Exception handleException) { } catch (Exception handleException) {
log.error("处理异常信息时发生错误", handleException); log.error("处理异常信息时发生错误", handleException);
} }
} }
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
public Object saveElevatorDataInTransaction(Map<String, Object> equ, String dataSource, String remark) { public Object saveElevatorDataInTransaction(Map<String, Object> equ, String dataSource, String remark) {
Map<String, String> errorResult = Maps.newConcurrentMap(); Map<String, String> errorResult = Maps.newConcurrentMap();
String record = Optional.ofNullable(equ.get("record")).map(String::valueOf).orElse(UUID.randomUUID().toString()); String record = Optional.ofNullable(equ.get("record")).map(String::valueOf).orElse(UUID.randomUUID().toString());
...@@ -2869,7 +2892,6 @@ public class DataDockServiceImpl { ...@@ -2869,7 +2892,6 @@ public class DataDockServiceImpl {
IdxBizJgOtherInfo otherInfo = this.saveOtherInfo(equ, record, equList); IdxBizJgOtherInfo otherInfo = this.saveOtherInfo(equ, record, equList);
this.saveInspectInfo(equ, record); this.saveInspectInfo(equ, record);
this.saveTechParams(equ, record, equList); this.saveTechParams(equ, record, equList);
this.saveEquInfoToEs(record, isCompleteXa);
this.saveInstallInfo(equ);//安装信息 this.saveInstallInfo(equ);//安装信息
this.historyEquUpdateMaintenanceInfo(equ);//维保信息 this.historyEquUpdateMaintenanceInfo(equ);//维保信息
...@@ -2886,6 +2908,7 @@ public class DataDockServiceImpl { ...@@ -2886,6 +2908,7 @@ public class DataDockServiceImpl {
this.updateUseManagementStatus(useInfo); this.updateUseManagementStatus(useInfo);
this.saveNewEquipResumeInfo(useInfo); this.saveNewEquipResumeInfo(useInfo);
} }
this.saveEquInfoToEs(record, isCompleteXa);
} else if (!businessId.isEmpty()) { } else if (!businessId.isEmpty()) {
this.saveResumeInfo(equ); this.saveResumeInfo(equ);
equ.put("record", equ.get("resumeSeq")); equ.put("record", equ.get("resumeSeq"));
...@@ -2969,7 +2992,7 @@ public class DataDockServiceImpl { ...@@ -2969,7 +2992,7 @@ public class DataDockServiceImpl {
jgUseRegistrationServiceImpl.saveOrUpdate(jgUseRegistration); jgUseRegistrationServiceImpl.saveOrUpdate(jgUseRegistration);
// 更新设备es(jg-all)信息 // 更新设备es(jg-all)信息
this.updateEsData2(equ, otherInfo); // this.updateEsData2(equ, otherInfo);
// 更新登记证信息 // 更新登记证信息
this.updateRegistrationManagementInfo(equ, oldUseRegistrationCode); this.updateRegistrationManagementInfo(equ, oldUseRegistrationCode);
...@@ -3258,7 +3281,7 @@ public class DataDockServiceImpl { ...@@ -3258,7 +3281,7 @@ public class DataDockServiceImpl {
map.put("equCode", equCode); map.put("equCode", equCode);
// 更新es // 更新es
this.updateEsData2(map, otherInfo); // this.updateEsData2(map, otherInfo);
jgUseRegistrationServiceImpl.save(jgUseRegistration); jgUseRegistrationServiceImpl.save(jgUseRegistration);
jgRelationEquip.setEquipTransferId(jgUseRegistration.getSequenceNbr() + ""); jgRelationEquip.setEquipTransferId(jgUseRegistration.getSequenceNbr() + "");
jgRelationEquipMapper.insert(jgRelationEquip); jgRelationEquipMapper.insert(jgRelationEquip);
......
...@@ -30,6 +30,8 @@ import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto; ...@@ -30,6 +30,8 @@ import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.common.api.entity.*; import com.yeejoin.amos.boot.module.common.api.entity.*;
import com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum; import com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.common.biz.refresh.cm.RefreshCmService; import com.yeejoin.amos.boot.module.common.biz.refresh.cm.RefreshCmService;
import com.yeejoin.amos.boot.module.common.biz.service.impl.ESEquipmentInfoService;
import com.yeejoin.amos.boot.module.common.biz.service.impl.EquipmentCategoryService;
import com.yeejoin.amos.boot.module.common.biz.service.impl.EsSearchServiceImpl; import com.yeejoin.amos.boot.module.common.biz.service.impl.EsSearchServiceImpl;
import com.yeejoin.amos.boot.module.common.biz.utils.RefreshDataUtils; import com.yeejoin.amos.boot.module.common.biz.utils.RefreshDataUtils;
import com.yeejoin.amos.boot.module.jg.api.common.BizCommonConstant; import com.yeejoin.amos.boot.module.jg.api.common.BizCommonConstant;
...@@ -60,15 +62,21 @@ import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentEnum; ...@@ -60,15 +62,21 @@ import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.*; import com.yeejoin.amos.boot.module.ymt.api.mapper.*;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.queryparser.classic.QueryParser;
import org.elasticsearch.action.bulk.BulkItemResponse;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.core.CountRequest; import org.elasticsearch.client.core.CountRequest;
import org.elasticsearch.client.core.CountResponse; import org.elasticsearch.client.core.CountResponse;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHit;
...@@ -98,6 +106,7 @@ import java.util.concurrent.atomic.AtomicReference; ...@@ -98,6 +106,7 @@ import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
import java.util.stream.StreamSupport;
import static com.alibaba.fastjson.JSON.toJSONString; import static com.alibaba.fastjson.JSON.toJSONString;
import static com.yeejoin.amos.boot.module.jg.biz.service.impl.JgInstallationNoticeServiceImpl.CONSTRUCTION_TYPE; import static com.yeejoin.amos.boot.module.jg.biz.service.impl.JgInstallationNoticeServiceImpl.CONSTRUCTION_TYPE;
...@@ -219,6 +228,12 @@ public class DataHandlerServiceImpl { ...@@ -219,6 +228,12 @@ public class DataHandlerServiceImpl {
private final IdxBizJgInspectionDetectionInfoMapper inspectionDetectionInfoMapper; private final IdxBizJgInspectionDetectionInfoMapper inspectionDetectionInfoMapper;
private final ESEquipmentInfoService esEquipmentInfoService;
private final EquipmentCategoryService equipmentCategoryService;
/** /**
* 安装告知压力管道历史数据修复-详情中的设备列表修改为汇总表格式 * 安装告知压力管道历史数据修复-详情中的设备列表修改为汇总表格式
* *
...@@ -2948,4 +2963,91 @@ public class DataHandlerServiceImpl { ...@@ -2948,4 +2963,91 @@ public class DataHandlerServiceImpl {
esEquipmentInfos = esEquipmentInfos.stream().filter(e -> StringUtils.isNotEmpty(e.getSEQUENCE_NBR())).collect(Collectors.toList()); esEquipmentInfos = esEquipmentInfos.stream().filter(e -> StringUtils.isNotEmpty(e.getSEQUENCE_NBR())).collect(Collectors.toList());
return esEquipmentInfos; return esEquipmentInfos;
} }
@SneakyThrows
public boolean syncEquipShard(Integer shard, Integer slots, String batchNo) {
StopWatch watch = new StopWatch();
watch.start();
// 0.数据准备
// 查询数据库 批量
List<String> records = idxBizJgUseInfoMapper.selectRecordList(shard, slots);
List<List<String>> partitions = Lists.partition(records, 2000);
// 查询es-旧索引
List<String> existsOldEsEquipRecords = partitions.parallelStream().map(equipmentCategoryService::findSequenceNbrByIds).flatMap(List::stream).collect(Collectors.toList());
// 标记老索引es-缺少数据
List<String> oldEsMissingRecords = records.parallelStream().filter(r -> !existsOldEsEquipRecords.contains(r)).collect(Collectors.toList());
// 查询es-新索引
List<String> existsNewEsEquipRecords = partitions.parallelStream().map(esEquipmentInfoService::findSequenceNbrByIds).flatMap(List::stream).collect(Collectors.toList());
// 标记新索引es-缺少数据
List<String> newEsMissingRecords = records.parallelStream().filter(r -> !existsNewEsEquipRecords.contains(r)).collect(Collectors.toList());
// 1.分批次保存,数据补充至es
Set<String> allMissingRecords = Stream.concat(oldEsMissingRecords.stream(), newEsMissingRecords.stream()).collect(Collectors.toSet());
List<List<String>> savePartitions = Lists.partition(new ArrayList<>(allMissingRecords), 2000);
savePartitions.parallelStream().forEach(rs->{
List<Map<String, Object>> details = idxBizJgUseInfoMapper.queryDetailBatch(rs);
save2OldEquipEs(details, oldEsMissingRecords, batchNo);
save2NewEquipEs(rs, details, newEsMissingRecords, batchNo);
});
// 2.更新本切片数据的es的版本号,用来清除es的数据标记用
Map<String, Object> updateFields = MapUtil.of("version", batchNo);
partitions.parallelStream().forEach(batch->{
updateEsVersion(batch, updateFields, IDX_BIZ_VIEW_JG_ALL);
updateEsVersion(batch, updateFields, IDX_BIZ_EQUIPMENT_INFO);
});
watch.stop();
log.info("处理耗时:{}", watch.getTotalTimeSeconds());
return true;
}
private void updateEsVersion(List<String> batch, Map<String, Object> updateFields, String index) {
BulkRequest bulkRequest = new BulkRequest();
// 构建批量请求
batch.stream()
.map(id -> new UpdateRequest(index, id)
.doc(updateFields, XContentType.JSON))
.forEach(bulkRequest::add);
try {
BulkResponse response = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
// 更详细的错误日志记录
if (response.hasFailures()) {
Arrays.stream(response.getItems())
.filter(BulkItemResponse::isFailed)
.forEach(item -> log.error("Failed to update {}: {}",
item.getId(),
item.getFailureMessage()));
}
} catch (IOException e) {
log.error("批量更新版本号失败: batchSize={}, index={}", batch.size(), index, e);
throw new RuntimeException("ES批量更新失败", e);
}
}
private void save2NewEquipEs(List<String> rs, List<Map<String, Object>> details, List<String> waitSync2EquipmentInfoRecords, String batchNo) {
Map<String, Map<String, Object>> recordDetailMap = details.stream().collect(Collectors.toMap(e -> (String) e.get("SEQUENCE_NBR"), Function.identity(), (k1, k2) -> k2));
List<String> equipmentInfoSaveRecords = rs.stream().filter(waitSync2EquipmentInfoRecords::contains).collect(Collectors.toList());
List<ESEquipmentInfo> esEquipmentInfos = getEsEquipmentInfos(equipmentInfoSaveRecords, recordDetailMap);
esEquipmentInfos.forEach(e->e.setVersion(batchNo));
esBulkService.bulkUpsert(IDX_BIZ_EQUIPMENT_INFO, esEquipmentInfos.stream().map(e -> new EsEntity<>(e.getSEQUENCE_NBR(), e)).collect(Collectors.toList()));
}
private void save2OldEquipEs(List<Map<String, Object>> details, List<String> waitSync2JgAllRecords, String batchNo) {
List<Map<String, Object>> jgAllSaves = details.stream().filter(e-> waitSync2JgAllRecords.contains((String) e.get("SEQUENCE_NBR"))).collect(Collectors.toList());
List<ESEquipmentCategoryDto> esEquipmentInfos = jgAllSaves.parallelStream().map(data -> {
ESEquipmentCategoryDto esEquipmentInfo = null;
try {
esEquipmentInfo = new ESEquipmentCategoryDto();
StatisticsDataUpdateService.formatUseDate(data);
BeanUtil.copyProperties(data, esEquipmentInfo, true);
esEquipmentInfo.setVersion(batchNo);
} catch (Exception e) {
log.error("批次{}设备刷数据处理失败", record, e);
}
return esEquipmentInfo;
}).collect(Collectors.toList());
if(!esEquipmentInfos.isEmpty()){
esBulkService.bulkUpsert(IDX_BIZ_VIEW_JG_ALL, esEquipmentInfos.stream().map(e -> new EsEntity<>(e.getSEQUENCE_NBR(), e)).collect(Collectors.toList()));
}
}
} }
package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import io.seata.spring.annotation.GlobalTransactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
@Service
public class ElevatorDataTransactionService {
private final DataDockServiceImpl dataDockService;
@Autowired
public ElevatorDataTransactionService(@Lazy DataDockServiceImpl dataDockService) {
this.dataDockService = dataDockService;
}
@Transactional(rollbackFor = Exception.class)
public Object saveSingleElevatorData(Map<String, Object> equ) {
return dataDockService.saveElevatorDataInTransaction(equ, "jg_his_xa", null);
}
}
...@@ -34,7 +34,6 @@ import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto; ...@@ -34,7 +34,6 @@ import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.common.api.entity.ESEquipmentInfo; import com.yeejoin.amos.boot.module.common.api.entity.ESEquipmentInfo;
import com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum; import com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.common.api.mapper.CustomBaseMapper; import com.yeejoin.amos.boot.module.common.api.mapper.CustomBaseMapper;
import com.yeejoin.amos.boot.module.common.biz.refresh.DataRefreshEvent;
import com.yeejoin.amos.boot.module.common.biz.service.impl.EquipmentCategoryService; import com.yeejoin.amos.boot.module.common.biz.service.impl.EquipmentCategoryService;
import com.yeejoin.amos.boot.module.jg.api.common.DataDockTemplateVersionUtils; import com.yeejoin.amos.boot.module.jg.api.common.DataDockTemplateVersionUtils;
import com.yeejoin.amos.boot.module.jg.api.dto.*; import com.yeejoin.amos.boot.module.jg.api.dto.*;
...@@ -56,7 +55,6 @@ import com.yeejoin.amos.boot.module.ymt.api.dto.TzsUserInfoDto; ...@@ -56,7 +55,6 @@ import com.yeejoin.amos.boot.module.ymt.api.dto.TzsUserInfoDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.*; import com.yeejoin.amos.boot.module.ymt.api.entity.*;
import com.yeejoin.amos.boot.module.ymt.api.enums.*; import com.yeejoin.amos.boot.module.ymt.api.enums.*;
import com.yeejoin.amos.boot.module.ymt.api.mapper.*; import com.yeejoin.amos.boot.module.ymt.api.mapper.*;
import com.yeejoin.amos.component.feign.config.InnerInvokException;
import com.yeejoin.amos.component.feign.model.FeignClientResult; import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.component.feign.utils.FeignUtil; import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.systemctl.Systemctl; import com.yeejoin.amos.feign.systemctl.Systemctl;
...@@ -88,8 +86,6 @@ import org.springframework.http.HttpStatus; ...@@ -88,8 +86,6 @@ import org.springframework.http.HttpStatus;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.foundation.context.RequestContext; import org.typroject.tyboot.core.foundation.context.RequestContext;
...@@ -122,7 +118,8 @@ import static com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum.SPE ...@@ -122,7 +118,8 @@ import static com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum.SPE
import static com.yeejoin.amos.boot.module.jg.api.enums.CertificateStatusEnum.YIDENGJI; import static com.yeejoin.amos.boot.module.jg.api.enums.CertificateStatusEnum.YIDENGJI;
import static com.yeejoin.amos.boot.module.jg.api.enums.VehicleApanageEnum.XIAN_YANG; import static com.yeejoin.amos.boot.module.jg.api.enums.VehicleApanageEnum.XIAN_YANG;
import static com.yeejoin.amos.boot.module.jg.api.enums.VehicleApanageEnum.XI_XIAN; import static com.yeejoin.amos.boot.module.jg.api.enums.VehicleApanageEnum.XI_XIAN;
import static com.yeejoin.amos.boot.module.jg.biz.service.impl.DataHandlerServiceImpl.*; import static com.yeejoin.amos.boot.module.jg.biz.service.impl.DataHandlerServiceImpl.IDX_BIZ_EQUIPMENT_INFO;
import static com.yeejoin.amos.boot.module.jg.biz.service.impl.DataHandlerServiceImpl.IDX_BIZ_VIEW_JG_ALL;
/** /**
...@@ -818,7 +815,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -818,7 +815,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
if (inspectionDetectionInfo.getNextInspectDate() != null) { if (inspectionDetectionInfo.getNextInspectDate() != null) {
esEquipmentDto.setNEXT_INSPECT_DATE(inspectionDetectionInfo.getNextInspectDate().getTime()); esEquipmentDto.setNEXT_INSPECT_DATE(inspectionDetectionInfo.getNextInspectDate().getTime());
} }
esEquipmentDto.setREC_DATE(System.currentTimeMillis()); esEquipmentDto.setCREATE_DATE(date.getTime());
esEquipmentDto.setREC_DATE(date.getTime());
esEquipmentDto.setSEQUENCE_NBR(record); esEquipmentDto.setSEQUENCE_NBR(record);
esEquipmentDto.setIS_INTO_MANAGEMENT(dataSource.contains("jg_his_black") && managedCategories.contains(equipmentInfoForm.get("EQU_CATEGORY"))); esEquipmentDto.setIS_INTO_MANAGEMENT(dataSource.contains("jg_his_black") && managedCategories.contains(equipmentInfoForm.get("EQU_CATEGORY")));
esEquipmentDto.setEQU_CATEGORY_CODE(registerInfo.getEquCategory()); esEquipmentDto.setEQU_CATEGORY_CODE(registerInfo.getEquCategory());
...@@ -826,7 +824,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -826,7 +824,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
esEquipmentDto.setEQU_LIST_CODE(registerInfo.getEquList()); esEquipmentDto.setEQU_LIST_CODE(registerInfo.getEquList());
esEquipmentDto.setEQU_LIST(equListName); esEquipmentDto.setEQU_LIST(equListName);
esEquipmentDto.setEQU_DEFINE_CODE(registerInfo.getEquDefine()); esEquipmentDto.setEQU_DEFINE_CODE(registerInfo.getEquDefine());
esEquipmentDto.setEQU_DEFINE(equListName); esEquipmentDto.setEQU_DEFINE(equDefineName);
esEquipmentDto.setSTATUS("已认领"); esEquipmentDto.setSTATUS("已认领");
esEquipmentDto.setUSC_UNIT_CREDIT_CODE(projectContraption.getUscUnitCreditCode()); esEquipmentDto.setUSC_UNIT_CREDIT_CODE(projectContraption.getUscUnitCreditCode());
esEquipmentDto.setUSC_UNIT_NAME(projectContraption.getUscUnitName()); esEquipmentDto.setUSC_UNIT_NAME(projectContraption.getUscUnitName());
...@@ -835,9 +833,6 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -835,9 +833,6 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
esEquipmentDto.setPROJECT_CONTRAPTION(projectContraption.getProjectContraption()); esEquipmentDto.setPROJECT_CONTRAPTION(projectContraption.getProjectContraption());
esEquipmentDto.setPRODUCT_NAME(pipelineInfo.getPipeName()); esEquipmentDto.setPRODUCT_NAME(pipelineInfo.getPipeName());
esEquipmentDto.setProjectContraptionId(String.valueOf(sequenceNbr)); esEquipmentDto.setProjectContraptionId(String.valueOf(sequenceNbr));
if (inspectionDetectionInfo.getNextInspectDate() != null) {
esEquipmentDto.setNEXT_INSPECT_DATE(inspectionDetectionInfo.getNextInspectDate().getTime());
}
esEquipmentCategoryList.add(esEquipmentDto); esEquipmentCategoryList.add(esEquipmentDto);
} }
idxBizJgUseInfoService.saveOrUpdateBatch(useInfoList); idxBizJgUseInfoService.saveOrUpdateBatch(useInfoList);
...@@ -849,13 +844,14 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -849,13 +844,14 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
iIdxBizJgSupervisionInfoService.saveOrUpdateBatch(supervisionInfoList); iIdxBizJgSupervisionInfoService.saveOrUpdateBatch(supervisionInfoList);
iIdxBizJgInspectionDetectionInfoService.saveOrUpdateBatch(inspectionDetectionInfoList); iIdxBizJgInspectionDetectionInfoService.saveOrUpdateBatch(inspectionDetectionInfoList);
iIdxBizJgTechParamsPipelineService.saveOrUpdateBatch(paramsPipelineList); iIdxBizJgTechParamsPipelineService.saveOrUpdateBatch(paramsPipelineList);
esEquipmentCategory.saveAll(esEquipmentCategoryList);
// 更新管道长度 // 更新管道长度
updatePipelineLength(projectContraption, paramsPipelineList); updatePipelineLength(projectContraption, paramsPipelineList);
if(OPERATESAVE.equals(operateType)){ if(OPERATESAVE.equals(operateType)){
// 记录设备创建履历 // 记录设备创建履历
this.createResumePipeline(sequenceNbr, String.format(pipelineRoutePath, sequenceNbr + ""), company); this.createResumePipeline(sequenceNbr, String.format(pipelineRoutePath, sequenceNbr + ""), company);
} }
// 最后更新es
esEquipmentCategory.saveAll(esEquipmentCategoryList);
return sequenceNbr; return sequenceNbr;
} }
...@@ -4511,8 +4507,9 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -4511,8 +4507,9 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
IdxBizJgUseInfo useInfo = new IdxBizJgUseInfo(); IdxBizJgUseInfo useInfo = new IdxBizJgUseInfo();
BeanUtils.copyProperties(data, useInfo); BeanUtils.copyProperties(data, useInfo);
useInfo.setRecord(record); useInfo.setRecord(record);
useInfo.setRecDate(new Date()); Date now = new Date();
useInfo.setCreateDate(new Date()); useInfo.setRecDate(now);
useInfo.setCreateDate(now);
String source = equipInfoDto.getDataSource(); String source = equipInfoDto.getDataSource();
useInfo.setDataSource("his".equals(source) ? "jg_his_pl" : "black".equals(source) ? "jg_his_black_pl" : "jg_pl");// 区分历史设备和新增设备 useInfo.setDataSource("his".equals(source) ? "jg_his_pl" : "black".equals(source) ? "jg_his_black_pl" : "jg_pl");// 区分历史设备和新增设备
useInfo.setIsIntoManagement("his".equals(equipInfoDto.getDataSource()));// 历史气瓶导入为已纳管设备 useInfo.setIsIntoManagement("his".equals(equipInfoDto.getDataSource()));// 历史气瓶导入为已纳管设备
...@@ -4539,7 +4536,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -4539,7 +4536,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
IdxBizJgDesignInfo designInfo = new IdxBizJgDesignInfo(); IdxBizJgDesignInfo designInfo = new IdxBizJgDesignInfo();
BeanUtils.copyProperties(data, designInfo); BeanUtils.copyProperties(data, designInfo);
designInfo.setRecord(record); designInfo.setRecord(record);
designInfo.setRecDate(new Date()); designInfo.setRecDate(now);
if (data.getDesignDate() != null) { if (data.getDesignDate() != null) {
designInfo.setDesignDate(DateUtil.parse(data.getDesignDate(), "yyyy-MM-dd")); designInfo.setDesignDate(DateUtil.parse(data.getDesignDate(), "yyyy-MM-dd"));
} }
...@@ -4553,7 +4550,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -4553,7 +4550,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
IdxBizJgFactoryInfo factoryInfo = new IdxBizJgFactoryInfo(); IdxBizJgFactoryInfo factoryInfo = new IdxBizJgFactoryInfo();
BeanUtils.copyProperties(data, factoryInfo); BeanUtils.copyProperties(data, factoryInfo);
factoryInfo.setRecord(record); factoryInfo.setRecord(record);
factoryInfo.setRecDate(new Date()); factoryInfo.setRecDate(now);
factoryInfo.setProductQualityYieldProve(productQualityYieldProve); factoryInfo.setProductQualityYieldProve(productQualityYieldProve);
factoryInfo.setFactoryStandard(factoryStandard); factoryInfo.setFactoryStandard(factoryStandard);
factoryInfo.setInsUseMaintainExplain(insUseMaintainExplain); factoryInfo.setInsUseMaintainExplain(insUseMaintainExplain);
...@@ -4572,7 +4569,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -4572,7 +4569,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
BeanUtils.copyProperties(data, registerInfo); BeanUtils.copyProperties(data, registerInfo);
registerInfo.setEquCode("2".equals(data.getEquCodeType()) ? "" : registerInfo.getEquCode()); registerInfo.setEquCode("2".equals(data.getEquCodeType()) ? "" : registerInfo.getEquCode());
registerInfo.setRecord(record); registerInfo.setRecord(record);
registerInfo.setRecDate(new Date()); registerInfo.setRecDate(now);
registerInfo.setEquCategory(equipInfoDto.getEquCategoryCode()); registerInfo.setEquCategory(equipInfoDto.getEquCategoryCode());
registerInfo.setEquDefine(equipInfoDto.getEquDefineCode()); registerInfo.setEquDefine(equipInfoDto.getEquDefineCode());
registerInfo.setEquList(equipInfoDto.getEquListCode()); registerInfo.setEquList(equipInfoDto.getEquListCode());
...@@ -4593,7 +4590,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -4593,7 +4590,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
BeanUtils.copyProperties(data, inspectionDetectionInfo); BeanUtils.copyProperties(data, inspectionDetectionInfo);
inspectionDetectionInfo.setInspectOrgCode(data.getInspectOrgCode()); inspectionDetectionInfo.setInspectOrgCode(data.getInspectOrgCode());
inspectionDetectionInfo.setRecord(record); inspectionDetectionInfo.setRecord(record);
inspectionDetectionInfo.setRecDate(new Date()); inspectionDetectionInfo.setRecDate(now);
inspectionDetectionInfo.setInspectType("ZZJDJY"); inspectionDetectionInfo.setInspectType("ZZJDJY");
inspectionDetectionInfo.setInspectConclusion("6040");// 默认合格 inspectionDetectionInfo.setInspectConclusion("6040");// 默认合格
Optional.ofNullable(data.getInspectDate()) Optional.ofNullable(data.getInspectDate())
...@@ -4622,7 +4619,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -4622,7 +4619,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
IdxBizJgOtherInfo otherInfo = new IdxBizJgOtherInfo(); IdxBizJgOtherInfo otherInfo = new IdxBizJgOtherInfo();
BeanUtils.copyProperties(data, otherInfo); BeanUtils.copyProperties(data, otherInfo);
otherInfo.setRecord(record); otherInfo.setRecord(record);
otherInfo.setRecDate(new Date()); otherInfo.setRecDate(now);
otherInfo.setCylinderStampAttachment(cylinderStampAttachment); otherInfo.setCylinderStampAttachment(cylinderStampAttachment);
if ("his".equals(equipInfoDto.getDataSource())) { if ("his".equals(equipInfoDto.getDataSource())) {
otherInfo.setSupervisoryCode(supervisoryCodeIterator.next()); otherInfo.setSupervisoryCode(supervisoryCodeIterator.next());
...@@ -4637,7 +4634,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -4637,7 +4634,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
IdxBizJgTechParamsVessel paramsVessel = new IdxBizJgTechParamsVessel(); IdxBizJgTechParamsVessel paramsVessel = new IdxBizJgTechParamsVessel();
BeanUtils.copyProperties(data, paramsVessel); BeanUtils.copyProperties(data, paramsVessel);
paramsVessel.setRecord(record); paramsVessel.setRecord(record);
paramsVessel.setRecDate(new Date()); paramsVessel.setRecDate(now);
paramsVessel.setChargingMedium((String) fillingMediumMap.get(data.getChargingMedium())); paramsVessel.setChargingMedium((String) fillingMediumMap.get(data.getChargingMedium()));
paramsVesselList.add(paramsVessel); paramsVesselList.add(paramsVessel);
...@@ -4646,8 +4643,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -4646,8 +4643,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
if (inspectionDetectionInfo.getNextInspectDate() != null) { if (inspectionDetectionInfo.getNextInspectDate() != null) {
esEquipmentDto.setNEXT_INSPECT_DATE(inspectionDetectionInfo.getNextInspectDate().getTime()); esEquipmentDto.setNEXT_INSPECT_DATE(inspectionDetectionInfo.getNextInspectDate().getTime());
} }
esEquipmentDto.setCREATE_DATE(System.currentTimeMillis()); esEquipmentDto.setCREATE_DATE(now.getTime());
esEquipmentDto.setREC_DATE(System.currentTimeMillis()); esEquipmentDto.setREC_DATE(now.getTime());
esEquipmentDto.setSEQUENCE_NBR(record); esEquipmentDto.setSEQUENCE_NBR(record);
esEquipmentDto.setFACTORY_NUM(factoryInfo.getFactoryNum()); esEquipmentDto.setFACTORY_NUM(factoryInfo.getFactoryNum());
esEquipmentDto.setUSE_INNER_CODE(useInfo.getUseInnerCode()); esEquipmentDto.setUSE_INNER_CODE(useInfo.getUseInnerCode());
......
...@@ -884,7 +884,7 @@ public class DPSubServiceImpl { ...@@ -884,7 +884,7 @@ public class DPSubServiceImpl {
} }
} }
Object body = apiObj.get("body"); Object body = apiObj.get("body");
ResponseEntity<String> responseEntity = null; ResponseEntity<String> sresponseEntity = null;
//如果url以/开头,则调用本服务内接口 //如果url以/开头,则调用本服务内接口
if (url != null && url.trim().startsWith("/")) { if (url != null && url.trim().startsWith("/")) {
url = "http://" + GATEWAY_SERVER_NAME + url; url = "http://" + GATEWAY_SERVER_NAME + url;
......
...@@ -58,4 +58,6 @@ public interface IdxBizJgUseInfoMapper extends CustomBaseMapper<IdxBizJgUseInfo> ...@@ -58,4 +58,6 @@ public interface IdxBizJgUseInfoMapper extends CustomBaseMapper<IdxBizJgUseInfo>
List<String> selectEquips(@Param("equListCode") String equListCode, @Param("equCategoryCode") String equCategoryCode, @Param("orgCode") String orgCode); List<String> selectEquips(@Param("equListCode") String equListCode, @Param("equCategoryCode") String equCategoryCode, @Param("orgCode") String orgCode);
List<String> selectUseInfoOfOneVersionWithParams(@Param("version") Integer version,@Param("params") Map<String, Object> params); List<String> selectUseInfoOfOneVersionWithParams(@Param("version") Integer version,@Param("params") Map<String, Object> params);
List<String> selectRecordList(@Param("shard") Integer shard, @Param("slots") Integer slots);
} }
...@@ -74,48 +74,49 @@ ...@@ -74,48 +74,49 @@
WHERE ibjoi."RECORD" = #{record} WHERE ibjoi."RECORD" = #{record}
</select> </select>
<select id="selectDataById" resultType="java.util.Map"> <select id="selectDataById" resultType="java.util.Map">
SELECT SEQUENCE_NBR, SELECT "SEQUENCE_NBR",
REC_DATE, "REC_DATE",
CREATE_DATE, "CREATE_DATE",
DATA_QUALITY_SCORE, "DATA_QUALITY_SCORE",
ORG_BRANCH_NAME, "ORG_BRANCH_NAME",
ORG_BRANCH_CODE, "ORG_BRANCH_CODE",
USE_UNIT_NAME, "USE_UNIT_NAME",
USE_UNIT_CREDIT_CODE, "USE_UNIT_CREDIT_CODE",
EQU_LIST_CODE, "EQU_LIST_CODE",
EQU_LIST, "EQU_LIST",
EQU_CATEGORY, "EQU_CATEGORY",
EQU_CATEGORY_CODE, "EQU_CATEGORY_CODE",
USE_ORG_CODE, "USE_ORG_CODE",
CODE96333, "CODE96333",
EQU_CODE, "EQU_CODE",
SUPERVISORY_CODE, "SUPERVISORY_CODE",
USE_PLACE, "USE_PLACE",
ADDRESS, "ADDRESS",
EQU_STATE, "EQU_STATE",
STATUS, "STATUS",
USE_INNER_CODE, "USE_INNER_CODE",
FACTORY_NUM, "FACTORY_NUM",
PRODUCE_UNIT_NAME, "PRODUCE_UNIT_NAME",
INSPECT_REPORT, "INSPECT_REPORT",
NEXT_INSPECT_DATE, "NEXT_INSPECT_DATE",
CONSTRUCTION_TYPE, "CONSTRUCTION_TYPE",
USC_UNIT_CREDIT_CODE, "USC_UNIT_CREDIT_CODE",
USC_UNIT_NAME, "USC_UNIT_NAME",
EQU_DEFINE, "EQU_DEFINE",
EQU_DEFINE_CODE, "EQU_DEFINE_CODE",
PRODUCT_NAME, "PRODUCT_NAME",
BRAND_NAME, "BRAND_NAME",
EQU_TYPE, "EQU_TYPE",
DATA_SOURCE, "DATA_SOURCE",
IS_INTO_MANAGEMENT, "IS_INTO_MANAGEMENT",
WHETHER_VEHICLE_CYLINDER, "WHETHER_VEHICLE_CYLINDER",
WHETHER_SKID_MOUNTED_PRESSURE_VESSEL, "WHETHER_SKID_MOUNTED_PRESSURE_VESSEL",
DATE_FORMAT(PRODUCE_DATE, '%Y-%m-%d %H:%i:%s') as PRODUCE_DATE, DATE_FORMAT("PRODUCE_DATE", '%Y-%m-%d %H:%i:%s') as PRODUCE_DATE,
PROJECT_CONTRAPTION, "PROJECT_CONTRAPTION",
TAG1 TAG1,
"problemStatus"
from idx_biz_view_jg_all from idx_biz_view_jg_all
WHERE SEQUENCE_NBR = #{id} WHERE "SEQUENCE_NBR" = #{id}
</select> </select>
<select id="queryInitCode" resultType="com.yeejoin.amos.boot.module.ymt.api.entity.CategoryOtherInfo"> <select id="queryInitCode" resultType="com.yeejoin.amos.boot.module.ymt.api.entity.CategoryOtherInfo">
SELECT CODE96333 code SELECT CODE96333 code
......
...@@ -137,53 +137,56 @@ ...@@ -137,53 +137,56 @@
ibjui."RECORD" AS "SEQUENCE_NBR", ibjui."RECORD" AS "SEQUENCE_NBR",
ibjui."PROJECT_CONTRAPTION", ibjui."PROJECT_CONTRAPTION",
ibjui."PROJECT_CONTRAPTION_ID", ibjui."PROJECT_CONTRAPTION_ID",
ibjsi."ORG_BRANCH_NAME",
ibjsi."ORG_BRANCH_CODE",
ibjui."REC_DATE", ibjui."REC_DATE",
ibjui."USE_UNIT_NAME", ibjui."USE_UNIT_NAME",
ibjui."USE_UNIT_CREDIT_CODE", ibjui."USE_UNIT_CREDIT_CODE",
ibjri."EQU_LIST" AS "EQU_LIST_CODE",
ibjri."EQU_DEFINE" AS "EQU_DEFINE_CODE",
ibjri."PRODUCT_NAME",
ibjri."BRAND_NAME",
ibjri."EQU_TYPE",
ibjri."EQU_CATEGORY" AS "EQU_CATEGORY_CODE",
tec2.NAME AS "EQU_DEFINE",
tec1.NAME AS "EQU_LIST",
tec.NAME AS "EQU_CATEGORY",
ibjri."USE_ORG_CODE",
ibjui."USE_INNER_CODE", ibjui."USE_INNER_CODE",
ibjui."DATA_SOURCE", ibjui."DATA_SOURCE",
ibjoi."CODE96333", ibjui."CREATE_DATE" ,
ibjui."SAFETY_MANAGER" ,
ibjui."PHONE",
ibjui."USE_DATE",
ibjui."USE_PLACE" as USE_SITE_CODE,
ibjui."DATA_QUALITY_SCORE",
ibjui."IS_NOT_ES",
concat_ws ( '/', ibjui."PROVINCE_NAME", ibjui."CITY_NAME", ibjui."COUNTY_NAME", ibjui."STREET_NAME" ) AS "USE_PLACE",
concat_ws ( '#', ibjui."PROVINCE", ibjui."CITY", ibjui."COUNTY", ibjui."FACTORY_USE_SITE_STREET" ) AS "USE_PLACE_CODE",
ibjui."ADDRESS",
ibjui."EQU_STATE",
ibjui."IS_INTO_MANAGEMENT",
ibjri."EQU_CODE", ibjri."EQU_CODE",
ibjoi."SUPERVISORY_CODE",
ibjri."WHETHER_VEHICLE_CYLINDER", ibjri."WHETHER_VEHICLE_CYLINDER",
ibjri."WHETHER_SKID_MOUNTED_PRESSURE_VESSEL", ibjri."WHETHER_SKID_MOUNTED_PRESSURE_VESSEL",
ibjri."CYLINDER_CATEGORY", ibjri."CYLINDER_CATEGORY",
ibjri."WHETHER_SPHERICAL_TANK", ibjri."WHETHER_SPHERICAL_TANK",
ibjri."CAR_NUMBER", ibjri."CAR_NUMBER",
ibjri."EQU_PRICE", ibjri."EQU_PRICE",
concat_ws ( '/', ibjui."PROVINCE_NAME", ibjui."CITY_NAME", ibjui."COUNTY_NAME", ibjui."STREET_NAME" ) AS "USE_PLACE", ibjri."EQU_LIST" AS "EQU_LIST_CODE",
concat_ws ( '#', ibjui."PROVINCE", ibjui."CITY", ibjui."COUNTY", ibjui."FACTORY_USE_SITE_STREET" ) AS "USE_PLACE_CODE", ibjri."EQU_DEFINE" AS "EQU_DEFINE_CODE",
ibjui."ADDRESS", ibjri."PRODUCT_NAME",
ibjui."EQU_STATE", ibjri."BRAND_NAME",
ibjui."IS_INTO_MANAGEMENT", ibjri."EQU_TYPE",
ibjoi."CLAIM_STATUS" AS "STATUS", ibjri."EQU_CATEGORY" AS "EQU_CATEGORY_CODE",
ibjoi."STATUS" AS problemStatus, ibjri."TAG1" AS tag1,
ibjri."USE_ORG_CODE",
ibjsi."ORG_BRANCH_NAME",
ibjsi."ORG_BRANCH_CODE",
ibjfi."FACTORY_NUM", ibjfi."FACTORY_NUM",
ibjfi."PRODUCE_UNIT_NAME", ibjfi."PRODUCE_UNIT_NAME",
ibjfi."PRODUCE_UNIT_CREDIT_CODE", ibjfi."PRODUCE_UNIT_CREDIT_CODE",
ibjfi."PRODUCE_DATE", ibjfi."PRODUCE_DATE",
ibjui."CREATE_DATE" , ibjoi."CODE96333",
ibjui."SAFETY_MANAGER" , ibjoi."SUPERVISORY_CODE",
ibjui."PHONE", ibjoi."CLAIM_STATUS" AS "STATUS",
ibjui."USE_DATE", ibjoi."STATUS" AS problemStatus,
ibjui."USE_PLACE" as USE_SITE_CODE,
ibjui."DATA_QUALITY_SCORE",
ibjoi."INFORMATION_SITUATION", ibjoi."INFORMATION_SITUATION",
ibjoi."EDIT_STATUS",
di."DESIGN_UNIT_CREDIT_CODE", di."DESIGN_UNIT_CREDIT_CODE",
di."DESIGN_UNIT_NAME", di."DESIGN_UNIT_NAME",
di."DESIGN_DATE", di."DESIGN_DATE",
tec2.NAME AS "EQU_DEFINE",
tec1.NAME AS "EQU_LIST",
tec.NAME AS "EQU_CATEGORY",
construction_info."USC_UNIT_CREDIT_CODE", construction_info."USC_UNIT_CREDIT_CODE",
construction_info."USC_UNIT_NAME", construction_info."USC_UNIT_NAME",
construction_info."CONSTRUCTION_TYPE", construction_info."CONSTRUCTION_TYPE",
...@@ -324,5 +327,13 @@ ...@@ -324,5 +327,13 @@
AND r."EQU_CATEGORY" = #{equCategoryCode} AND r."EQU_CATEGORY" = #{equCategoryCode}
</if> </if>
</select> </select>
<select id="selectRecordList" resultType="java.lang.String">
SELECT
"RECORD"
FROM
idx_biz_jg_use_info
WHERE
ABS(MOD(hashtext("RECORD"), #{slots})) = #{shard}
</select>
</mapper> </mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment