Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/action/UploadImageFileAction.java =================================================================== diff -u -r28043 -r28313 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/action/UploadImageFileAction.java (.../UploadImageFileAction.java) (revision 28043) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/action/UploadImageFileAction.java (.../UploadImageFileAction.java) (revision 28313) @@ -10,6 +10,8 @@ import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; +import java.sql.ResultSet; +import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Base64; @@ -18,6 +20,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -40,6 +43,7 @@ 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.basedatamanager.videomanager.VideoFile; import com.forgon.disinfectsystem.tousse.imagefilemanager.service.ImageFileManager; import com.forgon.disinfectsystem.tousse.materialdefinition.service.MaterialDefinitionManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; @@ -514,8 +518,9 @@ if (file.exists()) { file.delete(); } + String objectId = image.getObjectId(); imageFileManager.deleteImageFile(image); - tousseDefinitionManager.updateImageUploadStatus(id, + tousseDefinitionManager.updateImageUploadStatus(objectId, image.getImageType()); } } catch (Exception e) { @@ -577,41 +582,67 @@ } /** - * 检查器械包定义和材料定义的异常图片(包定义图片、装配教学图片、说明书图片、材料图片)(只检查存储到文件夹中的图片) + * 检查器械包定义和材料定义的异常图片(包定义图片、装配教学图片、说明书图片、清洗操作指引图片、配包教学视频 + * 材料图片、清洗质量检查关注点图片、材料清洗质量检查方法图片、材料功能检查图片)(只检查存储到文件夹中的图片) */ + @SuppressWarnings("unchecked") public void checkImageFiles(){ try { - String sql = String.format(" where po.imageType in ('%s','%s','%s','%s') and po.image is null ", + String sql = String.format(" where po.imageType in ('%s','%s','%s','%s','%s','%s','%s','%s') and po.image is null order by po.objectId ", ImageFile.IMAGE_TYPE_TOUSSE, ImageFile.IMAGE_TYPE_TOUSSEPACKING, - ImageFile.IMAGE_TYPE_SPECIFICATION, ImageFile.IMAGE_TYPE_MATERIAL); + ImageFile.IMAGE_TYPE_SPECIFICATION, ImageFile.IMAGE_TYPE_TOUSSE_WASHGUIDE, + ImageFile.IMAGE_TYPE_MATERIAL, + ImageFile.IMAGE_TYPE_MATERIAL_WASHQUALITYCHECKPOINT, + ImageFile.IMAGE_TYPE_MATERIAL_WASHQUALITYCHECKMETHOD, + ImageFile.IMAGE_TYPE_MATERIAL_FUNCTIONCHECK); List tdAndMDImageList = imageFileManager.getImageFileBySql(sql); + + String videoSql = String.format(" where po.videoType in ('%s')", VideoFile.VIDEO_TYPE_TOUSSE); + List tdVideoList = (List) objectDao.findBySql(VideoFile.class.getSimpleName(), videoSql); + + // 记录检查到的数据库有图片记录的器械包定义Id + Set tousseIdSet = new HashSet(); + int tdImageSize = 0; + int toussePackImageSize = 0; + int specificationImageSize = 0; + int washGuideImageSize = 0; + + Set materialIdSet = new HashSet(); + int mdImageSize = 0; + int washQuanlityCheckPointImageSize = 0; + int washQuanlityCheckMethodImageSize = 0; + int functionCheckImageSize = 0; // 器械包定义id关联错误图片的map Map> tdIdToErrorOriginalMap = new LinkedHashMap>(); Map> tdIdToErrorThumbnailMap = new LinkedHashMap>(); + // 器械包定义id关联错误视频的map + Map> tdIdToErrorVideoMap = new LinkedHashMap>(); // 材料定义id关联错误图片的map Map> mdIdToErrorOriginalMap = new LinkedHashMap>(); Map> mdIdToErrorThumbnailMap = new LinkedHashMap>(); - // 数据库ImageFile表记录的图片名称 - List originalImageNameListDB = new ArrayList(); - List thumbnailImageNameListDB = new ArrayList(); - // 文件夹下的图片名称--去除后缀 List simpleOriginalImageNameListFS = new ArrayList(); List simpleThumbnailImageNameListFS = new ArrayList(); + // 文件夹下的视频名称--去除后缀 + List simplePackingTeacherVideoNameListFS = new ArrayList(); // 文件夹下的图片名称--包含后缀(方便显示) List originalImageNameListFS = new ArrayList(); List thumbnailImageNameListFS = new ArrayList(); + List packingTeacherVideoNameListFS = new ArrayList(); SupplyRoomConfig systemParamsObj = supplyRoomConfigManager .getSystemParamsObj(); String saveImagePath = systemParamsObj.getSaveImagePath();// 默认的保存路径 String originalPath = saveImagePath + "\\original"; String thumbnailPath = saveImagePath + "\\thumbnail"; + String packingTeacherVideoPath = saveImagePath + VideoFile.VIDEO_PATH_TOUSSE; // 获取图片文件夹下的图片文件名称 String[] originalArray = new File(originalPath).list(); String[] thumbnailArray= new File(thumbnailPath).list(); + // 获取配包教学视频文件名称 + String[] packingTeacherVideoArray= new File(packingTeacherVideoPath).list(); if(originalArray == null || (originalArray != null && originalArray.length == 0)){ throw new RuntimeException("图片文件夹为空:" + originalPath); } @@ -632,6 +663,13 @@ simpleThumbnailImageNameListFS.add(thumbnail.contains(".") ? thumbnail.substring(0, thumbnail.lastIndexOf(".")) : thumbnail); } } + if(packingTeacherVideoArray != null){ + for(int i=0;i errorOriginalList = mdIdToErrorOriginalMap.get(image.getObjectId()); - if(errorOriginalList == null){ - errorOriginalList = new ArrayList(); - } - errorOriginalList.add(image); - mdIdToErrorOriginalMap.put(image.getObjectId(), errorOriginalList); - } + // 材料图片、材料清洗质量检查方法图片、材料清洗质量检查关注点图片、材料功能检查图片 + if(StringUtils.equals(image.getImageType(), ImageFile.IMAGE_TYPE_MATERIAL) + || StringUtils.equals(image.getImageType(), ImageFile.IMAGE_TYPE_MATERIAL_WASHQUALITYCHECKMETHOD) + || StringUtils.equals(image.getImageType(), ImageFile.IMAGE_TYPE_MATERIAL_WASHQUALITYCHECKPOINT) + || StringUtils.equals(image.getImageType(), ImageFile.IMAGE_TYPE_MATERIAL_FUNCTIONCHECK)){ + // 材料定义数量统计,只统计imageFile表中的ObjectId + materialIdSet.add(image.getObjectId()); + + // 各种类型的器械包图片数量统计 + if(StringUtils.equals(image.getImageType(), ImageFile.IMAGE_TYPE_MATERIAL)){ + mdImageSize++; + } else if(StringUtils.equals(image.getImageType(), ImageFile.IMAGE_TYPE_MATERIAL_WASHQUALITYCHECKMETHOD)){ + washQuanlityCheckMethodImageSize++; + } else if(StringUtils.equals(image.getImageType(), ImageFile.IMAGE_TYPE_MATERIAL_WASHQUALITYCHECKPOINT)){ + washQuanlityCheckPointImageSize++; + } else if(StringUtils.equals(image.getImageType(), ImageFile.IMAGE_TYPE_MATERIAL_FUNCTIONCHECK)){ + functionCheckImageSize++; } - - if(CollectionUtils.isNotEmpty(simpleThumbnailImageNameListFS)){ - if(!simpleThumbnailImageNameListFS.contains(thumbnail)){ - List errorThumbnailList = mdIdToErrorThumbnailMap.get(image.getObjectId()); - if(errorThumbnailList == null){ - errorThumbnailList = new ArrayList(); - } - errorThumbnailList.add(image); - mdIdToErrorThumbnailMap.put(image.getObjectId(), errorThumbnailList); - } - } - continue; - } - - // 器械包定义图片、装配教学图片、说明书图片 - if(CollectionUtils.isNotEmpty(simpleOriginalImageNameListFS)){ - if(!simpleOriginalImageNameListFS.contains(original)){ - List errorOriginalList = tdIdToErrorOriginalMap.get(image.getObjectId()); + + if(simpleOriginalImageNameListFS == null || simpleOriginalImageNameListFS.size() == 0 || !simpleOriginalImageNameListFS.contains(original)){ + List errorOriginalList = mdIdToErrorOriginalMap.get(image.getObjectId()); if(errorOriginalList == null){ errorOriginalList = new ArrayList(); } errorOriginalList.add(image); - tdIdToErrorOriginalMap.put(image.getObjectId(), errorOriginalList); + mdIdToErrorOriginalMap.put(image.getObjectId(), errorOriginalList); } - } - if(CollectionUtils.isNotEmpty(simpleThumbnailImageNameListFS)){ - if(!simpleThumbnailImageNameListFS.contains(thumbnail)){ - List errorThumbnailList = tdIdToErrorThumbnailMap.get(image.getObjectId()); + if(simpleThumbnailImageNameListFS == null || simpleThumbnailImageNameListFS.size() == 0 || !simpleThumbnailImageNameListFS.contains(thumbnail)){ + List errorThumbnailList = mdIdToErrorThumbnailMap.get(image.getObjectId()); if(errorThumbnailList == null){ errorThumbnailList = new ArrayList(); } errorThumbnailList.add(image); - tdIdToErrorThumbnailMap.put(image.getObjectId(), errorThumbnailList); + mdIdToErrorThumbnailMap.put(image.getObjectId(), errorThumbnailList); } + continue; } + + // 器械包定义图片、装配教学图片、说明书图片、清洗操作指引图片 + // 器械包定义各类型图片统计 + tousseIdSet.add(image.getObjectId()); + if(StringUtils.equals(image.getImageType(), ImageFile.IMAGE_TYPE_TOUSSE)){ + tdImageSize++; + } else if(StringUtils.equals(image.getImageType(), ImageFile.IMAGE_TYPE_TOUSSE_WASHGUIDE)){ + washGuideImageSize++; + } else if(StringUtils.equals(image.getImageType(), ImageFile.IMAGE_TYPE_TOUSSEPACKING)){ + toussePackImageSize++; + } else if(StringUtils.equals(image.getImageType(), ImageFile.IMAGE_TYPE_SPECIFICATION)){ + specificationImageSize++; + } + + if(simpleOriginalImageNameListFS == null || simpleOriginalImageNameListFS.size() == 0 || !simpleOriginalImageNameListFS.contains(original)){ + List errorOriginalList = tdIdToErrorOriginalMap.get(image.getObjectId()); + if(errorOriginalList == null){ + errorOriginalList = new ArrayList(); + } + errorOriginalList.add(image); + tdIdToErrorOriginalMap.put(image.getObjectId(), errorOriginalList); + } + + if(simpleThumbnailImageNameListFS == null || simpleThumbnailImageNameListFS.size() == 0 || !simpleThumbnailImageNameListFS.contains(thumbnail)){ + List errorThumbnailList = tdIdToErrorThumbnailMap.get(image.getObjectId()); + if(errorThumbnailList == null){ + errorThumbnailList = new ArrayList(); + } + errorThumbnailList.add(image); + tdIdToErrorThumbnailMap.put(image.getObjectId(), errorThumbnailList); + } } } + + if(CollectionUtils.isNotEmpty(tdVideoList)){ + for (VideoFile video : tdVideoList) { + tousseIdSet.add(video.getObjectId()); + String uuidvideoName = video.getUuid_videoName(); + uuidvideoName = uuidvideoName.contains(".") ? uuidvideoName.substring(0, uuidvideoName.lastIndexOf(".")) : uuidvideoName; + if(simplePackingTeacherVideoNameListFS == null || simplePackingTeacherVideoNameListFS.size() == 0 || !simplePackingTeacherVideoNameListFS.contains(uuidvideoName)){ + List errorVideoList = tdIdToErrorVideoMap.get(video.getObjectId()); + if(errorVideoList == null){ + errorVideoList = new ArrayList(); + } + errorVideoList.add(video); + tdIdToErrorVideoMap.put(video.getObjectId(), errorVideoList); + } + } + } // 器械包定义关联图片的map,方便获取包定义信息和图片信息 Map> tdToErrorOriginalMap = new LinkedHashMap>(); Map> tdToErrorThumbnailMap = new LinkedHashMap>(); - List tdIdList1 = new ArrayList(tdIdToErrorOriginalMap.keySet()); - List tdIdList2 = new ArrayList(tdIdToErrorThumbnailMap.keySet()); - Set tdIdSet = new HashSet(); - tdIdSet.addAll(tdIdList1); - tdIdSet.addAll(tdIdList2); + Set tdIdSet = new LinkedHashSet(); + tdIdSet.addAll(tdIdToErrorOriginalMap.keySet()); + tdIdSet.addAll(tdIdToErrorThumbnailMap.keySet()); if(CollectionUtils.isNotEmpty(tdIdSet)){ - String tdSql = String.format(" %s ", SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.id", tdIdSet)); + String tdSql = String.format(" %s order by po.id ", SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.id", tdIdSet)); List tdList = tousseDefinitionManager.getByHql(tdSql); if(CollectionUtils.isNotEmpty(tdList)){ for (TousseDefinition td : tdList) { @@ -720,17 +791,32 @@ } } } + + // 器械包定义关联视频文件的map + Map> tdToErrorVideoMap = new LinkedHashMap>(); + List tdIdList3 = new ArrayList(tdIdToErrorVideoMap.keySet()); + + if(CollectionUtils.isNotEmpty(tdIdList3)){ + String tdSql = String.format(" %s order by po.id ", SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.id", tdIdList3)); + List tdList = tousseDefinitionManager.getByHql(tdSql); + if(CollectionUtils.isNotEmpty(tdList)){ + for (TousseDefinition td : tdList) { + List tempList = tdIdToErrorVideoMap.get(td.getId().toString()); + if(CollectionUtils.isNotEmpty(tempList)){ + tdToErrorVideoMap.put(td, tempList); + } + } + } + } // 材料定义关联图片的map,方便获取材料定义id和名称 Map> mdToErrorOriginalMap = new LinkedHashMap>(); Map> mdToErrorThumbnailMap = new LinkedHashMap>(); - List mdIdList1 = new ArrayList(mdIdToErrorOriginalMap.keySet()); - List mdIdList2 = new ArrayList(mdIdToErrorThumbnailMap.keySet()); - Set mdIdSet = new HashSet(); - mdIdSet.addAll(mdIdList1); - mdIdSet.addAll(mdIdList2); + Set mdIdSet = new LinkedHashSet(); + mdIdSet.addAll(mdIdToErrorOriginalMap.keySet()); + mdIdSet.addAll(mdIdToErrorThumbnailMap.keySet()); if(CollectionUtils.isNotEmpty(mdIdSet)){ - String mdSql = String.format(" %s ", SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.id", mdIdSet)); + String mdSql = String.format(" %s order by po.id ", SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.id", mdIdSet)); List mdList = materialDefinitionManager.getByHql(mdSql); if(CollectionUtils.isNotEmpty(mdList)){ for (MaterialDefinition md : mdList) { @@ -764,33 +850,33 @@ allOriginalImagesDB.add(original.contains(".") ? original.substring(0, original.lastIndexOf(".")) : original); allThumbnailImagesDB.add(thumbnail.contains(".") ? thumbnail.substring(0, thumbnail.lastIndexOf(".")) : thumbnail); } - // 和文件夹图片名称列表对比,如果文件名称不在数据库,就是有问题的图片 - for (String originalFileName : originalImageNameListFS) { - String originalName = originalFileName.contains(".") ? originalFileName.substring(0, originalFileName.lastIndexOf(".")) : originalFileName; - if(!allOriginalImagesDB.contains(originalName)){ - errorOriginalImages.add(originalFileName); - } + } + // 和文件夹图片名称列表对比,如果文件名称不在数据库,就是有问题的图片 + for (String originalFileName : originalImageNameListFS) { + String originalName = originalFileName.contains(".") ? originalFileName.substring(0, originalFileName.lastIndexOf(".")) : originalFileName; + if(!allOriginalImagesDB.contains(originalName)){ + errorOriginalImages.add(originalFileName); } - - for (String thumbnailFileName : thumbnailImageNameListFS) { - String thumbnailName = thumbnailFileName.contains(".") ? thumbnailFileName.substring(0, thumbnailFileName.lastIndexOf(".")) : thumbnailFileName; - if(!allThumbnailImagesDB.contains(thumbnailName)){ - errorThumbnailImages.add(thumbnailFileName); - } + } + + for (String thumbnailFileName : thumbnailImageNameListFS) { + String thumbnailName = thumbnailFileName.contains(".") ? thumbnailFileName.substring(0, thumbnailFileName.lastIndexOf(".")) : thumbnailFileName; + if(!allThumbnailImagesDB.contains(thumbnailName)){ + errorThumbnailImages.add(thumbnailFileName); } } JSONArray errorTousseImageArray = new JSONArray(); SimpleDateFormat sdf = new SimpleDateFormat(DateTools.COMMON_DATE_HMS); - Set tdSet = new HashSet(); - List tdList1 = new ArrayList(tdToErrorOriginalMap.keySet()); - List tdList2 = new ArrayList(tdToErrorThumbnailMap.keySet()); - tdSet.addAll(tdList1); - tdSet.addAll(tdList2); + Set tdSet = new LinkedHashSet(); + tdSet.addAll(tdToErrorOriginalMap.keySet()); + tdSet.addAll(tdToErrorThumbnailMap.keySet()); + tdSet.addAll(tdToErrorVideoMap.keySet()); for (TousseDefinition td : tdSet) { List originnalList = tdToErrorOriginalMap.get(td); List thumbnailList = tdToErrorThumbnailMap.get(td); - if(CollectionUtils.isNotEmpty(originnalList) || CollectionUtils.isNotEmpty(thumbnailList)){ + List videoList = tdToErrorVideoMap.get(td); + if(CollectionUtils.isNotEmpty(originnalList) || CollectionUtils.isNotEmpty(thumbnailList) || CollectionUtils.isNotEmpty(videoList)){ JSONObject tempJSON = new JSONObject(); tempJSON.put("tousseDefinitionID", td.getId()); tempJSON.put("tousseDefinitionName", td.getName()); @@ -826,16 +912,27 @@ } } tempJSON.put("thumbnailImageArray", imageArray); + JSONArray videoArray = new JSONArray(); + if(CollectionUtils.isNotEmpty(videoList)){ + for (VideoFile video : videoList) { + JSONObject videoJson = new JSONObject(); + videoJson.put("id", video.getId()); + videoJson.put("videoType", video.getVideoType()); + videoJson.put("videoName", video.getVideoName() == null ? "" : video.getVideoName()); + videoJson.put("UUIDAndVideoName", video.getUuid_videoName() == null ? "" : video.getUuid_videoName()); + videoJson.put("uploadDateTime", ""); + videoArray.add(videoJson); + } + } + tempJSON.put("videoArray", videoArray); errorTousseImageArray.add(tempJSON); } } JSONArray materialImage = new JSONArray(); Set mdSet = new HashSet(); - List mdList1 = new ArrayList(mdToErrorOriginalMap.keySet()); - List mdList2 = new ArrayList(mdToErrorThumbnailMap.keySet()); - mdSet.addAll(mdList1); - mdSet.addAll(mdList2); + mdSet.addAll(mdToErrorOriginalMap.keySet()); + mdSet.addAll(mdToErrorThumbnailMap.keySet()); for(MaterialDefinition md : mdSet){ List originalImgs = mdToErrorOriginalMap.get(md); List thumbnailImgs = mdToErrorThumbnailMap.get(md); @@ -914,13 +1011,149 @@ errorThumbnailImageArr.add(imageJSON); } } + + // 查询文件夹存在,但是没有数据库记录的视频文件 + List errorVideoFileList = new ArrayList(); + // 数据库视频文件名称(不包含后缀) + List allSimpleVideoNameListDB = new ArrayList(); + List allVideo = objectDao.findAllObjects(VideoFile.class.getSimpleName()); + if(CollectionUtils.isNotEmpty(allVideo)){ + for (VideoFile videoFile : allVideo) { + String name = videoFile.getUuid_videoName(); + if(StringUtils.isNotBlank(name)){ + String simpleName = name.contains(".") ? name.substring(0, name.lastIndexOf(".")) : name; + allSimpleVideoNameListDB.add(simpleName); + } + } + } + // 比较文件系统和数据库记录 + if(CollectionUtils.isNotEmpty(packingTeacherVideoNameListFS)){ + for (String videoName : packingTeacherVideoNameListFS) { + String simpleName = videoName.contains(".") ? videoName.substring(0, videoName.lastIndexOf(".")) : videoName; + if(!allSimpleVideoNameListDB.contains(simpleName)){ + errorVideoFileList.add(videoName); + } + } + } + + // 缩略图片文件夹中,图片文件存在,但是数据库记录不存在的错误图片(追加到缩略图后面) + JSONArray errorVideoArr = new JSONArray(); + if(CollectionUtils.isNotEmpty(errorVideoFileList)){ + for (String videoName : errorVideoFileList) { + JSONObject videoJSON = new JSONObject(); + videoJSON.put("videoName", videoName); + File file = new File(packingTeacherVideoPath + "\\" + videoName); + videoJSON.put("lastModifyTime", ""); + if(file.exists()){ + Calendar cal = Calendar.getInstance(); + long time = file.lastModified(); + cal.setTimeInMillis(time); + videoJSON.put("lastModifyTime", DateTools.formatTime(cal, DateTools.COMMON_DATE_HMS)); + } + errorVideoArr.add(videoJSON); + } + } + errorImage.put("errorOriginalImage", errorOriginalImageArr); errorImage.put("errorThumbnailImage", errorThumbnailImageArr); + errorImage.put("errorVideo", errorVideoArr); + + // 器械包定义"已上传图片属性"和数据库中的记录不一致 + ResultSet rs = null; + Set tdIds = new HashSet(); + JSONArray errorUploadStatusTousse = new JSONArray(); + String sql3 = "select td.id, td.name, td.isUploadImage, img.imageName, img.imageType from TousseDefinition td " + + "left join ImageFile img on img.tousseDefinition_id = td.id " + + "where (td.isUploadImage = '是' and img.imageName is null) " + + "or (td.isUploadImage = '否' and img.imageName is not null) " + + "or (td.isUploadImage is null and img.imageName is not null)"; + try { + rs = objectDao.executeSql(sql3); + while(rs.next()){ + Long id = rs.getLong("id"); + String name = rs.getString("name"); + String isUploadImage = rs.getString("isUploadImage"); + if(!tdIds.contains(id)){ + tdIds.add(id); + tousseIdSet.add(id.toString()); + JSONObject json = new JSONObject(); + json.put("id", id); + json.put("name", name); + json.put("isUploadImage", isUploadImage == null ? "" : isUploadImage); + json.put("isExistImage", "是".equals(isUploadImage) ? "否" : "是"); + errorUploadStatusTousse.add(json); + } + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + + // 材料定义"已上传图片属性"和数据库中的记录不一致 + Set mdIds = new HashSet(); + JSONArray errorUploadStatusMaterial = new JSONArray(); + String sql4 = "select md.id, md.name, md.isUploadImage, md.specification, img.imageName, img.imageType from MaterialDefinition md left join ImageFile img on img.materialDefinition_id = md.id " + + "where (md.isUploadImage = '是' and img.imageName is null) " + + "or (md.isUploadImage = '否' and img.imageName is not null) " + + "or (md.isUploadImage is null and img.imageName is not null)"; + try { + rs = objectDao.executeSql(sql4); + while(rs.next()){ + Long id = rs.getLong("id"); + String name = rs.getString("name"); + String isUploadImage = rs.getString("isUploadImage"); + String specification = rs.getString("specification"); + if(!mdIds.contains(id)){ + mdIds.add(id); + materialIdSet.add(id.toString()); + tdImageSize++; + JSONObject json = new JSONObject(); + json.put("id", id); + json.put("name", name); + json.put("isUploadImage", isUploadImage == null ? "" : isUploadImage); + json.put("specification", specification); + json.put("isExistImage", "是".equals(isUploadImage) ? "否" : "是"); + errorUploadStatusMaterial.add(json); + } + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + JSONObject data = new JSONObject(); data.put("errorTousseImage", errorTousseImageArray); data.put("errorMaterialImage", materialImage); data.put("errorImage", errorImage); + data.put("errorUploadStatusTousse", errorUploadStatusTousse); + data.put("errorUploadStatusMaterial", errorUploadStatusMaterial); + + // 有上传图片的器械包定义数量 + data.put("tousseAmount", tousseIdSet.size()); + // 器械包定义图片数量 + data.put("tdImageSize", tdImageSize); + // 说明书图片数量 + data.put("specificationImageSize", specificationImageSize); + // 清洗指引图片数量 + data.put("washGuideImageSize", washGuideImageSize); + // 装配教学图片数量 + data.put("packTeachImageSize", toussePackImageSize); + // 配包教学视频文件数量 + data.put("packTeachVideoSize", tdVideoList.size()); + + // 有上传图片的材料定义数量 + data.put("materialAmount", materialIdSet.size()); + // 材料图片数量 + data.put("mdImageSize", mdImageSize); + // 清洗质量检查方法图片数量 + data.put("washQuanlityCheckMethodImageSize", washQuanlityCheckMethodImageSize); + // 清洗质量检查关注点图片数量 + data.put("washQuanlityCheckPointImageSize", washQuanlityCheckPointImageSize); + // 功能检查图片数量 + data.put("functionCheckImageSize", functionCheckImageSize); JSONObject json = JSONUtil.buildJsonObject(true, data); StrutsResponseUtils.output(json); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManagerImpl.java =================================================================== diff -u -r28043 -r28313 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManagerImpl.java (.../ImageFileManagerImpl.java) (revision 28043) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManagerImpl.java (.../ImageFileManagerImpl.java) (revision 28313) @@ -1206,4 +1206,21 @@ } } } + + + @Override + public int getTousseDefinitionImageCount(String tousseDefinitionId) { + int count = 0; + if(DatabaseUtil.isPoIdValid(tousseDefinitionId)){ + Session session = objectDao.getHibernateSession(); + Query query = session.createQuery("select count(*) from ImageFile i where i.objectId = :objectId and i.imageType in (:imageTypes)"); + query.setString("objectId", tousseDefinitionId.toString()); + String[] imageTypes = {ImageFile.IMAGE_TYPE_TOUSSE, ImageFile.IMAGE_TYPE_TOUSSEPACKING, ImageFile.IMAGE_TYPE_SPECIFICATION, ImageFile.IMAGE_TYPE_TOUSSE_WASHGUIDE,}; + query.setParameterList("imageTypes", imageTypes); + + Long lcount = (Long)query.uniqueResult(); + count = lcount.intValue(); + } + return count; + } } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r28274 -r28313 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 28274) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 28313) @@ -2348,7 +2348,17 @@ public boolean updateImageUploadStatus(String tousseDefinitionId, String imageType){ boolean result = true; - int count = imageFileManager.getImagesCount(tousseDefinitionId, imageType); + int count = 0; + + if(ImageFile.IMAGE_TYPE_TOUSSE.equals(imageType) + || ImageFile.IMAGE_TYPE_TOUSSEPACKING.equals(imageType) + || ImageFile.IMAGE_TYPE_SPECIFICATION.equals(imageType) + || ImageFile.IMAGE_TYPE_TOUSSE_WASHGUIDE.equals(imageType)){ + // 器械包定义判断是否上传图片要根据多种图片类型进行判断 + count = imageFileManager.getTousseDefinitionImageCount(tousseDefinitionId); + } else { + count = imageFileManager.getImagesCount(tousseDefinitionId, imageType); + } String isUploadImage = "是"; if (count <=0){ Index: ssts-web/src/main/webapp/buttjoint/imageFileCheck.jsp =================================================================== diff -u -r27950 -r28313 --- ssts-web/src/main/webapp/buttjoint/imageFileCheck.jsp (.../imageFileCheck.jsp) (revision 27950) +++ ssts-web/src/main/webapp/buttjoint/imageFileCheck.jsp (.../imageFileCheck.jsp) (revision 28313) @@ -18,15 +18,14 @@ $("#tab1").hide(); $("#tab2").hide(); $("#tab3").hide(); + $("#tab4").hide(); + $("#tab5").hide(); $.ajax({ url: WWWROOT + '/disinfectSystem/baseData/uploadImageFileAction!checkImageFiles.do', type: "post", dataType: "json", success: function(result){ showData(result); - $("#tab1").show(); - $("#tab2").show(); - $("#tab3").show(); }, error: function(msg){ alert("ajax连接异常:"+msg); @@ -44,37 +43,61 @@ var errorMaterialImage = result.data.errorMaterialImage; var errorOriginalImage = result.data.errorImage.errorOriginalImage; var errorThumbnailImage = result.data.errorImage.errorThumbnailImage; + var errorVideo = result.data.errorImage.errorVideo; + var errorUploadStatusTousse = result.data.errorUploadStatusTousse; + var errorUploadStatusMaterial = result.data.errorUploadStatusMaterial; var total = 0; - total = errorTousseImage.length + errorMaterialImage.length + errorOriginalImage.length + errorThumbnailImage.length; - $("#p0").html("包定义的图片健康检查结果:发现" + total + "个问题。"); - $("#p1").html("1、发现" + errorTousseImage.length + "个包定义有问题。问题类型:包定义记录有图片,文件夹内没有图片"); - $("#p2").html("2、发现" + errorMaterialImage.length + "个材料定义有问题。问题类型:材料定义记录有图片,文件夹内没有图片"); - $("#p3").html("3、发现" + (errorOriginalImage.length + errorThumbnailImage.length) + "个孤立的图片。问题类型:文件夹内图片,但没有对应的包定义或者材料定义"); + total = errorTousseImage.length + errorMaterialImage.length + errorOriginalImage.length + errorThumbnailImage.length + errorVideo.length + errorUploadStatusTousse.length + errorUploadStatusMaterial.length; + $("#p0").append("图片健康检查结果:

"); + $("#p0").append("共检查了" + result.data.tousseAmount + "个包定义,"); + $("#p0").append("共有" + result.data.tdImageSize + "个器械包图片,"); + $("#p0").append("" + result.data.specificationImageSize + "个说明书图片,"); + $("#p0").append("" + result.data.washGuideImageSize + "个清洗操作指引图片,"); + $("#p0").append("" + result.data.packTeachImageSize + "个装配教学图片,"); + $("#p0").append("" + result.data.packTeachVideoSize + "个配包教学视频文件。
"); + $("#p0").append("共检查了" + result.data.materialAmount + "个器械材料定义,"); + $("#p0").append("共有" + result.data.mdImageSize + "个材料图片,"); + $("#p0").append("" + result.data.washQuanlityCheckMethodImageSize + "个清洗质量检查关注点图片,"); + $("#p0").append("" + result.data.washQuanlityCheckPointImageSize + "个清洗质量检查方法图片,"); + $("#p0").append("" + result.data.functionCheckImageSize + "个功能检查图片。

"); + $("#p0").append("发现" + total + "个问题。"); + $("#p1").append("1、发现" + errorTousseImage.length + "个包定义有问题。问题类型:包定义记录有图片,文件夹内没有图片"); + $("#p2").append("2、发现" + errorMaterialImage.length + "个材料定义有问题。问题类型:材料定义记录有图片,文件夹内没有图片"); + $("#p3").append("3、发现" + (errorOriginalImage.length + errorThumbnailImage.length + errorVideo.length) + "个孤立的图片和视频。问题类型:文件夹内有图片和视频,但没有对应的包定义或者材料定义"); + $("#p4").append("4、发现" + errorUploadStatusTousse.length + "个包定义有问题。问题类型:已上传图片属性和数据库中的记录不一致"); + $("#p5").append("5、发现" + errorUploadStatusMaterial.length + "个器械材料定义有问题。问题类型:已上传图片属性和数据库中的记录不一致"); showTousseImage(errorTousseImage); showMaterialImage(errorMaterialImage); showErrorImage(result.data.errorImage); + showErrorUploadStatusTousse(errorUploadStatusTousse); + showErrorUploadStatusMaterial(errorUploadStatusMaterial); } } // 显示包定义图片 function showTousseImage(imageList){ var str = ""; + if(imageList.length <= 0){ + return; + } + $("#tab1").show(); var th = "序号包定义id包定义名称图片类型原图/缩略图图片名称文件上传时间" $("#tab1").append(th); for(var i=0;i" + (j + 1) + "" + "" + tousseDefinitionID + "" + tousseDefinitionName + "" + "" + imageType + "" + "原图" + "" + UUIDImageName + "" + "" + uploadDateTime + "" + ""; + var str = "" +"" + (i + 1) + "" + "" + tousseDefinitionID + "" + tousseDefinitionName + "" + "" + imageType + "" + "原图" + "" + UUIDImageName + "" + "" + uploadDateTime + "" + ""; $("#tab1").append(str); }else{ var str = "" + "" + imageType + "" + "原图" + "" + UUIDImageName + "" + "" + uploadDateTime + "" + ""; @@ -87,19 +110,35 @@ var uploadDateTime = thumbnailImage.uploadDateTime; var imageType = thumbnailImage.imageType; if(originalImageArray.length == 0 && j == 0){ - var str = "" +"" + (j + 1) + "" + "" + tousseDefinitionID + "" + tousseDefinitionName + "" + "" + imageType + "" + "缩略图" + "" + UUIDAndImageName + "" + "" + uploadDateTime + "" + ""; + var str = "" +"" + (i + 1) + "" + "" + tousseDefinitionID + "" + tousseDefinitionName + "" + "" + imageType + "" + "缩略图" + "" + UUIDAndImageName + "" + "" + uploadDateTime + "" + ""; $("#tab1").append(str); }else{ var str = "" + "" + imageType + "" + "缩略图" + "" + UUIDAndImageName + "" + "" + uploadDateTime + "" + ""; $("#tab1").append(str); } - } + for(var j=0;j" + (i + 1) + "" + "" + tousseDefinitionID + "" + tousseDefinitionName + "" + "" + videoType + "" + "原图" + "" + UUIDAndVideoName + "" + "" + uploadDateTime + "" + ""; + $("#tab1").append(str); + } else{ + var str = "" + "" + videoType + "" + "原图" + "" + UUIDAndVideoName + "" + "" + uploadDateTime + "" + ""; + $("#tab1").append(str); + } + } } } // 显示材料定义图片 function showMaterialImage(imageList){ + if(imageList.length <= 0){ + return; + } + $("#tab2").show(); var th = "序号材料定义id材料定义名称图片类型原图/缩略图图片名称文件上传时间" $("#tab2").append(th); var str = ""; @@ -116,7 +155,7 @@ var originalImageTime = originalImage.uploadDateTime; var originalImageType = originalImage.imageType; if(j==0){ - str = "" + "" + (j + 1) + "" + "" + materialDefinitionId + "" + materialDefinitionIdName + "" + + str = "" + "" + (i + 1) + "" + "" + materialDefinitionId + "" + materialDefinitionIdName + "" + "" + originalImageType + "" + "原图" + "" + originalImageName + "" + "" + originalImageTime + "" + ""; $("#tab2").append(str); } else { @@ -143,26 +182,80 @@ // 显示孤立图片 function showErrorImage(errorImage){ - var th = "序号原图/缩略图图片名称文件上传时间"; - $("#tab3").append(th); var errorOriginalImage = errorImage.errorOriginalImage; var errorThumbnailImage = errorImage.errorThumbnailImage; + var errorVideo = errorImage.errorVideo; + if(errorOriginalImage.length <= 0 && errorThumbnailImage.length <= 0 && errorVideo.length <= 0){ + return; + } + $("#tab3").show(); + var th = "序号原图/缩略图图片名称文件上传时间"; + $("#tab3").append(th); + var row = 1; for(var i=0;i" + (i+1) + "" + "原图" + "" + originalImageName + "" + "" + originalImageTime + "" + ""; + str = ""+ "" + (row++) + "" + "原图" + "" + originalImageName + "" + "" + originalImageTime + "" + ""; $("#tab3").append(str); } for(var i=0;i" + (i+errorOriginalImage.length+1) + "" + "缩略图" + "" + thumbnailImageName + "" + "" + thumbnailImageTime + "" + ""; + str = ""+ "" + (row++) + "" + "缩略图" + "" + thumbnailImageName + "" + "" + thumbnailImageTime + "" + ""; $("#tab3").append(str); } + for(var i=0;i" + (row++) + "" + "视频" + "" + videoName + "" + "" + lastModifyTime + "" + ""; + $("#tab3").append(str); + } } + + // 包定义已上传图片属性和数据库中的记录不一致 + function showErrorUploadStatusTousse(errorUploadStatusTousse){ + if(errorUploadStatusTousse.length <= 0){ + return; + } + $("#tab4").show(); + var th = "序号包定义id包定义名称已上传图片属性数据库中是否有图片记录"; + $("#tab4").append(th); + for(var i=0;i" + (i+1) + "" + "" + id + "" + "" + name + "" + "" + isUploadImage + "" + "" + isExistImage + ""+ ""; + $("#tab4").append(str); + } + } + + // 器械材料定义 已上传图片属性和数据库中的记录不一致 + function showErrorUploadStatusMaterial(errorUploadStatusMaterial){ + if(errorUploadStatusMaterial.length <= 0){ + return; + } + $("#tab5").show(); + var th = "序号器械定义id器械定义名称规格已上传图片属性数据库中是否有图片记录"; + $("#tab5").append(th); + for(var i=0;i" + (i+1) + "" + "" + id + "" + "" + name + "" + "" + specification + ""+ "" + isUploadImage + "" + "" + isExistImage + ""+ ""; + $("#tab5").append(str); + } + } @@ -186,5 +279,13 @@ 序号原图/缩略图图片名称文件日期 --> +

+ + +
+

+ + +
Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManager.java =================================================================== diff -u -r27181 -r28313 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManager.java (.../ImageFileManager.java) (revision 27181) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/service/ImageFileManager.java (.../ImageFileManager.java) (revision 28313) @@ -152,4 +152,11 @@ * @param imageFileIds 图片id(例如:1,2,3) */ public void bindingImageFile(String objectId, String imageFileIds); + + /** + * 获取器械包定义图片包含(器械包图片、装配教学图片、说明书图片、清洗操作指引图片) + * @param tousseDefinitionId + * @return + */ + public int getTousseDefinitionImageCount(String tousseDefinitionId); }