Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/action/UploadImageAndVideoAction.java =================================================================== diff -u -r40682 -r40994 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/action/UploadImageAndVideoAction.java (.../UploadImageAndVideoAction.java) (revision 40682) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/action/UploadImageAndVideoAction.java (.../UploadImageAndVideoAction.java) (revision 40994) @@ -35,6 +35,8 @@ import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.videomanager.VideoFile; +import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; +import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecordPic; import com.forgon.disinfectsystem.tousse.imagefilemanager.service.ImageFileManager; import com.forgon.disinfectsystem.tousse.videomanager.service.VideoFileManager; import com.forgon.exception.SystemException; @@ -129,8 +131,12 @@ try { int totalBytes = request.getContentLength(); datas = new byte[totalBytes]; - imageType = URLDecoder.decode(imageType,"UTF-8"); - videoType = URLDecoder.decode(videoType,"UTF-8"); + if(StringUtils.isNotBlank(imageType)){ + imageType = URLDecoder.decode(imageType,"UTF-8"); + } + if(StringUtils.isNotBlank(videoType)){ + videoType = URLDecoder.decode(videoType,"UTF-8"); + } inStream = request.getInputStream(); DataInputStream dataInputStream = new DataInputStream(inStream); dataInputStream.readFully(datas); @@ -213,20 +219,25 @@ //生成视频预览图 renderPreviewPic(uploadVideoList, savePath); - //生成图片名称:关联对象的名称+日期+时间(精确到秒)+流水号,例如:开胸包20211220812211.png、直剪【大】20211220812213.png - generateImageFileName(uploadImageList, imageType, objectId); //【配包教学视频】生成视频名称 generateVideoFileName(uploadVideoList, videoType, objectId); - // 保存图片记录到数据库 String imageIds = ""; - if(!imageFileManager.saveImageFile(uploadImageList, imageType, objectId)){ - imageFileManager.batchSaveImage(uploadImageList); + // 保存图片记录到数据库 + if(StringUtils.equals("灭菌记录图片", imageType)){ + //保存灭菌记录图片SterilizationRecordPic + uploadSterilizationRecordPic(uploadImageList, objectId); + }else{ + //生成图片名称:关联对象的名称+日期+时间(精确到秒)+流水号,例如:开胸包20211220812211.png、直剪【大】20211220812213.png + generateImageFileName(uploadImageList, imageType, objectId); + if(!imageFileManager.saveImageFile(uploadImageList, imageType, objectId)){ + imageFileManager.batchSaveImage(uploadImageList); + } + for (int i = 0; i < uploadImageList.size(); i++) { + ImageFile imageFile = uploadImageList.get(i); + imageIds = StringTools.uniteTwoStringBySemicolon(imageIds, imageFile.getId().toString(), ","); + } } - for (int i = 0; i < uploadImageList.size(); i++) { - ImageFile imageFile = uploadImageList.get(i); - imageIds = StringTools.uniteTwoStringBySemicolon(imageIds, imageFile.getId().toString(), ","); - } // 保存视频记录到数据库 String videoIds = ""; @@ -264,6 +275,92 @@ } /** + * 保存灭菌记录图片 + * @param uploadImageList 上传的图片 + * @param sterilizationRecordId 灭菌记录id + */ + private void uploadSterilizationRecordPic(List uploadImageList, String sterilizationRecordId) { + SterilizationRecord sterilizationRecord = (SterilizationRecord) objectDao.getById(SterilizationRecord.class.getSimpleName(), sterilizationRecordId); + if(sterilizationRecord == null){ + throw new SystemException("灭菌记录id无效!"); + } + //上传灭菌记录图片 + List sterilizationRecordPicList = saveSterilizationRecordPic(uploadImageList, sterilizationRecord); + List dbSterilizationRecordPicList = sterilizationRecord.getRecordPictures(); + if(dbSterilizationRecordPicList == null){ + dbSterilizationRecordPicList = new ArrayList(); + } + dbSterilizationRecordPicList.addAll(sterilizationRecordPicList); + objectDao.saveOrUpdate(sterilizationRecord); + } + + /** + * 上传灭菌记录图片 + * @param uploadImageList 上传的图片 + * @param sterilizationRecord 灭菌记录 + * @return 上传的灭菌记录图片记录 + */ + private List saveSterilizationRecordPic(List uploadImageList, SterilizationRecord sterilizationRecord) { + if(CollectionUtils.isEmpty(uploadImageList)){ + throw new SystemException("上传的图片不能为空!"); + } + if(sterilizationRecord == null){ + throw new SystemException("灭菌记录不能为空!"); + } + List uploadSterilizationRecordPicList = new ArrayList(); + for (ImageFile imageFile : uploadImageList) { + SterilizationRecordPic sterilizationRecordPic = new SterilizationRecordPic(); + byte[] picData = imageFile.getImage(); + if (supplyRoomConfigManager.getSystemParamsObj().saveImageLocal()) {// 保存到文件系统 + /*if(StringUtils.isBlank(filename)){ + throw new SystemException("文件名不能为空"); + }*/ + String UUIDCode = UUID.randomUUID().toString(); + //UUID+后缀名作为原图名称 + String UUIDImageName = UUIDCode + "_灭菌记录图片.png"; + FileOutputStream fos = null; + try { + String saveImagePath = supplyRoomConfigManager.getSystemParamsObj().getSaveImagePath(); + if(StringUtils.isNotBlank(saveImagePath)){ + String sterileImageDir = saveImagePath + SterilizationRecordPic.PATH_STERILE_IMAGE; + File file = new File(sterileImageDir); + if (!file.exists()) { + file.mkdirs(); + } + UUIDImageName = sterileImageDir + UUIDImageName; + } + fos = new FileOutputStream(UUIDImageName); + fos.write(picData, 0, picData.length); // 向服务端文件写入字节流 + } catch (IOException e) { + e.printStackTrace(); + } finally { + if(fos != null){ + try { + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + // 生成缩略图,UUID+文件名称 作为缩略图名称 + String thumbnailImageName = UUIDCode + "_灭菌记录图片_缩略图.png"; + imageFileManager.SaveToThumbnail(picData, UUIDImageName, thumbnailImageName); + // 保存记录到数据库 + sterilizationRecordPic.setFilePath(UUIDImageName); + sterilizationRecordPic.setThumbnailFileName(thumbnailImageName); + }else if(supplyRoomConfigManager.getSystemParamsObj().saveImageDataBase()){// 保存到数据库 + sterilizationRecordPic.setPicture(picData); + }else{ + throw new SystemException("图片保存方式设置错误,请到科室供应室设置中进行配置"); + } + objectDao.saveOrUpdate(sterilizationRecordPic); + uploadSterilizationRecordPicList.add(sterilizationRecordPic); + } + return uploadSterilizationRecordPicList; + } + + /** * 生成视频预览图 * @param uploadVideoList * @param savePath