diff --git a/src/main/java/com/glxp/api/constant/BasicExportStatusTimeEnum.java b/src/main/java/com/glxp/api/constant/BasicExportStatusTimeEnum.java index ef65f5cb..b6f47f4a 100644 --- a/src/main/java/com/glxp/api/constant/BasicExportStatusTimeEnum.java +++ b/src/main/java/com/glxp/api/constant/BasicExportStatusTimeEnum.java @@ -139,6 +139,7 @@ public enum BasicExportStatusTimeEnum { DEV_UPKEEP_DATA("device_upkeep","保养单数据"), PRODUCE_BUSINESS_DATA("thr_manufacturer", "生产企业数据"), + DRUG_DATA_TASK("drug_data_task", "药品关联信息"), ; @EnumValue private String key; diff --git a/src/main/java/com/glxp/api/entity/sync/SyncDataSetEntity.java b/src/main/java/com/glxp/api/entity/sync/SyncDataSetEntity.java index 0612ca26..a0f50023 100644 --- a/src/main/java/com/glxp/api/entity/sync/SyncDataSetEntity.java +++ b/src/main/java/com/glxp/api/entity/sync/SyncDataSetEntity.java @@ -74,6 +74,7 @@ public class SyncDataSetEntity { private int deviceRepairApply;//报修管理 private int deviceUpkeep;//设备保养 private int produceBusiness;//生产企业 PRODUCE_BUSINESS_DATA + private int drugDataTask;//药品关联信息 diff --git a/src/main/java/com/glxp/api/res/system/SyncDataSetResponse.java b/src/main/java/com/glxp/api/res/system/SyncDataSetResponse.java index 76faeed0..90b1f2b8 100644 --- a/src/main/java/com/glxp/api/res/system/SyncDataSetResponse.java +++ b/src/main/java/com/glxp/api/res/system/SyncDataSetResponse.java @@ -71,7 +71,7 @@ public class SyncDataSetResponse { private int deviceRepairApply;//报修管理 private int deviceUpkeep;//设备保养 private int produceBusiness;//生产企业 PRODUCE_BUSINESS_DATA produceBusiness - + private int drugDataTask;//药品关联信息 } diff --git a/src/main/java/com/glxp/api/service/sync/SpsSyncDownloadService.java b/src/main/java/com/glxp/api/service/sync/SpsSyncDownloadService.java index f727fea6..43302b3f 100644 --- a/src/main/java/com/glxp/api/service/sync/SpsSyncDownloadService.java +++ b/src/main/java/com/glxp/api/service/sync/SpsSyncDownloadService.java @@ -14,6 +14,8 @@ import com.glxp.api.controller.sync.SpsSyncWebSocket; import com.glxp.api.constant.Constant; import com.glxp.api.dao.basic.BasicProductsDao; import com.glxp.api.entity.basic.*; +import com.glxp.api.entity.collect.RelCodeBatch; +import com.glxp.api.entity.collect.RelCodeDetail; import com.glxp.api.entity.dev.*; import com.glxp.api.entity.inout.*; import com.glxp.api.entity.inv.DeviceInspectTaskDetailEntity; @@ -31,9 +33,12 @@ import com.glxp.api.req.inout.FilterOrderRequest; import com.glxp.api.req.sync.SpsSyncDataRequest; import com.glxp.api.res.sync.SpSyncUdiResponse; import com.glxp.api.res.sync.SpsSyncDeviceTaskResponse; +import com.glxp.api.res.sync.SpsSyncDrugDataTaskResponse; import com.glxp.api.res.sync.SpsSyncOrderResponse; import com.glxp.api.res.system.SyncDataSetResponse; import com.glxp.api.service.basic.*; +import com.glxp.api.service.collect.RelCodeBatchService; +import com.glxp.api.service.collect.RelCodeDetailService; import com.glxp.api.service.dev.*; import com.glxp.api.service.inout.*; import com.glxp.api.service.inout.impl.IoCodeService; @@ -61,6 +66,7 @@ import java.io.FileWriter; import java.io.IOException; import java.util.*; import java.util.function.Function; +import java.util.stream.Collectors; import static com.glxp.api.constant.BasicProcessStatus.NEW_ALL_ORDER; import static com.glxp.api.constant.BasicProcessStatus.NEW_ALL_UDIS; @@ -274,6 +280,11 @@ public class SpsSyncDownloadService { , x -> x.generateProBusFile(info, now, false, syncTime) ,x -> x.generateProBusFile(info, now, true, syncTime)); break; + case DRUG_DATA_TASK: + basicExportInfoCreate(exportType,syncTime,now + , x -> x.generateDrugDataFile(info, now, false, syncTime) + ,x -> x.generateDrugDataFile(info, now, true, syncTime)); + break; } } @@ -1300,6 +1311,85 @@ public class SpsSyncDownloadService { return false; } } + + @Resource + RelCodeBatchService relCodeBatchService; + @Resource + RelCodeDetailService relCodeDetailService; + + // 药品关联信息 generateDrugDataFile + protected boolean generateDrugDataFile(SyncDataSetResponse info, Date now, boolean createFile, Date syncTime) { + BasicExportTypeEnum exportType = BasicExportTypeEnum.DRUG_DATA_TASK; + //文件数据 + Map jsonMap = new WeakHashMap<>(4); + List syncFiles = new ArrayList<>(); + Map> totalTimeMap = new WeakHashMap<>(10); + StringBuffer remark = new StringBuffer(); + Map syncTimeMap = new WeakHashMap<>(3); + syncTimeMap.put("isNew", true); + boolean ge = false; + if (syncTime != null) { + ge = true; + } + try { + //确认有开启报修设备管理信息由外向内同步 + if (needExec(info.getDrugDataTask())) { + Map map = basicExportStatusTimeInfo(now, BasicExportStatusTimeEnum.DRUG_DATA_TASK, createFile); + totalTimeMap.put(BasicExportStatusTimeEnum.DRUG_DATA_TASK, map); + SpsSyncDrugDataTaskResponse dataResponse = null; + + List relCodeBatches = relCodeBatchService.list(Wrappers.lambdaQuery(RelCodeBatch.class) + .le(!ge && (boolean) map.get("isNew"), RelCodeBatch::getUpdateTime, now) + .between(ge, RelCodeBatch::getUpdateTime, syncTime, now) + .between(!ge && !(boolean) map.get("isNew"), RelCodeBatch::getUpdateTime + , map.get("oldDate"), now) + ); + if (CollectionUtil.isNotEmpty(relCodeBatches)) { + dataResponse = new SpsSyncDrugDataTaskResponse(); + dataResponse.setRelCodeBatches(relCodeBatches); + + //增加明细数据 + List batchIds = relCodeBatches.stream().map(RelCodeBatch::getId).collect(Collectors.toList()); + List list = relCodeDetailService.list(Wrappers.lambdaQuery(RelCodeDetail.class) + .in(RelCodeDetail::getBatchIdFk,batchIds)); + dataResponse.setRelCodeDetails(list); + + jsonMap.put(SpsSyncDrugDataTaskResponse.class.getSimpleName(), dataResponse); + remark.append("药品关联信息任务:").append(relCodeBatches.size()).append("条\n"); + } + + } + if (jsonMap.size() > 0) { + jsonMap.put(SYNC_REMARK, remark.toString()); + if (!createFile) { + return true; + } + try { + String fileFullPath = writeFile(filePath, exportType.getRemark(), JsonUtils.toJsonString(jsonMap)); + try { + //修改任务数据 + boolean update = updateExportStatus(exportType, fileFullPath, remark.toString()); + } catch (Exception e) { + // 异常回滚 + this.exportTimeRollback(totalTimeMap, exportType, fileFullPath); + } +// SocketMsgEntity socketMsgEntity = SocketMsgEntity.builder().type(SocketMsgType.STAT_DATA_REQUEST).remark("下载生产企业信息").build(); + SocketMsgEntity socketMsgEntity = SocketMsgEntity.builder().type(SocketMsgType.DL_ALL_DATA).remark("下载药品关联信息").build(); + spsSyncWebSocket.sendMessage(socketMsgEntity, "1:" + socketToken); + return true; + } catch (IOException e) { + logger.error(String.format("syncIdcSps----process------------生成[%s]文件及更改库操作异常,异常信息<%s>" + , exportType.getRemark(), e.getMessage())); + // 异常回滚 + this.exportTimeRollback(totalTimeMap, exportType, null); + } + } + return false; + } catch (Exception e) { + logger.error(e.getMessage()); + return false; + } + } /** * 插入 basicExportStatusTime表 *