package com.glxp.api.controller.basic; 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.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.BasicCorpService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; @Slf4j @Service public class BasicGenJsonService { @Resource BasicCorpExportLogService corpExportLogService; @Resource BasicCorpService 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 unitMaintainEntities = new ArrayList<>(); if (basicCorpsExportRequest.getIds() != null && basicCorpsExportRequest.getIds().size() > 0) { List ids = basicCorpsExportRequest.getIds(); ids.forEach(id -> { BasicUnitMaintainFilterRequest request = new BasicUnitMaintainFilterRequest(); request.setId(id); List basicUnitMaintainEntities = basicUnitMaintainService.filterList(request); unitMaintainEntities.addAll(basicUnitMaintainEntities); getThrCorpList(exportData, basicUnitMaintainEntities); }); } else { //一键导出 BasicUnitMaintainFilterRequest filterRequest = new BasicUnitMaintainFilterRequest(); BeanUtils.copyProperties(basicCorpsExportRequest, filterRequest); filterRequest.setPage(null); List 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 unitMaintainEntities = new ArrayList<>(); if (corpsExportRequest.getIds() != null && corpsExportRequest.getIds().size() > 0) { List ids = corpsExportRequest.getIds(); ids.forEach(id -> { BasicUnitMaintainFilterRequest request = new BasicUnitMaintainFilterRequest(); request.setId(id); List basicUnitMaintainEntities = basicUnitMaintainService.filterList(request); unitMaintainEntities.addAll(basicUnitMaintainEntities); getThrCorpList(exportData, basicUnitMaintainEntities); }); } else { //一键导出 BasicUnitMaintainFilterRequest filterRequest = new BasicUnitMaintainFilterRequest(); BeanUtils.copyProperties(corpsExportRequest, filterRequest); filterRequest.setPage(null); List 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 basicUnitMaintainEntities) { if (CollUtil.isNotEmpty(basicUnitMaintainEntities)) { List 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 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 uuids = udiInfoExportRequest.getUuids(); // uuids.forEach(uuid -> { // FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest(); // filterUdiInfoRequest.setUuid(uuid); // List udiRelevanceResponses = udiRelevanceService.filterUdiRelevance(filterUdiInfoRequest); // if (CollUtil.isNotEmpty(udiRelevanceResponses)) { // parseUdiRelevanceResponses(exportData, udiRelevanceResponses); // } // }); // } else { // //一键导出 // FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest(); // BeanUtil.copyProperties(udiInfoExportRequest, filterUdiInfoRequest); // filterUdiInfoRequest.setPage(null); // List data = udiRelevanceService.filterUdiRelevance(filterUdiInfoRequest); // if (CollUtil.isNotEmpty(data)) { // parseUdiRelevanceResponses(exportData, data); // } // } // return exportData; // } // // /** // * 解析医疗器械信息查询结果,封装完整数据 // * // * @param exportData // * @param udiRelevanceResponses // */ // private void parseUdiRelevanceResponses(UdiRelevanceExportJsonResponse exportData, List udiRelevanceResponses) { // List uuids = new ArrayList<>(udiRelevanceResponses.size()); // udiRelevanceResponses.forEach(udi -> { // uuids.add(udi.getUuid()); // }); // List udiInfoEntities = udiInfoDao.batchSelectByUuid(uuids); // List udiRelevanceEntities = udiRelevanceDao.batchSelectByUuid(uuids); // if (CollUtil.isNotEmpty(udiRelevanceEntities)) { // List 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 result = thrProductsDao.filterThrProductsRequest(filter); // if (CollUtil.isNotEmpty(result)) { // thrProductsEntities.addAll(result); // } // } // } // } // }); // if (CollUtil.isNotEmpty(thrProductsEntities)) { // exportData.setThrProductsEntities(thrProductsEntities); // } // } // List udiInfo = exportData.getUdiInfoEntities(); // List udiRelevance = exportData.getUdiRelevanceEntities(); // udiInfo.addAll(udiInfoEntities); // udiRelevance.addAll(udiRelevanceEntities); // exportData.setUdiInfoEntities(udiInfo); // exportData.setUdiRelevanceEntities(udiRelevance); // } }