Commit 3a790b61 authored by suhuiguang's avatar suhuiguang

Merge branch 'develop_tzs_bugfix' of http://36.40.66.175:5000/moa/amos-boot-biz…

Merge branch 'develop_tzs_bugfix' of http://36.40.66.175:5000/moa/amos-boot-biz into develop_tzs_bugfix
parents 7caac0b7 dae2ba70
...@@ -202,4 +202,20 @@ public class JgChangeRegistrationUnitController extends BaseController { ...@@ -202,4 +202,20 @@ public class JgChangeRegistrationUnitController extends BaseController {
jgChangeRegistrationUnitServiceImpl.exportUseRegistrationCertificate(sequenceNbr, response, printType); jgChangeRegistrationUnitServiceImpl.exportUseRegistrationCertificate(sequenceNbr, response, printType);
} }
/**
* bug24304脏数据处理(单位变更登记一勾选过多,部分变更设备失败,现在将变更失败的设备变更过去)
*
* @param applyNos 单位变更的申请编号
* @return result
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/bug24304")
@ApiOperation(httpMethod = "GET", value = "bug24304脏数据处理(单位变更登记一勾选过多,部分变更设备失败,现在将变更失败的设备变更过去)",
notes = "bug24304脏数据处理(单位变更登记一勾选过多,部分变更设备失败,现在将变更失败的设备变更过去")
public ResponseModel<String> bug24304(@RequestParam(value = "applyNos")
@ApiParam(value = "单位变更的申请编号,多个用逗号分隔") String applyNos) {
jgChangeRegistrationUnitServiceImpl.bug24304Handle(applyNos);
return ResponseHelper.buildResponse("申请单号:" + applyNos + "数据修改成功");
}
} }
...@@ -24,8 +24,8 @@ import com.yeejoin.amos.boot.module.jg.api.service.IJgChangeRegistrationUnitServ ...@@ -24,8 +24,8 @@ import com.yeejoin.amos.boot.module.jg.api.service.IJgChangeRegistrationUnitServ
import com.yeejoin.amos.boot.module.jg.api.vo.SortVo; import com.yeejoin.amos.boot.module.jg.api.vo.SortVo;
import com.yeejoin.amos.boot.module.jg.biz.context.EquipUsedCheckStrategyContext; import com.yeejoin.amos.boot.module.jg.biz.context.EquipUsedCheckStrategyContext;
import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient; import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.service.ICommonService;
import com.yeejoin.amos.boot.module.jg.biz.feign.WorkFlowFeignService; import com.yeejoin.amos.boot.module.jg.biz.feign.WorkFlowFeignService;
import com.yeejoin.amos.boot.module.jg.biz.service.ICommonService;
import com.yeejoin.amos.boot.module.jg.biz.service.ICompensateFlowDataOfRedis; import com.yeejoin.amos.boot.module.jg.biz.service.ICompensateFlowDataOfRedis;
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;
...@@ -1352,4 +1352,107 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg ...@@ -1352,4 +1352,107 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
commonServiceImpl.saveExecuteFlowData2Redis(jgChangeRegistrationUnit.getInstanceId(), this.buildInstanceRuntimeData(jgChangeRegistrationUnit)); commonServiceImpl.saveExecuteFlowData2Redis(jgChangeRegistrationUnit.getInstanceId(), this.buildInstanceRuntimeData(jgChangeRegistrationUnit));
} }
/**
* bug24304脏数据处理(单位变更登记一勾选过多,部分变更设备失败,现在将变更失败的设备变更过去)
*/
public void bug24304Handle(String applyNos) {
/* // 查询单位变更登记的历史数据
List<JgRegistrationHistory> historyList = jgRegistrationHistoryMapper.selectList(new LambdaQueryWrapper<JgRegistrationHistory>()
.eq(JgRegistrationHistory::getRegistrationClass, "单位变更登记"));
// 过滤出异常数据
List<JgRegistrationHistory> targetHistory = historyList
.stream()
.filter(item -> {
try {
return JSONArray.parseArray(item.getChangeData()).size() > 10;
} catch (Exception ex) {
return false;
}
})
.collect(Collectors.toList()); */
List<String> applyNoList = Arrays.asList(applyNos.split(","));
applyNoList.forEach(applyNo ->{
// 查询单位变更登记的历史数据
JgRegistrationHistory history = jgRegistrationHistoryMapper.selectOne(new LambdaQueryWrapper<JgRegistrationHistory>()
.eq(JgRegistrationHistory::getRegistrationClass, "单位变更登记")
.eq(JgRegistrationHistory::getCurrentDocumentId,applyNo));
// 查询变更数据
JgChangeRegistrationUnit registrationUnit = this.baseMapper.selectOne(new LambdaQueryWrapper<JgChangeRegistrationUnit>()
.eq(JgChangeRegistrationUnit::getApplyNo, history.getCurrentDocumentId()));
// 查询已经入库的设备id
List<String> inEqTableEquId = jgChangeRegistrationUnitEqMapper.selectList(new LambdaQueryWrapper<JgChangeRegistrationUnitEq>()
.eq(JgChangeRegistrationUnitEq::getUnitChangeRegistrationId, registrationUnit.getSequenceNbr()))
.stream()
.map(JgChangeRegistrationUnitEq::getEquId)
.collect(Collectors.toList());
// 查询单子下的所有使用登记证的seq
List<Long> certificateSeq = JSONArray.parseArray(history.getChangeData()).stream().map(item -> Long.valueOf((String) JSONObject.parseObject(JSONObject.toJSONString(item)).get("sequenceNbr"))).collect(Collectors.toList());
// 使用登记证下的所有设备
List<JSONObject> equJSONList = registrationManageService.queryEquByCertificateSeqList(certificateSeq);
// 过滤出未入库的设备
List<JSONObject> toBeProcessedEq = equJSONList.stream().filter(item -> !inEqTableEquId.contains(item.getString("SEQUENCE_NBR"))).collect(Collectors.toList());
// 将未入库设备 保存到eq表
this.bug24304HandleSaveLackEqu(toBeProcessedEq, registrationUnit);
// 将未入库设备 更新es和otherInfo表的使用单位信息
this.bug24304HandleUpdateLackEquForES(toBeProcessedEq, registrationUnit);
this.bug24304HandleUpdateLackEquForUseInfo(toBeProcessedEq, registrationUnit);
});
// for (JgRegistrationHistory history : targetHistory) {
// }
}
/**
* 保存漏掉的设备
*/
public void bug24304HandleSaveLackEqu(List<JSONObject> deviceList, JgChangeRegistrationUnit registrationUnit) {
List<JgChangeRegistrationUnitEq> jgRelationEquipList = new ArrayList<>();
deviceList.forEach(device -> {
JgChangeRegistrationUnitEq unitEq = new JgChangeRegistrationUnitEq();
if (device.containsKey("USE_ORG_CODE")) {
unitEq.setRegistrationCertificate(device.getString("USE_ORG_CODE"));//使用登记证主键
}
if (device.containsKey("SEQUENCE_NBR")) {
unitEq.setEquId(device.getString("SEQUENCE_NBR"));//设备主键
}
unitEq.setUnitChangeRegistrationId(registrationUnit.getSequenceNbr().toString());//单位变更业务主键
unitEq.setDeviceInfo(JSONObject.toJSONString(device));//设备信息json
jgRelationEquipList.add(unitEq);
});
registrationUnitEqService.saveBatch(jgRelationEquipList);
}
/**
* 修改es漏掉的设备
*/
public void bug24304HandleUpdateLackEquForES(List<JSONObject> deviceList, JgChangeRegistrationUnit registration) {
deviceList.forEach(device -> {
Map<String, Map<String, Object>> resultMap = new HashMap<>();
Map<String, Object> map1 = new HashMap<>();
String[] companyCode = registration.getNewUseUnitCreditCode().split("_");
map1.put("USE_UNIT_CREDIT_CODE", companyCode.length > 1 ? companyCode[1] : registration.getNewUseUnitCreditCode());
map1.put("USE_UNIT_NAME", registration.getNewUseUnitName());
map1.put("REC_DATE", registration.getCreateDate());
resultMap.put(device.getString("SEQUENCE_NBR"), map1);
tzsServiceFeignClient.commonUpdateEsDataByIds(resultMap);
});
}
/**
* 修改使用信息表中漏掉的设备
*/
public void bug24304HandleUpdateLackEquForUseInfo(List<JSONObject> deviceList, JgChangeRegistrationUnit registration) {
deviceList.forEach(device -> {
LambdaQueryWrapper<UseInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(UseInfo::getRecord, device.getString("SEQUENCE_NBR"));
UseInfo useInfo = useInfoMapper.selectOne(queryWrapper);
if (ObjectUtils.isNotEmpty(useInfo)) {
useInfo.setUseUnitName(registration.getNewUseUnitName());
useInfo.setUseUnitCreditCode(registration.getNewUseUnitCreditCode());
useInfoMapper.updateById(useInfo);
}
});
}
} }
\ No newline at end of file
...@@ -21,14 +21,20 @@ import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgUseInfo; ...@@ -21,14 +21,20 @@ import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgUseInfo;
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.EquipmentCategoryEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentCategoryEnum;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.queryparser.classic.QueryParser;
import org.elasticsearch.action.search.ClearScrollRequest;
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.search.SearchScrollRequest;
import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermsQueryBuilder; import org.elasticsearch.index.query.TermsQueryBuilder;
import org.elasticsearch.search.Scroll;
import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -51,6 +57,7 @@ import java.text.SimpleDateFormat; ...@@ -51,6 +57,7 @@ import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.alibaba.fastjson.JSON.parseArray; import static com.alibaba.fastjson.JSON.parseArray;
...@@ -114,6 +121,9 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr ...@@ -114,6 +121,9 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
@Autowired @Autowired
private RedisTemplate<String, String> redisTemplate; private RedisTemplate<String, String> redisTemplate;
private static final long SCROLL_TIMEOUT = 180000;
private static final int SIZE = 1000;
/** /**
* 将已经通过使用登记审批的证信息录入到 jg-use-registration-manage 表中 * 将已经通过使用登记审批的证信息录入到 jg-use-registration-manage 表中
...@@ -343,30 +353,87 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr ...@@ -343,30 +353,87 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
if (ValidationUtil.isEmpty(jgUseRegistrationManageList)) { if (ValidationUtil.isEmpty(jgUseRegistrationManageList)) {
return new ArrayList<>(); return new ArrayList<>();
} }
List<JSONObject> result = new ArrayList<>(); // List<JSONObject> result = new ArrayList<>();
Set<String> useOrgCodes = jgUseRegistrationManageList.stream().map(JgUseRegistrationManage::getUseRegistrationCode).collect(Collectors.toSet()); Set<String> useOrgCodes = jgUseRegistrationManageList.stream().map(JgUseRegistrationManage::getUseRegistrationCode).collect(Collectors.toSet());
// es中通过查询【使用登记证编号】所有设备 // es中通过查询【使用登记证编号】所有设备
SearchRequest request = new SearchRequest("idx_biz_view_jg_all"); // SearchRequest request = new SearchRequest("idx_biz_view_jg_all");
SearchSourceBuilder builder = new SearchSourceBuilder(); // SearchSourceBuilder builder = new SearchSourceBuilder();
builder.trackTotalHits(true); // builder.trackTotalHits(true);
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
TermsQueryBuilder termsQuery = QueryBuilders.termsQuery("USE_ORG_CODE", useOrgCodes); TermsQueryBuilder termsQuery = QueryBuilders.termsQuery("USE_ORG_CODE", useOrgCodes);
boolQuery.must(termsQuery); boolQuery.must(termsQuery);
builder.query(boolQuery); // builder.query(boolQuery);
builder.size(useOrgCodes.size()); // builder.size(useOrgCodes.size());
request.source(builder); // request.source(builder);
List<JSONObject> result = Collections.emptyList();
try { try {
SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT); result = searchResponse("idx_biz_view_jg_all", boolQuery, hit -> JSONObject.parseObject(hit.getSourceAsString(), JSONObject.class));
for (SearchHit hit : response.getHits().getHits()) { }catch (Exception ex){
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(hit); ex.printStackTrace();
JSONObject dto2 = jsonObject.getJSONObject("sourceAsMap"); }
result.add(dto2); // try {
// SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
// for (SearchHit hit : response.getHits().getHits()) {
// JSONObject jsonObject = (JSONObject) JSONObject.toJSON(hit);
// JSONObject dto2 = jsonObject.getJSONObject("sourceAsMap");
// result.add(dto2);
// }
// } catch (Exception e) {
// e.printStackTrace();
// }
return result;
}
/**
* 构建SearchResponse
*
* @param indices 索引
* @param query queryBuilder
* @param fun 返回函数
* @param <T> 返回类型
* @return List, 可以使用fun转换为T结果
* @throws Exception e
*/
public <T> List<T> searchResponse(String indices, QueryBuilder query, Function<SearchHit, T> fun) throws Exception {
SearchRequest request = new SearchRequest(indices);
Scroll scroll = new Scroll(TimeValue.timeValueMillis(SCROLL_TIMEOUT));
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(query);
sourceBuilder.size(SIZE);
request.scroll(scroll);
request.source(sourceBuilder);
List<String> scrollIdList = new ArrayList<>();
List<T> result = new ArrayList<>();
SearchResponse searchResponse = restHighLevelClient.search(request, RequestOptions.DEFAULT);
String scrollId = searchResponse.getScrollId();
SearchHit[] hits = searchResponse.getHits().getHits();
scrollIdList.add(scrollId);
try {
while (ArrayUtils.isNotEmpty(hits)) {
for (SearchHit hit : hits) {
result.add(fun.apply(hit));
}
if (hits.length < SIZE) {
break;
}
SearchScrollRequest searchScrollRequest = new SearchScrollRequest(scrollId);
searchScrollRequest.scroll(scroll);
SearchResponse searchScrollResponse = restHighLevelClient.scroll(searchScrollRequest, RequestOptions.DEFAULT);
scrollId = searchScrollResponse.getScrollId();
hits = searchScrollResponse.getHits().getHits();
scrollIdList.add(scrollId);
} }
} catch (Exception e) { } finally {
e.printStackTrace(); ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
clearScrollRequest.setScrollIds(scrollIdList);
restHighLevelClient.clearScroll(clearScrollRequest, RequestOptions.DEFAULT);
} }
return result; return result;
} }
......
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