Commit 9c274978 authored by tianbo's avatar tianbo

feat(jg): 数据对接服务优化与设备信息更新

- 修改注册信息默认产品名为"电梯" - 重构 saveOtherInfo 方法返回 IdxBizJgOtherInfo 对象 - 调整 updateHistoryInfo 参数列表并优化执行逻辑 - 异步批量保存电梯数据增加结果反馈和异常处理 - 设备接收单位字段注解类型处理器变更 - PieLineDataChangeServiceImpl 注入懒加载 CommonEquipDataProcessService - SingleEquipChangeProcess 过滤空值并调整日期排序规则
parent 5c5a665e
...@@ -12,7 +12,7 @@ import java.util.Date; ...@@ -12,7 +12,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@FeignClient(name = "TZS-JG-tb", path = "/jg", configuration = {FeignConfiguration.class}) @FeignClient(name = "TZS-JG", path = "/jg", configuration = {FeignConfiguration.class})
public interface TzsJgServiceFeignClient { public interface TzsJgServiceFeignClient {
/** /**
......
...@@ -25,10 +25,7 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest; ...@@ -25,10 +25,7 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.io.InputStream; import java.io.InputStream;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
import java.util.stream.Stream; import java.util.stream.Stream;
@Slf4j @Slf4j
...@@ -567,8 +564,8 @@ public class XiAnDataDockServiceImpl { ...@@ -567,8 +564,8 @@ public class XiAnDataDockServiceImpl {
} catch (Exception e) { } catch (Exception e) {
return ResponseHelper.buildFailureResponse(e.getMessage(), "参数校验失败,详细请看返回信息", HttpStatus.BAD_REQUEST); return ResponseHelper.buildFailureResponse(e.getMessage(), "参数校验失败,详细请看返回信息", HttpStatus.BAD_REQUEST);
} }
this.batchSaveElevatorData(elevatorExcelDtos);
return ResponseHelper.buildResponse("设备保存成功!"); return ResponseHelper.buildResponse(this.batchSaveElevatorData(elevatorExcelDtos));
} }
/** /**
...@@ -778,13 +775,14 @@ public class XiAnDataDockServiceImpl { ...@@ -778,13 +775,14 @@ public class XiAnDataDockServiceImpl {
* *
* @param elevatorExcelDtos * @param elevatorExcelDtos
*/ */
public void batchSaveElevatorData(List<XiAnElevatorExcelDto> elevatorExcelDtos) { public Map<String, String> batchSaveElevatorData(List<XiAnElevatorExcelDto> elevatorExcelDtos) {
log.info("解析成功,准备上传数据,条数:{}", elevatorExcelDtos.size()); log.info("解析成功,准备上传数据,条数:{}", elevatorExcelDtos.size());
int batchSize = 5000; int batchSize = 5000;
int totalSize = elevatorExcelDtos.size(); int totalSize = elevatorExcelDtos.size();
Map<String, String> rMap = new HashMap<>();
// 主线程中获取登录信息传递到异步线程中 // 主线程中获取登录信息传递到异步线程中
RequestContextWrapper contextWrapper = RequestContextWrapper.capture(); RequestContextWrapper contextWrapper = RequestContextWrapper.capture();
Set<String> importResult = ConcurrentHashMap.newKeySet(); // 使用线程安全的Set
// 分批处理,但限制同时运行的批次数 // 分批处理,但限制同时运行的批次数
int maxConcurrentBatches = 5; // 最大并发批次数 int maxConcurrentBatches = 5; // 最大并发批次数
Semaphore semaphore = new Semaphore(maxConcurrentBatches); Semaphore semaphore = new Semaphore(maxConcurrentBatches);
...@@ -793,8 +791,17 @@ public class XiAnDataDockServiceImpl { ...@@ -793,8 +791,17 @@ public class XiAnDataDockServiceImpl {
List<XiAnElevatorExcelDto> batch = elevatorExcelDtos.subList(i, Math.min(totalSize, i + batchSize)); List<XiAnElevatorExcelDto> batch = elevatorExcelDtos.subList(i, Math.min(totalSize, i + batchSize));
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> { CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
try { try {
semaphore.acquire(); // 获取许可
contextWrapper.apply(); contextWrapper.apply();
jgServiceFeignClient.saveElevatorData(batch); Object result = jgServiceFeignClient.saveElevatorData(batch);
LinkedHashMap<String, Object> resultMap = (LinkedHashMap<String, Object>) result;
if (resultMap.containsKey("result") && resultMap.get("result") instanceof Collection) {
Collection<?> data = (Collection<?>) resultMap.get("result");
data.stream()
.filter(item -> item instanceof String)
.forEach(item -> importResult.add((String) item));
}
} catch (Exception e) { } catch (Exception e) {
log.error("西安数据上传,保存数据失败: ", e); log.error("西安数据上传,保存数据失败: ", e);
} finally { } finally {
...@@ -805,5 +812,15 @@ public class XiAnDataDockServiceImpl { ...@@ -805,5 +812,15 @@ public class XiAnDataDockServiceImpl {
} }
// 等待所有异步任务完成 // 等待所有异步任务完成
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join(); CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
if (!ValidationUtil.isEmpty(importResult)) {
rMap.put("result", "success");
rMap.put("message", "设备已做过后续业务或被编辑,更新失败:" + String.join(",", importResult));
log.info("设备已做过后续业务或被编辑,更新失败:{}", String.join(",", importResult));
return rMap;
}
log.info("设备保存成功");
rMap.put("result", "success");
rMap.put("message", "设备保存成功");
return rMap;
} }
} }
...@@ -25,6 +25,7 @@ import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum; ...@@ -25,6 +25,7 @@ import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.SuperviseInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.SuperviseInfoMapper;
import lombok.Getter; import lombok.Getter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
...@@ -54,6 +55,7 @@ public class PieLineDataChangeServiceImpl { ...@@ -54,6 +55,7 @@ public class PieLineDataChangeServiceImpl {
private final SuperviseInfoMapper superviseInfoMapper; private final SuperviseInfoMapper superviseInfoMapper;
@Lazy
private final CommonEquipDataProcessService commonEquipDataProcessService; private final CommonEquipDataProcessService commonEquipDataProcessService;
......
...@@ -36,6 +36,7 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest; ...@@ -36,6 +36,7 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* 单个维护设备-策略实现类 * 单个维护设备-策略实现类
...@@ -320,7 +321,8 @@ public class SingleEquipChangeProcess implements IEquipChangeDataProcessStrategy ...@@ -320,7 +321,8 @@ public class SingleEquipChangeProcess implements IEquipChangeDataProcessStrategy
List<Map<String, String>> recentlyReceiveCompanyCode = commonEquipDataProcessService.getCommonMapper().queryRecentlyReceiveCompanyCode(registerInfoNew.getRecord()); List<Map<String, String>> recentlyReceiveCompanyCode = commonEquipDataProcessService.getCommonMapper().queryRecentlyReceiveCompanyCode(registerInfoNew.getRecord());
if (!recentlyReceiveCompanyCode.isEmpty()) { if (!recentlyReceiveCompanyCode.isEmpty()) {
// 按passedDate倒叙排序后取最新的一个 // 按passedDate倒叙排序后取最新的一个
recentlyReceiveCompanyCode.sort(Comparator.comparing(map -> map.get("passedDate"), Comparator.reverseOrder())); recentlyReceiveCompanyCode = recentlyReceiveCompanyCode.stream().filter(map -> !ValidationUtil.isEmpty(map)).collect(Collectors.toList());
recentlyReceiveCompanyCode.sort(Comparator.comparing(map -> map.get("passedDate")));
receiveCompanyCode = commonEquipDataProcessService.getJgUseRegistrationService().getCodeUtil().getCityRegionCode(recentlyReceiveCompanyCode.get(0).get("receiveCompanyCode")); receiveCompanyCode = commonEquipDataProcessService.getJgUseRegistrationService().getCodeUtil().getCityRegionCode(recentlyReceiveCompanyCode.get(0).get("receiveCompanyCode"));
} }
} }
......
...@@ -16,7 +16,6 @@ import com.alibaba.fastjson.JSONObject; ...@@ -16,7 +16,6 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
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;
...@@ -26,7 +25,9 @@ import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory; ...@@ -26,7 +25,9 @@ import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory;
import com.yeejoin.amos.boot.module.common.api.dao.ExcelImportErrorLogDao; import com.yeejoin.amos.boot.module.common.api.dao.ExcelImportErrorLogDao;
import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto; import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.common.api.dto.ExcelImportErrorLogDto; import com.yeejoin.amos.boot.module.common.api.dto.ExcelImportErrorLogDto;
import com.yeejoin.amos.boot.module.common.api.enums.ConstructionTypeEnum;
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.common.PipLenCalUtils;
import com.yeejoin.amos.boot.module.jg.api.converter.DictParamsConverter; import com.yeejoin.amos.boot.module.jg.api.converter.DictParamsConverter;
import com.yeejoin.amos.boot.module.jg.api.converter.EquCategoryConverter; import com.yeejoin.amos.boot.module.jg.api.converter.EquCategoryConverter;
import com.yeejoin.amos.boot.module.jg.api.converter.EquDefineConverter; import com.yeejoin.amos.boot.module.jg.api.converter.EquDefineConverter;
...@@ -49,7 +50,6 @@ import com.yeejoin.amos.boot.module.jg.biz.reminder.core.event.EquipCreateOrEdit ...@@ -49,7 +50,6 @@ import com.yeejoin.amos.boot.module.jg.biz.reminder.core.event.EquipCreateOrEdit
import com.yeejoin.amos.boot.module.jg.biz.service.*; import com.yeejoin.amos.boot.module.jg.biz.service.*;
import com.yeejoin.amos.boot.module.jg.biz.utils.CodeUtil; 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.jg.api.common.PipLenCalUtils;
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.EquimentEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum;
...@@ -80,7 +80,6 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel; ...@@ -80,7 +80,6 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.io.InputStream; import java.io.InputStream;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
...@@ -501,6 +500,7 @@ public class DataDockServiceImpl { ...@@ -501,6 +500,7 @@ public class DataDockServiceImpl {
registerInfo.setRegisterState("6045"); registerInfo.setRegisterState("6045");
registerInfo.setIsCompleteXa("1"); registerInfo.setIsCompleteXa("1");
registerInfo.setInInspectionPeriod("1"); registerInfo.setInInspectionPeriod("1");
registerInfo.setProductName("电梯");
idxBizJgRegisterInfoServiceImpl.saveOrUpdateData(registerInfo); idxBizJgRegisterInfoServiceImpl.saveOrUpdateData(registerInfo);
} }
return registerInfo; return registerInfo;
...@@ -594,7 +594,7 @@ public class DataDockServiceImpl { ...@@ -594,7 +594,7 @@ public class DataDockServiceImpl {
* @param equ * @param equ
* @param record * @param record
*/ */
private void saveOtherInfo(Map<String, Object> equ, String record, String equList) { private IdxBizJgOtherInfo saveOtherInfo(Map<String, Object> equ, String record, String equList) {
log.error("数据===>{}", toJSONString(equ)); log.error("数据===>{}", toJSONString(equ));
IdxBizJgOtherInfo oldOtherInfo = idxBizJgOtherInfoService.lambdaQuery() IdxBizJgOtherInfo oldOtherInfo = idxBizJgOtherInfoService.lambdaQuery()
.eq(IdxBizJgOtherInfo::getRecord, record).one(); .eq(IdxBizJgOtherInfo::getRecord, record).one();
...@@ -611,6 +611,7 @@ public class DataDockServiceImpl { ...@@ -611,6 +611,7 @@ public class DataDockServiceImpl {
} }
idxBizJgOtherInfoService.saveOrUpdate(otherInfo); idxBizJgOtherInfoService.saveOrUpdate(otherInfo);
} }
return otherInfo;
} }
/** /**
...@@ -2666,7 +2667,7 @@ public class DataDockServiceImpl { ...@@ -2666,7 +2667,7 @@ public class DataDockServiceImpl {
// 西安导入电梯属地监管部门处理 // 西安导入电梯属地监管部门处理
handleSupervisionOffice(equ); handleSupervisionOffice(equ);
saveSupervisionInfo(equ, record); saveSupervisionInfo(equ, record);
saveOtherInfo(equ, record, equList); IdxBizJgOtherInfo otherInfo = saveOtherInfo(equ, record, equList);
saveInspectInfo(equ, record); saveInspectInfo(equ, record);
saveTechParams(equ, record, equList); saveTechParams(equ, record, equList);
saveEquInfoToEs(record, isCompleteXa); saveEquInfoToEs(record, isCompleteXa);
...@@ -2678,7 +2679,7 @@ public class DataDockServiceImpl { ...@@ -2678,7 +2679,7 @@ public class DataDockServiceImpl {
} }
// oldUseInfo不为空表示是平台已有设备,已有历史设备则更新历史单据信息。 // oldUseInfo不为空表示是平台已有设备,已有历史设备则更新历史单据信息。
if (!ValidationUtil.isEmpty(oldUseInfo)) { if (!ValidationUtil.isEmpty(oldUseInfo)) {
updateHistoryInfo(equ, oldUseInfo, registerInfo); updateHistoryInfo(equ, registerInfo, otherInfo);
} }
} else if (!businessId.isEmpty()) { } else if (!businessId.isEmpty()) {
this.saveResumeInfo(equ); this.saveResumeInfo(equ);
...@@ -2704,7 +2705,7 @@ public class DataDockServiceImpl { ...@@ -2704,7 +2705,7 @@ public class DataDockServiceImpl {
} }
} }
private void updateHistoryInfo(Map<String, Object> equ, IdxBizJgUseInfo oldUseInfo, IdxBizJgRegisterInfo registerInfo) { private void updateHistoryInfo(Map<String, Object> equ, IdxBizJgRegisterInfo registerInfo, IdxBizJgOtherInfo otherInfo) {
// 更新历史登记单数据、登记单对应历史表数据 // 更新历史登记单数据、登记单对应历史表数据
// 安全管理员 // 安全管理员
if (equ.containsKey("safetyManager")) { if (equ.containsKey("safetyManager")) {
...@@ -2730,7 +2731,8 @@ public class DataDockServiceImpl { ...@@ -2730,7 +2731,8 @@ public class DataDockServiceImpl {
jgUseRegistration.setReceiveOrgName(receiveCompanyName); jgUseRegistration.setReceiveOrgName(receiveCompanyName);
equ.put("receiveOrgName", receiveCompanyName); equ.put("receiveOrgName", receiveCompanyName);
jgUseRegistrationServiceImpl.saveOrUpdate(jgUseRegistration); jgUseRegistrationServiceImpl.saveOrUpdate(jgUseRegistration);
this.updateRegistrationManagementInfo(equ, jgUseRegistration.getSupervisoryCode()); this.updateEsData2(equ, otherInfo);
this.updateRegistrationManagementInfo(equ, jgUseRegistration.getUseRegistrationCode());
this.updateHistory(equ, equ.get("record").toString(), String.valueOf(jgUseRegistration.getSequenceNbr()), jgUseRegistration.getSupervisoryCode()); this.updateHistory(equ, equ.get("record").toString(), String.valueOf(jgUseRegistration.getSequenceNbr()), jgUseRegistration.getSupervisoryCode());
} }
...@@ -2745,7 +2747,7 @@ public class DataDockServiceImpl { ...@@ -2745,7 +2747,7 @@ public class DataDockServiceImpl {
jgUseRegistrationManagement.setUseUnitName(equ.get("useUnitName").toString()); jgUseRegistrationManagement.setUseUnitName(equ.get("useUnitName").toString());
jgUseRegistrationManagement.setUseUnitCreditCode(equ.get("useUnitCode").toString()); jgUseRegistrationManagement.setUseUnitCreditCode(equ.get("useUnitCode").toString());
jgUseRegistrationManagement.setSuperviseOrgCode(equ.get("orgBranchCode").toString()); jgUseRegistrationManagement.setSuperviseOrgCode(equ.get("orgBranchCode").toString());
jgUseRegistrationManagement.setSuperviseOrgName(equ.get("orgBranchName").toString().split("_", 2)[1]); jgUseRegistrationManagement.setSuperviseOrgName(equ.get("orgBranchCode").toString().split("_", 2)[1]);
jgUseRegistrationManagement.setIsDoBusiness("1"); jgUseRegistrationManagement.setIsDoBusiness("1");
jgUseRegistrationManageService.saveOrUpdate(jgUseRegistrationManagement); jgUseRegistrationManageService.saveOrUpdate(jgUseRegistrationManagement);
...@@ -3185,6 +3187,7 @@ public class DataDockServiceImpl { ...@@ -3185,6 +3187,7 @@ public class DataDockServiceImpl {
constructionInfo.setUscUnitCreditCode(ValidationUtil.isEmpty(equ.get("installUnitCreditCode")) ? null : String.valueOf(equ.get("installUnitCreditCode"))); constructionInfo.setUscUnitCreditCode(ValidationUtil.isEmpty(equ.get("installUnitCreditCode")) ? null : String.valueOf(equ.get("installUnitCreditCode")));
constructionInfo.setConstructionLeaderName(ValidationUtil.isEmpty(equ.get("installLeaderName")) ? null : String.valueOf(equ.get("installLeaderName"))); constructionInfo.setConstructionLeaderName(ValidationUtil.isEmpty(equ.get("installLeaderName")) ? null : String.valueOf(equ.get("installLeaderName")));
constructionInfo.setConstructionLeaderPhone(ValidationUtil.isEmpty(equ.get("installLeaderPhone")) ? null : String.valueOf(equ.get("installLeaderPhone"))); constructionInfo.setConstructionLeaderPhone(ValidationUtil.isEmpty(equ.get("installLeaderPhone")) ? null : String.valueOf(equ.get("installLeaderPhone")));
constructionInfo.setConstructionType(ConstructionTypeEnum.AZ.getCode());
try { try {
constructionInfo.setUscDate(ValidationUtil.isEmpty(equ.get("installStartDate")) ? null : DateUtils.dateParse((String) equ.get("installStartDate"), DateUtils.DATE_PATTERN)); constructionInfo.setUscDate(ValidationUtil.isEmpty(equ.get("installStartDate")) ? null : DateUtils.dateParse((String) equ.get("installStartDate"), DateUtils.DATE_PATTERN));
} catch (ParseException e) { } catch (ParseException e) {
......
...@@ -349,6 +349,6 @@ public class IdxBizJgUseInfo extends TzsBaseEntity implements IBaseChangeData { ...@@ -349,6 +349,6 @@ public class IdxBizJgUseInfo extends TzsBaseEntity implements IBaseChangeData {
private String USC_UNIT_NAME; private String USC_UNIT_NAME;
@TableField(exist = false) @TableField(exist = false)
@FieldDisplayDefine(value = "接收单位code") @FieldDisplayDefine(value = "接收单位", typeHandler = "companyCodeTypeHandler")
private String receiveCompanyCode; private String receiveCompanyCode;
} }
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