You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
238 lines
11 KiB
Java
238 lines
11 KiB
Java
2 years ago
|
package com.glxp.api.controller.basic;
|
||
|
|
||
|
import cn.hutool.core.bean.BeanUtil;
|
||
|
import cn.hutool.core.collection.CollUtil;
|
||
|
import cn.hutool.core.io.file.FileWriter;
|
||
|
import cn.hutool.core.util.ReflectUtil;
|
||
|
import cn.hutool.core.util.StrUtil;
|
||
|
import cn.hutool.json.JSONUtil;
|
||
|
|
||
|
import com.glxp.api.constant.BasicProcessStatus;
|
||
|
import com.glxp.api.dao.thrsys.ThrCorpDao;
|
||
|
import com.glxp.api.entity.basic.BasicCorpEntity;
|
||
|
import com.glxp.api.entity.basic.BasicCorpsExportLogEntity;
|
||
|
import com.glxp.api.entity.thrsys.ThrCorpEntity;
|
||
|
import com.glxp.api.req.basic.BasicCorpsExportRequest;
|
||
|
import com.glxp.api.req.basic.BasicUnitMaintainFilterRequest;
|
||
|
import com.glxp.api.req.thrsys.FilterThrCorpRequest;
|
||
|
import com.glxp.api.res.basic.BasicCorpExportLogResponse;
|
||
|
import com.glxp.api.res.thrsys.ThrCorpsResponse;
|
||
|
import com.glxp.api.service.basic.BasicCorpExportLogService;
|
||
|
import com.glxp.api.service.basic.BasicUnitMaintainService;
|
||
|
import lombok.extern.slf4j.Slf4j;
|
||
|
import org.springframework.beans.BeanUtils;
|
||
|
import org.springframework.scheduling.annotation.Async;
|
||
|
import org.springframework.stereotype.Service;
|
||
|
|
||
|
import javax.annotation.Resource;
|
||
|
import java.io.File;
|
||
|
import java.lang.reflect.Field;
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.List;
|
||
|
|
||
|
@Slf4j
|
||
|
@Service
|
||
|
public class BasicGenJsonService {
|
||
|
|
||
|
@Resource
|
||
|
BasicCorpExportLogService corpExportLogService;
|
||
|
@Resource
|
||
|
BasicUnitMaintainService basicUnitMaintainService;
|
||
|
// @Resource
|
||
|
// UdiInfoExportLogService udiInfoExportLogService;
|
||
|
// @Resource
|
||
|
// UdiRelevanceService udiRelevanceService;
|
||
|
// @Resource
|
||
|
// UdiRelevanceDao udiRelevanceDao;
|
||
|
// @Resource
|
||
|
// UdiInfoDao udiInfoDao;
|
||
|
// @Resource
|
||
|
// ThrProductsDao thrProductsDao;
|
||
|
@Resource
|
||
|
ThrCorpDao thrCorpDao;
|
||
|
|
||
|
|
||
|
public void exportCorp(String genKey, BasicCorpsExportRequest basicCorpsExportRequest) {
|
||
|
BasicCorpsExportLogEntity corpExportLogEntity = corpExportLogService.selectByGenKey(genKey);
|
||
|
BasicCorpExportLogResponse exportData = new BasicCorpExportLogResponse();
|
||
|
|
||
|
List<BasicCorpEntity> unitMaintainEntities = new ArrayList<>();
|
||
|
if (basicCorpsExportRequest.getIds() != null && basicCorpsExportRequest.getIds().size() > 0) {
|
||
|
List<Integer> ids = basicCorpsExportRequest.getIds();
|
||
|
ids.forEach(id -> {
|
||
|
BasicUnitMaintainFilterRequest request = new BasicUnitMaintainFilterRequest();
|
||
|
request.setId(id);
|
||
|
List<BasicCorpEntity> basicUnitMaintainEntities = basicUnitMaintainService.filterList(request);
|
||
|
unitMaintainEntities.addAll(basicUnitMaintainEntities);
|
||
|
getThrCorpList(exportData, basicUnitMaintainEntities);
|
||
|
});
|
||
|
} else { //一键导出
|
||
|
BasicUnitMaintainFilterRequest filterRequest = new BasicUnitMaintainFilterRequest();
|
||
|
BeanUtils.copyProperties(basicCorpsExportRequest, filterRequest);
|
||
|
filterRequest.setPage(null);
|
||
|
List<BasicCorpEntity> basicUnitMaintainEntities = basicUnitMaintainService.filterList(filterRequest);
|
||
|
unitMaintainEntities.addAll(basicUnitMaintainEntities);
|
||
|
getThrCorpList(exportData, basicUnitMaintainEntities);
|
||
|
}
|
||
|
|
||
|
exportData.setCorpList(unitMaintainEntities);
|
||
|
FileWriter writer = new FileWriter(corpExportLogEntity.getFilePath());
|
||
|
writer.write(JSONUtil.toJsonStr(exportData));
|
||
|
corpExportLogEntity.setStatus(BasicProcessStatus.UDIINFO_IMPORT_SUCCESS);
|
||
|
corpExportLogService.updateCorpExportLog(corpExportLogEntity);
|
||
|
}
|
||
|
|
||
|
|
||
|
public BasicCorpExportLogResponse exportCorpJson(BasicCorpsExportRequest corpsExportRequest) {
|
||
|
BasicCorpExportLogResponse exportData = new BasicCorpExportLogResponse();
|
||
|
List<BasicCorpEntity> unitMaintainEntities = new ArrayList<>();
|
||
|
if (corpsExportRequest.getIds() != null && corpsExportRequest.getIds().size() > 0) {
|
||
|
List<Integer> ids = corpsExportRequest.getIds();
|
||
|
ids.forEach(id -> {
|
||
|
BasicUnitMaintainFilterRequest request = new BasicUnitMaintainFilterRequest();
|
||
|
request.setId(id);
|
||
|
List<BasicCorpEntity> basicUnitMaintainEntities = basicUnitMaintainService.filterList(request);
|
||
|
unitMaintainEntities.addAll(basicUnitMaintainEntities);
|
||
|
getThrCorpList(exportData, basicUnitMaintainEntities);
|
||
|
});
|
||
|
} else { //一键导出
|
||
|
BasicUnitMaintainFilterRequest filterRequest = new BasicUnitMaintainFilterRequest();
|
||
|
BeanUtils.copyProperties(corpsExportRequest, filterRequest);
|
||
|
filterRequest.setPage(null);
|
||
|
List<BasicCorpEntity> basicUnitMaintainEntities = basicUnitMaintainService.filterList(filterRequest);
|
||
|
unitMaintainEntities.addAll(basicUnitMaintainEntities);
|
||
|
getThrCorpList(exportData, basicUnitMaintainEntities);
|
||
|
}
|
||
|
|
||
|
exportData.setCorpList(unitMaintainEntities);
|
||
|
return exportData;
|
||
|
}
|
||
|
//
|
||
|
/**
|
||
|
* 查询第三方往来单位信息
|
||
|
*
|
||
|
* @param exportData
|
||
|
* @param basicUnitMaintainEntities
|
||
|
*/
|
||
|
private void getThrCorpList(BasicCorpExportLogResponse exportData, List<BasicCorpEntity> basicUnitMaintainEntities) {
|
||
|
if (CollUtil.isNotEmpty(basicUnitMaintainEntities)) {
|
||
|
List<ThrCorpsResponse> thrCorpEntities = new ArrayList<>();
|
||
|
Field[] fields = ReflectUtil.getFields(BasicCorpEntity.class);
|
||
|
basicUnitMaintainEntities.forEach(basicUnitMaintainEntity -> {
|
||
|
for (Field field : fields) {
|
||
|
if (field.getName().contains("thirdId")) {
|
||
|
String value = String.valueOf(ReflectUtil.getFieldValue(basicUnitMaintainEntity, field));
|
||
|
if (StrUtil.isNotBlank(value)) {
|
||
|
FilterThrCorpRequest thrCorpRequest = new FilterThrCorpRequest();
|
||
|
thrCorpRequest.setThirdSysFk("thirdId");
|
||
|
thrCorpRequest.setUnitId(value);
|
||
|
List<ThrCorpsResponse> result = thrCorpDao.filterThrCorps(thrCorpRequest);
|
||
|
if (CollUtil.isNotEmpty(result)) {
|
||
|
thrCorpEntities.addAll(result);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
if (CollUtil.isNotEmpty(thrCorpEntities)) {
|
||
|
exportData.setThrCorpEntities(thrCorpEntities);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
//
|
||
|
// /**
|
||
|
// * 导出json格式医疗器械信息
|
||
|
// *
|
||
|
// * @param genKey
|
||
|
// * @param udiInfoExportRequest
|
||
|
// */
|
||
|
// @Async
|
||
|
// public void exportUdiInfoJson(String genKey, UdiInfoExportRequest udiInfoExportRequest) {
|
||
|
// UdiInfoExportLogEntity udiInfoExportLogEntity = udiInfoExportLogService.selectByGenKey(genKey);
|
||
|
// UdiRelevanceExportJsonResponse exportData = paresDataJson(udiInfoExportRequest);
|
||
|
// File file = new File(udiInfoExportLogEntity.getFilePath());
|
||
|
// if (!file.exists()) {
|
||
|
// try {
|
||
|
// file.createNewFile();
|
||
|
// } catch (Exception e) {
|
||
|
// log.error("导出医疗器械信息异常", e);
|
||
|
// }
|
||
|
// }
|
||
|
// FileWriter writer = new FileWriter(file);
|
||
|
// writer.write(JSONUtil.toJsonStr(exportData));
|
||
|
// udiInfoExportLogEntity.setStatus(BasicProcessStatus.UDIINFO_IMPORT_SUCCESS);
|
||
|
// udiInfoExportLogService.updateUdiInfoExportLog(udiInfoExportLogEntity);
|
||
|
// }
|
||
|
//
|
||
|
//
|
||
|
// public UdiRelevanceExportJsonResponse paresDataJson(UdiInfoExportRequest udiInfoExportRequest) {
|
||
|
// UdiRelevanceExportJsonResponse exportData = new UdiRelevanceExportJsonResponse();
|
||
|
// //选中导出
|
||
|
// if (CollUtil.isNotEmpty(udiInfoExportRequest.getUuids())) {
|
||
|
// List<String> uuids = udiInfoExportRequest.getUuids();
|
||
|
// uuids.forEach(uuid -> {
|
||
|
// FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest();
|
||
|
// filterUdiInfoRequest.setUuid(uuid);
|
||
|
// List<UdiRelevanceResponse> udiRelevanceResponses = udiRelevanceService.filterUdiRelevance(filterUdiInfoRequest);
|
||
|
// if (CollUtil.isNotEmpty(udiRelevanceResponses)) {
|
||
|
// parseUdiRelevanceResponses(exportData, udiRelevanceResponses);
|
||
|
// }
|
||
|
// });
|
||
|
// } else {
|
||
|
// //一键导出
|
||
|
// FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest();
|
||
|
// BeanUtil.copyProperties(udiInfoExportRequest, filterUdiInfoRequest);
|
||
|
// filterUdiInfoRequest.setPage(null);
|
||
|
// List<UdiRelevanceResponse> data = udiRelevanceService.filterUdiRelevance(filterUdiInfoRequest);
|
||
|
// if (CollUtil.isNotEmpty(data)) {
|
||
|
// parseUdiRelevanceResponses(exportData, data);
|
||
|
// }
|
||
|
// }
|
||
|
// return exportData;
|
||
|
// }
|
||
|
//
|
||
|
// /**
|
||
|
// * 解析医疗器械信息查询结果,封装完整数据
|
||
|
// *
|
||
|
// * @param exportData
|
||
|
// * @param udiRelevanceResponses
|
||
|
// */
|
||
|
// private void parseUdiRelevanceResponses(UdiRelevanceExportJsonResponse exportData, List<UdiRelevanceResponse> udiRelevanceResponses) {
|
||
|
// List<String> uuids = new ArrayList<>(udiRelevanceResponses.size());
|
||
|
// udiRelevanceResponses.forEach(udi -> {
|
||
|
// uuids.add(udi.getUuid());
|
||
|
// });
|
||
|
// List<UdiInfoEntity> udiInfoEntities = udiInfoDao.batchSelectByUuid(uuids);
|
||
|
// List<UdiRelevanceEntity> udiRelevanceEntities = udiRelevanceDao.batchSelectByUuid(uuids);
|
||
|
// if (CollUtil.isNotEmpty(udiRelevanceEntities)) {
|
||
|
// List<ThrProductsEntity> thrProductsEntities = new ArrayList<>(udiRelevanceEntities.size());
|
||
|
// Field[] fields = ReflectUtil.getFields(UdiRelevanceEntity.class);
|
||
|
// udiRelevanceEntities.forEach(udiRelevanceEntity -> {
|
||
|
// for (Field field : fields) {
|
||
|
// if (field.getName().contains("thirdId")) {
|
||
|
// Object fieldValue = ReflectUtil.getFieldValue(udiRelevanceEntity, field);
|
||
|
// if (null != fieldValue) {
|
||
|
// FilterThrProductsRequest filter = new FilterThrProductsRequest();
|
||
|
// filter.setCode(String.valueOf(fieldValue));
|
||
|
// filter.setThirdSysFk("thirdId");
|
||
|
// List<ThrProductsEntity> result = thrProductsDao.filterThrProductsRequest(filter);
|
||
|
// if (CollUtil.isNotEmpty(result)) {
|
||
|
// thrProductsEntities.addAll(result);
|
||
|
// }
|
||
|
// }
|
||
|
// }
|
||
|
// }
|
||
|
// });
|
||
|
// if (CollUtil.isNotEmpty(thrProductsEntities)) {
|
||
|
// exportData.setThrProductsEntities(thrProductsEntities);
|
||
|
// }
|
||
|
// }
|
||
|
// List<UdiInfoEntity> udiInfo = exportData.getUdiInfoEntities();
|
||
|
// List<UdiRelevanceEntity> udiRelevance = exportData.getUdiRelevanceEntities();
|
||
|
// udiInfo.addAll(udiInfoEntities);
|
||
|
// udiRelevance.addAll(udiRelevanceEntities);
|
||
|
// exportData.setUdiInfoEntities(udiInfo);
|
||
|
// exportData.setUdiRelevanceEntities(udiRelevance);
|
||
|
// }
|
||
|
}
|