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.
udi-wms-java/src/main/java/com/glxp/api/controller/basic/BasicGenJsonService.java

238 lines
11 KiB
Java

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);
// }
}