Commit 495d2f5a authored by suhuiguang's avatar suhuiguang

feat(jyjc):检验检测业务管理

1.联调修改增加检索条件 2.增加锁对一个申请单据
parent 4cd028f5
......@@ -66,6 +66,9 @@ public class JyjcBizManageServiceImpl {
queryWrapper.eq(JyjcOpeningApplication::getStatus, FlowStatusEnum.TO_BE_FINISHED.getName());
queryWrapper.like(StringUtils.isNotEmpty(model.getUnitCodeName()), JyjcOpeningApplication::getUnitCodeName, model.getUnitCodeName());
queryWrapper.eq(StringUtils.isNotEmpty(model.getOpenBizType()), JyjcOpeningApplication::getOpenBizType, model.getOpenBizType());
if (StringUtils.isNotEmpty(model.getDetectionRegionName())) {
queryWrapper.and(wp -> wp.like(JyjcOpeningApplication::getDetectionRegion, model.getDetectionRegionName()).and(w -> w.isNull(JyjcOpeningApplication::getExclusionRegion).or().notLike(JyjcOpeningApplication::getExclusionRegion, model.getDetectionRegionName())));
}
queryWrapper.orderByDesc(BaseEntity::getSequenceNbr);
IPage<JyjcOpeningApplication> res = openingApplicationService.page(pageApp, queryWrapper);
Map<String, String> detectionRegionCodeNameMap = getDetectionRegionCodeNameMap();
......@@ -75,8 +78,9 @@ public class JyjcBizManageServiceImpl {
setAreaStatusByIdentify(company, r, bizManageModel);
bizManageModel.setCompanyCode(company.getCompanyCode());
bizManageModel.setOpenBizTypeName(Optional.of(OpenBizTypeEnumV2.getOneByCode(bizManageModel.getOpenBizType())).map(OpenBizTypeEnumV2::getDescription).orElse(""));
bizManageModel.setDetectionRegionName(this.buildDetectionRegionName(detectionRegionCodeNameMap, r.getDetectionRegion()));
bizManageModel.setExclusionRegionName(this.buildDetectionRegionName(detectionRegionCodeNameMap, r.getExclusionRegion()));
// 真实开通区域,所有区域-排查区域
bizManageModel.setDetectionRegionName(this.buildRegionName(detectionRegionCodeNameMap, r.getDetectionRegion().stream().filter(d -> !Optional.ofNullable(r.getExclusionRegion()).orElse(new ArrayList<>()).contains(d)).collect(Collectors.toList())));
bizManageModel.setExclusionRegionName(this.buildRegionName(detectionRegionCodeNameMap, r.getExclusionRegion()));
bizManageModel.setAgencyClassifyName(agencyClassifyNameCodeNameMap.getOrDefault(bizManageModel.getAgencyClassify(), ""));
return bizManageModel;
}).collect(Collectors.toList());
......@@ -95,7 +99,7 @@ public class JyjcBizManageServiceImpl {
return detectionRegions.stream().collect(Collectors.toMap(DictionarieValueModel::getDictDataKey, DictionarieValueModel::getDictDataValue));
}
private String buildDetectionRegionName(Map<String, String> detectionRegionCodeNameMap, List<String> regionCodes) {
private String buildRegionName(Map<String, String> detectionRegionCodeNameMap, List<String> regionCodes) {
return Optional.ofNullable(regionCodes).map(r -> r.stream().map(detectionRegionCodeNameMap::get).collect(Collectors.joining(","))).orElse("");
}
......@@ -225,14 +229,39 @@ public class JyjcBizManageServiceImpl {
}
public Boolean expireDateEdit(String appSeq, String newExpiryDate) {
log.info("省局企业业务有效期调整权限, appSeq: {}, newExpiryDate: {}", appSeq, newExpiryDate);
String lockKey = "app:region:lock:" + appSeq;
RLock lock = redissonClient.getLock(lockKey);
try {
boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
// 解决并发问题:解决并发问题:多个人同时操作一个单据
if (!isLocked) {
throw new BadRequest("其他机构同时在操作该业务,请稍后重试!");
}
LambdaUpdateWrapper<JyjcOpeningApplication> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(BaseEntity::getSequenceNbr, appSeq);
updateWrapper.set(JyjcOpeningApplication::getExpiryDate, DateUtil.parseDate(newExpiryDate));
openingApplicationService.update(updateWrapper);
} catch (InterruptedException e) {
log.error("禁用企业区域失败:{}", e.getMessage(), e);
} finally {
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
return Boolean.TRUE;
}
public Boolean detectionRegionEdit(String appSeq, String newDetectionRegion) {
log.info("省局企业区域调整权限, appSeq: {}, newDetectionRegion: {}", appSeq, newDetectionRegion);
String lockKey = "app:region:lock:" + appSeq;
RLock lock = redissonClient.getLock(lockKey);
try {
boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
// 解决并发问题:解决并发问题:多个人同时操作一个单据
if (!isLocked) {
throw new BadRequest("其他机构同时在操作该业务,请稍后重试!");
}
JyjcOpeningApplication openingApplication = openingApplicationService.getById(appSeq);
openingApplication.setDetectionRegion(Arrays.stream(newDetectionRegion.split(",")).collect(Collectors.toList()));
if (openingApplication.getExclusionRegion() != null) {
......@@ -240,6 +269,13 @@ public class JyjcBizManageServiceImpl {
openingApplication.setExclusionRegion(openingApplication.getExclusionRegion().stream().filter(e -> openingApplication.getDetectionRegion().contains(e)).collect(Collectors.toList()));
}
openingApplicationService.saveOrUpdate(openingApplication);
} catch (InterruptedException e) {
log.error("禁用企业区域失败:{}", e.getMessage(), e);
} finally {
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
return Boolean.TRUE;
}
......@@ -262,6 +298,7 @@ public class JyjcBizManageServiceImpl {
res.put("exclusionRegion", openingApplication.getExclusionRegion());
res.put("status", openingApplication.getStatus());
res.put("applicationSeq", openingApplication.getApplicationSeq());
res.put("acceptDate", openingApplication.getAcceptDate());
return res;
}
......@@ -275,13 +312,12 @@ public class JyjcBizManageServiceImpl {
baseUnitLicences.addAll(baseUnitLicenceOne);
}
});
List<Map<String, Object>> licences = baseUnitLicences.stream().map(e -> {
return baseUnitLicences.stream().map(e -> {
Map<String, Object> map = new HashMap<>();
BeanUtil.copyProperties(e, map);
map.put("licenceState", String.valueOf(e.getLicenceState()));
map.put("qualificationCertificateAttachment", JSONObject.parseArray(e.getQualificationCertificateAttachment()));
return map;
}).collect(Collectors.toList());
return licences;
}
}
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