Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManager.java =================================================================== diff -u -r15591 -r16685 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManager.java (.../ImageFileManager.java) (revision 15591) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManager.java (.../ImageFileManager.java) (revision 16685) @@ -67,4 +67,12 @@ * @param ThumbnailFileName 缩略图 的文件名 包含后缀 */ public void SaveToThumbnail(byte[] img,String originalAbsoultFilePaht,String ThumbnailFileName); + /** + * 给对象添加图片。由UploadImageFileAction中的代码重构得来,pda端也有调用(通过servlet调用) + * @param uploadImageList + * @param objectType + * @param objectID + * @return + */ + public boolean saveImageFile(List uploadImageList,String objectType,String objectID); } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/action/UploadImageFileAction.java =================================================================== diff -u -r16681 -r16685 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/action/UploadImageFileAction.java (.../UploadImageFileAction.java) (revision 16681) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/action/UploadImageFileAction.java (.../UploadImageFileAction.java) (revision 16685) @@ -39,6 +39,7 @@ import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.StrutsResponseUtils; import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.json.JSONUtil; import com.opensymphony.xwork2.Preparable; /** @@ -154,12 +155,11 @@ public void uploadImage() { objectID = StrutsParamUtils.getPraramValue("objectId", null); objectType = StrutsParamUtils.getPraramValue("imageType", null); - boolean success = true; - String msg = "上传成功!"; + JSONObject json = JSONUtil.buildJsonObject(true, "上传成功!"); boolean isSavePathExist = supplyRoomConfigManager.isSavePathExist(); if (isSavePathExist == false) { - success = false; - msg = "文件保存目录不存在."; + JSONUtil.addSuccess(json, false); + JSONUtil.addMessage(json, "文件保存目录不存在."); } try { if (StringUtils.isNotBlank(objectID) @@ -206,100 +206,19 @@ } } } - // 图片关联记录(图片上传模式:一次上传3张图片,请求三次action) - if (ImageFile.IMAGE_TYPE_TOUSSE.equals(objectType) - || ImageFile.IMAGE_TYPE_SPECIFICATION - .equals(objectType)) { - TousseDefinition tousse = tousseDefinitionManager - .getTousseDefinitionById(objectID); - if (tousse != null) { - - for (ImageFile imageFile : uploadImageList) { - imageFileManager.setImageFileOrder(imageFile); - - imageFile.setTousseDefinition_id(tousse.getId()); - - imageFileManager.saveImage(imageFile); - } - tousse.setIsUploadImage("是"); - - objectDao.saveOrUpdate(tousse); - } - } else if (ImageFile.IMAGE_TYPE_MATERIAL.equals(objectType)) { - MaterialDefinition material = materialDefinitionManager - .getMaterialDefinitionById(objectID); - if (material != null) { - - for (ImageFile imageFile : uploadImageList) { - imageFileManager.setImageFileOrder(imageFile); - - imageFile - .setMaterialDefinition_id(material.getId()); - - imageFileManager.saveImage(imageFile); - } - material.setIsUploadImage("是"); - objectDao.saveOrUpdate(material); - } - } else if (ImageFile.IMAGE_TYPE_TOUSSEPACKING - .equals(objectType)) { - TousseDefinition tousse = tousseDefinitionManager - .getTousseDefinitionById(objectID); - if (tousse != null) { - for (ImageFile imageFile : uploadImageList) { - imageFileManager.setImageFileOrder(imageFile); - imageFile.setToussePackingTeaching_id(tousse - .getId()); - - imageFileManager.saveImage(imageFile); - - } - - } - } else if (ImageFile.IMAGE_TYPE_QUALITYMONITORING - .equals(objectType)) { - QualityMonitoringInstance qualityMonitor = (QualityMonitoringInstance) objectDao - .getByProperty(QualityMonitoringInstance.class - .getSimpleName(), "id", Long - .valueOf(objectID)); - if (qualityMonitor != null) { - List imageFileList = qualityMonitor - .getImages(); - if (imageFileList.size() == 0) { - imageFileList = new ArrayList(); - } - for (ImageFile imageFile : uploadImageList) { - imageFileManager.setImageFileOrder(imageFile); - imageFileManager.saveImage(imageFile); - imageFileList.add(imageFile); - } - qualityMonitor.setImages(imageFileList); - objectDao.saveOrUpdate(qualityMonitor); - } - } else if (ImageFile.IMAGE_TYPE_STAFFARCHIVE.equals(objectType)) { - for (ImageFile imageFile : uploadImageList) { - imageFileManager.saveImage(imageFile); - } - } else if (ImageFile.IMAGE_TYPE_STERILIZATION - .equals(objectType)) { - for (ImageFile imageFile : uploadImageList) { - imageFileManager.setImageFileOrder(imageFile); - imageFileManager.saveImage(imageFile); - } - } else { - success = false; - msg = "对不起,请先保存质量监测记录后再上传图片!"; + if(!imageFileManager.saveImageFile(uploadImageList,objectType,objectID)){ + JSONUtil.addSuccess(json, false); + JSONUtil.addMessage(json, "对不起,请先保存质量监测记录后再上传图片!"); } } } catch (Throwable e) { e.printStackTrace(); - success = false; - msg = e.getMessage(); + JSONUtil.addSuccess(json, false); + JSONUtil.addMessage(json, e.getMessage()); } - StrutsResponseUtils.output(success, msg); + StrutsResponseUtils.output(json); } - public void deleteImageFile(){ String id = StrutsParamUtils.getPraramValue("id", null); ImageFile image = imageFileManager.getImageFileById(id); Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/servlet/UploadServlet.java =================================================================== diff -u -r15591 -r16685 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/servlet/UploadServlet.java (.../UploadServlet.java) (revision 15591) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/servlet/UploadServlet.java (.../UploadServlet.java) (revision 16685) @@ -2,6 +2,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -23,12 +24,14 @@ import org.apache.commons.lang.ArrayUtils; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; +import com.forgon.disinfectsystem.entity.basedatamanager.imagefilemanager.ImageFile; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecordPic; import com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.service.SterilizationRecordManager; import com.forgon.disinfectsystem.tousse.imagefilemanager.service.ImageFileManager; import com.forgon.tools.Path; import com.forgon.tools.SpringBeanManger; +import com.forgon.tools.string.StringTools; public class UploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; @@ -47,6 +50,9 @@ .getBean("imageFileManager"); } + public static final String PHOTO_TYPE_STERILE_RECORD = "sterileRecord"; + public static final String PHOTO_TYPE_STERILE_MONITOR = "sterileMonitor"; + @Override @SuppressWarnings("unchecked") protected void doPost(HttpServletRequest request, @@ -56,6 +62,7 @@ response.setContentType("text/html;charset=UTF-8"); // 设置Content-Type字段值 PrintWriter out = response.getWriter(); String sterileRecordId = request.getParameter("sterileRecordId"); + String photoType = request.getParameter("photoType"); //灭菌记录或者生物监测 // 下面的代码开始使用Commons-UploadFile组件处理上传的文件数据 FileItemFactory factory = new DiskFileItemFactory(); // 建立FileItemFactory对象 ServletFileUpload upload = new ServletFileUpload(factory); @@ -118,69 +125,69 @@ picData = outputStream.toByteArray(); } Long id = Long.valueOf(sterileRecordId); - if (SupplyRoomConfig.SAVE_IN_LOCAL_FILE.equals(method)) {// 保存到文件系统 - if (!filename.equals("")) { - // 用FileOutputStream打开服务端的上传文件 - if(ArrayUtils.isNotEmpty(picData)){ - FileOutputStream fos = new FileOutputStream(filename); - fos.write(picData, 0, picData.length); // 向服务端文件写入字节流 - fos.close(); // 关闭FileOutputStream对象 - - // 生成缩略图 - String thumbnailImageName = UUID.randomUUID().toString() + ".jpg"; - imageFileManager.SaveToThumbnail(picData, filename, thumbnailImageName); - // 保存记录到数据库 - SterilizationRecordPic pic = new SterilizationRecordPic(); - pic.setFilePath(filename); - pic.setThumbnailFileName(thumbnailImageName); - Collection picList = new ArrayList(); - picList.add(pic); - - if (id != null){ - sterilizationRecordManager.saveRecordPicture(id, picList, - ""); - } - } - } - }else if(SupplyRoomConfig.SAVE_IN_DATABASE.equals(method)){// 保存到数据库 + if(PHOTO_TYPE_STERILE_MONITOR.equals(photoType)){ + //生物监测照片 + List uploadImageList = new ArrayList<>(); + ImageFile imageFile = new ImageFile(); + imageFile.setImage(picData); + imageFile.setImageName(ff.getName()); + imageFile.setImageType(ImageFile.IMAGE_TYPE_STERILIZATION); + imageFile.setObjectId(sterileRecordId); + uploadImageList.add(imageFile); - if (id != null && ArrayUtils.isNotEmpty(picData)) { + imageFileManager.saveImageFile(uploadImageList, ImageFile.IMAGE_TYPE_STERILIZATION, sterileRecordId); + }else{ + //灭菌记录照片 + saveSterileRecordPic(method, filename, picData, id); + } + } catch (Exception e) { + } + } + /** + * 保存灭菌记录图片 + * @param method + * @param filename + * @param picData + * @param id + * @throws FileNotFoundException + * @throws IOException + */ + private void saveSterileRecordPic(String method, String filename, + byte[] picData, Long id) throws FileNotFoundException, IOException { + if (SupplyRoomConfig.SAVE_IN_LOCAL_FILE.equals(method)) {// 保存到文件系统 + if (!filename.equals("")) { + // 用FileOutputStream打开服务端的上传文件 + if(ArrayUtils.isNotEmpty(picData)){ + FileOutputStream fos = new FileOutputStream(filename); + fos.write(picData, 0, picData.length); // 向服务端文件写入字节流 + fos.close(); // 关闭FileOutputStream对象 + + // 生成缩略图 + String thumbnailImageName = UUID.randomUUID().toString() + ".jpg"; + imageFileManager.SaveToThumbnail(picData, filename, thumbnailImageName); + // 保存记录到数据库 SterilizationRecordPic pic = new SterilizationRecordPic(); - pic.setPicture(picData); + pic.setFilePath(filename); + pic.setThumbnailFileName(thumbnailImageName); Collection picList = new ArrayList(); picList.add(pic); - sterilizationRecordManager.saveRecordPicture(id, picList, - ""); + + if (id != null){ + sterilizationRecordManager.saveRecordPicture(id, picList, + ""); + } } } - // 开始上传文件 -// if (!filename.equals("")) { -// // 用FileOutputStream打开服务端的上传文件 -// FileOutputStream fos = new FileOutputStream(filename); -// ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream(); -// byte[] buffer = new byte[8192]; // 每次读8K字节 -// int count = 0; -// // 开始读取上传文件的字节,并将其输出到服务端的上传文件输出流中 -// while ((count = is.read(buffer)) > 0) { -// fos.write(buffer, 0, count); // 向服务端文件写入字节流 -// arrayOutputStream.write(buffer, 0, count); -// } -// fos.close(); // 关闭FileOutputStream对象 -// is.close(); // InputStream对象 -// Long id = Long.valueOf(sterileRecordId); -// byte[] picData = arrayOutputStream.toByteArray(); -// if (id != null -// && ArrayUtils.isNotEmpty(picData)) { -// SterilizationRecordPic pic = new SterilizationRecordPic(); -// pic.setPicture(picData); -// Collection picList = new ArrayList(); -// picList.add(pic); -// sterilizationRecordManager.saveRecordPicture(id, picList, -// ""); -// out.println("OK"); -// } -// } - } catch (Exception e) { + }else if(SupplyRoomConfig.SAVE_IN_DATABASE.equals(method)){// 保存到数据库 + + if (id != null && ArrayUtils.isNotEmpty(picData)) { + SterilizationRecordPic pic = new SterilizationRecordPic(); + pic.setPicture(picData); + Collection picList = new ArrayList(); + picList.add(pic); + sterilizationRecordManager.saveRecordPicture(id, picList, + ""); + } } } } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManagerImpl.java =================================================================== diff -u -r15591 -r16685 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManagerImpl.java (.../ImageFileManagerImpl.java) (revision 15591) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManagerImpl.java (.../ImageFileManagerImpl.java) (revision 16685) @@ -14,6 +14,7 @@ import java.io.IOException; import java.io.OutputStream; import java.net.URLEncoder; +import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -31,7 +32,12 @@ import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.common.geom.SizeAndPosition; import com.forgon.disinfectsystem.entity.basedatamanager.imagefilemanager.ImageFile; +import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; +import com.forgon.disinfectsystem.entity.qualitymonitoringmanager.qualitymonitoring.QualityMonitoringInstance; +import com.forgon.disinfectsystem.tousse.materialdefinition.service.MaterialDefinitionManager; +import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.util.FileUtils; @@ -51,6 +57,10 @@ private ObjectDao objectDao; private SupplyRoomConfigManager supplyRoomConfigManager; + + private TousseDefinitionManager tousseDefinitionManager; + + private MaterialDefinitionManager materialDefinitionManager; public void setSupplyRoomConfigManager( SupplyRoomConfigManager supplyRoomConfigManager) { @@ -61,6 +71,16 @@ this.objectDao = objectDao; } + public void setTousseDefinitionManager( + TousseDefinitionManager tousseDefinitionManager) { + this.tousseDefinitionManager = tousseDefinitionManager; + } + + public void setMaterialDefinitionManager( + MaterialDefinitionManager materialDefinitionManager) { + this.materialDefinitionManager = materialDefinitionManager; + } + @Override public ImageFile getImageFileById(String id) { if (StringUtils.isNotBlank(id)) { @@ -633,4 +653,94 @@ return image; } + + @Override + public boolean saveImageFile(List uploadImageList, + String objectType, String objectID) { + boolean ret = true; + // 图片关联记录(图片上传模式:一次上传3张图片,请求三次action) + if (ImageFile.IMAGE_TYPE_TOUSSE.equals(objectType) + || ImageFile.IMAGE_TYPE_SPECIFICATION + .equals(objectType)) { + TousseDefinition tousse = tousseDefinitionManager + .getTousseDefinitionById(objectID); + if (tousse != null) { + + for (ImageFile imageFile : uploadImageList) { + setImageFileOrder(imageFile); + + imageFile.setTousseDefinition_id(tousse.getId()); + + saveImage(imageFile); + } + tousse.setIsUploadImage("是"); + + objectDao.saveOrUpdate(tousse); + } + } else if (ImageFile.IMAGE_TYPE_MATERIAL.equals(objectType)) { + MaterialDefinition material = materialDefinitionManager + .getMaterialDefinitionById(objectID); + if (material != null) { + + for (ImageFile imageFile : uploadImageList) { + setImageFileOrder(imageFile); + + imageFile + .setMaterialDefinition_id(material.getId()); + + saveImage(imageFile); + } + material.setIsUploadImage("是"); + objectDao.saveOrUpdate(material); + } + } else if (ImageFile.IMAGE_TYPE_TOUSSEPACKING + .equals(objectType)) { + TousseDefinition tousse = tousseDefinitionManager + .getTousseDefinitionById(objectID); + if (tousse != null) { + for (ImageFile imageFile : uploadImageList) { + setImageFileOrder(imageFile); + imageFile.setToussePackingTeaching_id(tousse + .getId()); + + saveImage(imageFile); + + } + + } + } else if (ImageFile.IMAGE_TYPE_QUALITYMONITORING + .equals(objectType)) { + QualityMonitoringInstance qualityMonitor = (QualityMonitoringInstance) objectDao + .getByProperty(QualityMonitoringInstance.class + .getSimpleName(), "id", Long + .valueOf(objectID)); + if (qualityMonitor != null) { + List imageFileList = qualityMonitor + .getImages(); + if (imageFileList.size() == 0) { + imageFileList = new ArrayList(); + } + for (ImageFile imageFile : uploadImageList) { + setImageFileOrder(imageFile); + saveImage(imageFile); + imageFileList.add(imageFile); + } + qualityMonitor.setImages(imageFileList); + objectDao.saveOrUpdate(qualityMonitor); + } + } else if (ImageFile.IMAGE_TYPE_STAFFARCHIVE.equals(objectType)) { + for (ImageFile imageFile : uploadImageList) { + saveImage(imageFile); + } + } else if (ImageFile.IMAGE_TYPE_STERILIZATION + .equals(objectType)) { + for (ImageFile imageFile : uploadImageList) { + setImageFileOrder(imageFile); + saveImage(imageFile); + } + } else { + ret = false; + } + return ret; + } }