Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierView.jsp =================================================================== diff -u -r23516 -r23696 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierView.jsp (.../supplierView.jsp) (revision 23516) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierView.jsp (.../supplierView.jsp) (revision 23696) @@ -83,6 +83,11 @@ var warningStatus_expired = '<%=Supplier.SUPPLIER_WRANINGSTATUS_EXPIRED%>' //过期状态 var warningStatus = '<%=request.getParameter("warningStatus")%>'; +if(warningStatus == "true"){ + warningStatus = true; +}else{ + warningStatus = false; +} var needCertificate = false; if(sstsConfig.hasOwnProperty('enableDisposableGoodsCertificateManager') && sstsConfig.enableDisposableGoodsCertificateManager){ @@ -101,8 +106,7 @@
- - +
\ No newline at end of file Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/action/ShowImageAction.java =================================================================== diff -u -r23486 -r23696 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/action/ShowImageAction.java (.../ShowImageAction.java) (revision 23486) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/action/ShowImageAction.java (.../ShowImageAction.java) (revision 23696) @@ -88,6 +88,7 @@ Map parameters = StrutsParamUtils.getParameters(); String page = parameters.get("page"); String imageType = parameters.get("imageType"); + String isOriginalPic = parameters.get("isOriginalPic"); byte[] img = null; long imageId = 0; ImageFile picture = null; @@ -103,7 +104,11 @@ if (picture.getImage() != null) { img = picture.getImage(); } else { - img = readImageData(picture); + if("true".equals(isOriginalPic)){ + img = readImageData(picture, true); + }else{ + img = readImageData(picture, false); + } } } @@ -233,15 +238,23 @@ } } } - private byte[] readImageData(ImageFile picture) { + private byte[] readImageData(ImageFile picture, boolean isOriginalPic) { byte[] img; String saveImagePath = supplyRoomConfigManager .getSystemParamsObj().getSaveImagePath(); String thumbnailImagePath = picture.getThumbnailImagePath(); - String uuidImageName = picture.getUUIDAndImageName(); - String path = saveImagePath + thumbnailImagePath - + "\\" + uuidImageName; + String originalImagePath = picture.getImagePath(); + String uuidAndImageName = picture.getUUIDAndImageName(); + String uuidImageName = picture.getUUIDImageName(); + String path = null; + if(isOriginalPic){ + path = saveImagePath + originalImagePath + + "\\" + uuidImageName; + }else{ + path = saveImagePath + thumbnailImagePath + + "\\" + uuidAndImageName; + } try { img = FileUtils.readAllContentAsBytes(path); } catch (Exception e) { Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/authorizationCertificateForm.js =================================================================== diff -u -r23486 -r23696 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/authorizationCertificateForm.js (.../authorizationCertificateForm.js) (revision 23486) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/authorizationCertificateForm.js (.../authorizationCertificateForm.js) (revision 23696) @@ -1,8 +1,8 @@ var uniqueCertificateFormObj = null; var uniqueCertificateWin = null; - var certificatePageColumnLeftWidth = 300; +var allowMultilevelAuthorization = false; //删除当前选择的一次性物品(授权证关联的) function deleteSelectedDisposableGoodsItem(id){ @@ -20,7 +20,8 @@ {name : 'id'}, {name : 'name'}, {name : 'specification'}, - {name : 'name_specification'} + {name : 'name_specification'}, + {name : 'status'} ]); //被授权的一次性物品Store var authorizationDisposableGoodsStore = new top.Ext.data.Store({ @@ -29,9 +30,7 @@ var canBeAuthorizedDisposableGoodsStore = new top.Ext.data.Store({ }); -var allowMultilevelAuthorization = false; - //授权方store var authorizerStore = new top.Ext.data.Store({ proxy : new Ext.data.HttpProxy({ @@ -99,7 +98,7 @@ /** - * 根据生产厂家,授权方,被授权方,授权证Id,获得可以生产厂家可以被授权方授权给被授权方的一次性物品的集合 + * 根据生产厂家,授权方,被授权方,授权证Id,获得生产厂家可以被授权方授权给被授权方的一次性物品的集合 */ function getCanBeAuthorizedDisposableGoods(authorizerId, authorizedId, manufacturerId, ids){ var certificateId = null; @@ -109,7 +108,7 @@ //根据被授权方,授权方,生产厂家来获取可以被授权的物品 DWREngine.setAsync(false); DiposableGoodsTableManager.getCanBeAuthorizedDisposableGoods(authorizerId, authorizedId, manufacturerId, certificateId, function(responseText){ - var result = eval('(' + responseText + ')');; + var result = eval('(' + responseText + ')'); if(result.success){ var idArray = null; if(!isUndefinedOrNullOrEmpty(ids)){ @@ -134,14 +133,45 @@ id : records[int].id, name : records[int].name, specification : records[int].specification, - name_specification : name_specification + name_specification : name_specification, + status : true }); - if(idArray.contains(records[int].id)){ + var index = idArray.indexOf(records[int].id); + if(index != -1){ authorizationDisposableGoodsStore.add(newRow); + var temp = idArray[0]; + idArray[0] = idArray[index]; + idArray[index] = temp; + idArray.shift(); }else{ canBeAuthorizedDisposableGoodsStore.add(newRow); } } + if(idArray.length != 0){//授权的物品没有找到有效的授权资格 + DiposableGoodsTableManager.getDisposableGoodsOfRegistrationCertificate(idArray.toString(), function(responseText){ + var result = eval('(' + responseText + ')'); + if(result.success){ + var records = result.data; + for (var int = 0; int < records.length; int++) { + var name_specification = null; + var specification = records[int].specification; + if(!isUndefinedOrNullOrEmpty(specification)){ + name_specification = records[int].name+'['+specification+']'; + }else{ + name_specification = records[int].name; + } + var newRow = new disposableGoodsRecord({ + id : records[int].id, + name : records[int].name, + specification : records[int].specification, + name_specification : name_specification, + status : false + }); + authorizationDisposableGoodsStore.add(newRow); + } + } + }); + } // records = result.haveBeenAuthorized; // if(!isUndefinedOrNullOrEmpty(records)){ // for (var int = 0; int < records.length; int++) { @@ -182,16 +212,33 @@ dataIndex : 'id', width : 50, renderer: function(v,p,record){ + if(isUpdate){ + return ""; + } return ""; } },{ id : 'name', header : "物品名称", width : 100, + renderer: function(v, p ,record){ + var status = record.data.manufacturerWarningStatus; + if(!record.data.status){ + return "

" + v + "

"; + } + return v; + }, dataIndex : 'name' },{ header : "规格", width : 190, + renderer: function(v, p ,record){ + var status = record.data.manufacturerWarningStatus; + if(!record.data.status){ + return "

" + v + "

"; + } + return v; + }, dataIndex : 'specification' }]); @@ -206,7 +253,7 @@ height:200, frame : false, bodyStyle : 'border:1px solid #afd7af', - viewConfig: {forceFit:false}, + viewConfig: { forceFit:false }, selModel : new top.Ext.grid.RowSelectionModel({ singleSelect : false }), @@ -217,7 +264,7 @@ id : 'disposableGoodsNameCombo', name : 'disposableGoodsNameCombo', valueField : 'id', - displayField : 'name', + displayField : 'name_specification', store : canBeAuthorizedDisposableGoodsStore, forceSelection : true, triggerAction : 'all', @@ -477,6 +524,10 @@ top.Ext.getCmp('warningDays').setValue(record.data.warningDays); getCanBeAuthorizedDisposableGoods(record.data.companyId, suppliedId, record.data.manufacturerId, record.data.ids); } + if(isUpdate){ + top.Ext.getCmp('disposableGoodsNameCombo').disable(); + top.Ext.getCmp('addRegistrationCertificateBtn').disable(); + } if(!isUpdate && !isUndefinedOrNull(record) && !isUndefinedOrNull(record.data.id) && record.data.id != 0){ loadPic(record.data.id); @@ -497,6 +548,17 @@ showResult("被授权物品不能为空"); return ; } + var hasCanNotBeenAuthorizedGoods = false; + authorizationDisposableGoodsStore.each(function(record){ + if(!record.data.status){ + showResult("授权物品中有不能被授权的物品(授权方已经没有该物品的授权权利)"); + hasCanNotBeenAuthorizedGoods = true; + return false; + } + }); + if(hasCanNotBeenAuthorizedGoods){ + return ; + } var ids = null; authorizationDisposableGoodsStore.each(function(localRecord){ if(ids != null){ Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBaseDataFromZipManagerImpl.java =================================================================== diff -u -r23486 -r23696 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBaseDataFromZipManagerImpl.java (.../ImportBaseDataFromZipManagerImpl.java) (revision 23486) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBaseDataFromZipManagerImpl.java (.../ImportBaseDataFromZipManagerImpl.java) (revision 23696) @@ -337,7 +337,6 @@ while(it.hasNext()){ FileHeader file = it.next(); String fullName = file.getFileName(); - System.out.println(fullName); if(file.isDirectory()){ continue; } @@ -364,7 +363,7 @@ successCount++; long objectId = object.optLong("objectId"); // String certificateType = object.optString("certificateType"); - String certificateType = object.optString(ImageFile.IMAGE_TYPE_DISPOSABLEGOODS_CERTIFICATE); + String certificateType = ImageFile.IMAGE_TYPE_DISPOSABLEGOODS_CERTIFICATE; long imageFileOrder = object.optLong("imageFileOrder"); InputStream is = zipFile.getInputStream(file); @@ -392,20 +391,14 @@ image.setImageType(certificateType); image.setObjectId(objectId+""); image.setImageName(name+"."+suffix); -// if(imageFileOrder != 0){ //文件名称上必须要有编号 image.setSerialNum(imageFileOrder); -// }else{ //文件名称上没有编号 -// imageFileManager.setImageFileOrder(image); -// } imageFileManager.saveImage(image); outputStream.close(); } } - System.out.println(sb); if(sb.length() > 0 && sb.charAt(0) == '|'){ sb.deleteCharAt(0); } - System.out.println(sb); msg.put("证件图片导入",successCount + "#" + failureCount + "#" + sb); return null; } @@ -425,7 +418,8 @@ return jsonObject; } - int type = 0; +// int type = 0; + String type = null; String companyName = nameSplit[0]; SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); Date validityDate = null; @@ -437,22 +431,28 @@ return jsonObject; } - try{ - type = Integer.parseInt(nameSplit[1]); - }catch(NumberFormatException e){ //第二个为数字(代表图片类型) - jsonObject.put("error", "图片命名格式错误"); +// try{ +// type = Integer.parseInt(nameSplit[1]); +// }catch(NumberFormatException e){ //第二个为数字(代表图片类型) +// jsonObject.put("error", "图片命名格式错误"); +// return jsonObject; +// } +// if(type > 7 || type < 1){ +// jsonObject.put("error", "图片命名格式错误"); +// return jsonObject; +// } + type = nameSplit[1]; + if(!Certificate.certificateTypes.contains(type)){ + jsonObject.put("error", "图片类型错误"); return jsonObject; } - if(type > 7 || type < 1){ - jsonObject.put("error", "图片命名格式错误"); - return jsonObject; - } + Certificate certificate = null; //注册证的图片--注册证判断唯一的标准是:注册证号 - if(Certificate.certificateTypes.indexOf(Certificate.CERTIFICATE_TYPE_REGISTRATIONCERTIFICATE)+1 == type){ //注册证 + if(Certificate.CERTIFICATE_TYPE_REGISTRATIONCERTIFICATE.equals(type)){ //注册证 certificate = certificateManager.getRegistrationCertificate(nameSplit[2]); //授权证的图片--授权证判断唯一的标准:被授权方,授权方,有效期 - }else if(Certificate.certificateTypes.indexOf(Certificate.CERTIFICATE_TYPE_AUTHORIZATIONCERTIFICATE)+1 == type){ //授权证 + }else if(Certificate.CERTIFICATE_TYPE_AUTHORIZATIONCERTIFICATE.equals(type)){ //授权证 if(nameSplit.length < 5){ // jsonObject.put("error", "图片命名格式错误"); return jsonObject; @@ -474,14 +474,14 @@ return jsonObject; } certificate = certificateManager.getUniqueCertificate(companyName, - Certificate.certificateTypes.get(type-1), validityDate); + type, validityDate); } if(certificate == null){ jsonObject.put("error", "图片关联信息未找到"); return jsonObject; } jsonObject.put("objectId", certificate.getId()); - jsonObject.put("certificateType", Certificate.certificateTypes.get(type-1)); + jsonObject.put("certificateType", type); jsonObject.put("imageFileOrder", imageFileOrder); return jsonObject; Index: ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManagerImpl.java =================================================================== diff -u -r23679 -r23696 --- ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManagerImpl.java (.../SystemWarningManagerImpl.java) (revision 23679) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManagerImpl.java (.../SystemWarningManagerImpl.java) (revision 23696) @@ -21,6 +21,7 @@ import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.basedatamanager.warehouse.service.WareHouseManager; +import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.entity.assestmanagement.Contract; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoods; @@ -472,10 +473,13 @@ } //供应商证件管理中,有过期或者预警的证件的供应商 + //权限设置检查 boolean supplierCertificate = operationManager.isUserHasOperation( SSTS_SYSTEMWARNING_SUPPLIER_CERTIFICATE, userOperationIds); -// if(supplierCertificate){ - if(true){ + JSONObject sstsConfig = CssdUtils.getWebConfigInfo(); + //项目配置检查 + boolean enableDisposableGoodsCertificateManager = sstsConfig.optBoolean("enableDisposableGoodsCertificateManager",false); + if( enableDisposableGoodsCertificateManager && supplierCertificate){ int supplierWarningAmount = getSupplierWarningStatus(); if(supplierWarningAmount > 0){ SystemWarningItemVO vo = new SystemWarningItemVO(); @@ -484,8 +488,6 @@ warningList.add(vo); } } - - return warningList; } Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/registrationCertificateForm.js =================================================================== diff -u -r23486 -r23696 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/registrationCertificateForm.js (.../registrationCertificateForm.js) (revision 23486) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/registrationCertificateForm.js (.../registrationCertificateForm.js) (revision 23696) @@ -73,6 +73,11 @@ if(totalPage != 0){ var element = top.Ext.get(toolbarPage.el); element.update('第1页'); + var img = top.Ext.get('imageBrowse').dom; + img.onclick = function(){ + openModalWindow(WWWROOT+'/disinfectsystem/basedatamanager/supplier/pictureDetail.jsp?id=' + g_selectedRecord.data.id + '&imageType=' + encodeURI(imageType) + '&page=' + page + '&time=' + new Date(), + '', 1200, 800); + } } }, failure : function(){ @@ -233,6 +238,9 @@ dataIndex : 'id', width : 50, renderer: function(v,p,record){ + if(isUpdate){//如果是更新,则不允许修改关联的一次性物品 + return ""; + } return ""; } },{ @@ -475,6 +483,9 @@ top.Ext.getCmp('certificateNumber').setValue(record.data.certificateNumber); top.Ext.getCmp('licenseDate').setValue(record.data.licenseDate); top.Ext.getCmp('validityDate').setValue(record.data.validityDate); + }else{ + top.Ext.getCmp('disposableGoodsNameCombo').disable(); + top.Ext.getCmp('addRegistrationCertificateBtn').disable(); } top.Ext.getCmp('certificateGrade').setValue(record.data.certificationGrade); top.Ext.getCmp('warningDays').setValue(record.data.warningDays); Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/pictureDetail.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/pictureDetail.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/pictureDetail.jsp (revision 23696) @@ -0,0 +1,63 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> + + + + + + ${param.imageType}原图 + + + + + + + + +
+ + \ No newline at end of file Index: ssts-web/src/main/webapp/homepage/menuconfigure.js =================================================================== diff -u -r23679 -r23696 --- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 23679) +++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 23696) @@ -488,6 +488,7 @@ {hidden :SSTS_SystemWarning_RegistrationCertification,text:"供应商注册证告警",href:WWWROOT + '/disinfectsystem/basedatamanager/supplier/supplierCertificationWarningView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_SystemWarning_RegistrationCertification,text:"高值耗材库存告警",href:WWWROOT + '/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsWarningView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_SystemWarning_ExpensiveGoodsBill,text:"高值耗材可结算实例告警",href:WWWROOT + '/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsBillWarning/expensiveGoodsBIllInstanceWarningView.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_SystemWarning_Supplier_Certificate,text:"供应商证件告警",href:WWWROOT + '/disinfectsystem/basedatamanager/supplier/supplierView.jsp?warningStatus=true',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_SystemWarning_Contract,text:"合同告警",href:encodeURI(WWWROOT+'/disinfectsystem/assestManagement/contract/contractWarningView.jsp'),hrefTarget:linkTarget,leaf:true} ] },{ Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/selectRegistrationCertificateForm.js =================================================================== diff -u -r23486 -r23696 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/selectRegistrationCertificateForm.js (.../selectRegistrationCertificateForm.js) (revision 23486) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/selectRegistrationCertificateForm.js (.../selectRegistrationCertificateForm.js) (revision 23696) @@ -69,7 +69,9 @@ root : 'data' }, [ {name : 'id',mapping : 'id'}, - {name : 'name',mapping : 'name'} + {name : 'name',mapping : 'name'}, + {name : 'specification',mapping : 'specification'}, + {name : 'name_specification',mapping : 'name'} ]), listeners: { beforeload: function(thiz,options){ @@ -78,6 +80,15 @@ if(!isUndefinedOrNullOrEmpty(manufacturerId)){ thiz.baseParams.manufacturerId = manufacturerId; } + }, + load: function(thiz){ + thiz.each(function(record){ + if(!isUndefinedOrNullOrEmpty(record.data.specification)){ + record.data.name_specification = record.data.name+'['+record.data.specification+']'; + } + }); + //修改之后,再次调用。不然下拉显示的还是原来的,不是修改之后的 + thiz.fireEvent('datachanged',thiz); } } @@ -183,7 +194,7 @@ queryParam : 'spell', minChars : 1, valueField : 'id', - displayField : 'name', + displayField : 'name_specification', store : disposableGoodsStore, forceSelection : true, // lazyInit : false, @@ -240,8 +251,8 @@ iconCls : 'btn_ext_add', id:'addRegistrationCertificateBtn', handler : function() { - showResult('物品Id: '+top.Ext.getCmp('disposableGoodsNameCombo').getValue()+ - ' 厂家Id: '+top.Ext.getCmp('manufacturerCombo').getValue()); +// showResult('物品Id: '+top.Ext.getCmp('disposableGoodsNameCombo').getValue()+ +// ' 厂家Id: '+top.Ext.getCmp('manufacturerCombo').getValue()); var disposableGoodsCombo = top.Ext.getCmp('disposableGoodsNameCombo'); var manufaturerCombo = top.Ext.getCmp('manufacturerCombo'); var goodsId = disposableGoodsCombo.getValue(); Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/DiposableGoodsTableManager.java =================================================================== diff -u -r23606 -r23696 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/DiposableGoodsTableManager.java (.../DiposableGoodsTableManager.java) (revision 23606) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/DiposableGoodsTableManager.java (.../DiposableGoodsTableManager.java) (revision 23696) @@ -825,7 +825,7 @@ JSONObject object = new JSONObject(); object.put("success", true); - String [] idArray = ids.split(";"); + String [] idArray = ids.split(";|,"); List idList = new ArrayList(); for (String string : idArray) { if(DatabaseUtil.isPoIdValid(string)){ Index: forgon-core/src/main/java/com/forgon/Constants.java =================================================================== diff -u -r23588 -r23696 --- forgon-core/src/main/java/com/forgon/Constants.java (.../Constants.java) (revision 23588) +++ forgon-core/src/main/java/com/forgon/Constants.java (.../Constants.java) (revision 23696) @@ -23,7 +23,7 @@ "4.4.0","4.4.1","4.4.2","4.4.3","4.4.4","4.4.5","4.4.6","4.4.7","4.4.8","4.4.9","4.5.0","4.5.1","4.5.2","4.5.3","4.5.4","4.5.5","4.5.6","4.5.7","4.5.8", "4.5.9","4.6.0","4.6.1","4.6.2","4.6.3","4.6.4","4.6.5","4.6.6","4.6.7","4.6.8","4.6.9","4.7.0","4.7.1","4.7.2","4.7.3","4.7.4","4.7.5","4.7.6","4.7.7", "4.7.8","4.7.9","4.8.0","4.8.1","4.8.2","4.8.3","4.8.4","4.8.5","4.8.6","4.8.7","4.8.8","4.8.9","4.9.0","4.9.1","4.9.2","4.9.3","4.9.4","4.9.5","4.9.6", - "4.9.7","4.9.8","4.9.9","4.9.10","4.9.11","4.9.12","4.9.13","4.9.14","4.9.15","4.9.16","4.9.17","4.9.18","4.9.19","4.9.20","4.9.21"}; + "4.9.7","4.9.8","4.9.9","4.9.10","4.9.11","4.9.12","4.9.13","4.9.14","4.9.15","4.9.16","4.9.17","4.9.18","4.9.19","4.9.20","4.9.21","4.9.22"}; // 版本列表(4.0版本升级4.1版需要分两步:先从4.0升到4.1.0、然后从4.1.0升级4.1最新版本) /*public final static String[] SOFTWARE_VERSION_ARRAY = new String[] { Index: ssts-web/src/main/webapp/homepage/menu.jsp =================================================================== diff -u -r23679 -r23696 --- ssts-web/src/main/webapp/homepage/menu.jsp (.../menu.jsp) (revision 23679) +++ ssts-web/src/main/webapp/homepage/menu.jsp (.../menu.jsp) (revision 23696) @@ -579,6 +579,11 @@ SSTS_SystemWarning_ExpensiveGoodsBill = false; +var SSTS_SystemWarning_Supplier_Certificate = true; + +SSTS_SystemWarning_Supplier_Certificate = false; + + var SSTS_SystemWarning_Contract = true; SSTS_SystemWarning_Contract = false; Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplier/service/SupplierManagerImpl.java =================================================================== diff -u -r23512 -r23696 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplier/service/SupplierManagerImpl.java (.../SupplierManagerImpl.java) (revision 23512) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplier/service/SupplierManagerImpl.java (.../SupplierManagerImpl.java) (revision 23696) @@ -224,7 +224,12 @@ */ private void parseCertificates(Supplier supplier, String certificates) { // TODO Auto-generated method stub - JSONObject object = JSONObject.fromObject(certificates); + JSONObject object = null; + if(StringUtils.isEmpty(certificates)){ + object = new JSONObject(); + }else{ + object = JSONObject.fromObject(certificates); + } String out = object.optString("uniqueCertificates"); JSONArray uniqueCertificateArray = null; if(StringUtils.isNotEmpty(out)){ @@ -295,10 +300,6 @@ @Override public void saveUniqueCertificates(Supplier supplier, List newCertificates) { List oldCertificates = certificateManager.getUniqueCertificates(supplier.getId()); - if(newCertificates == null){ - certificateManager.deleteAll(oldCertificates); - return ; - } mergeCertificateListAndSave(oldCertificates, newCertificates); } @@ -311,6 +312,9 @@ if(oldCertificates == null){ oldCertificates = new ArrayList(); } + if(newCertificates == null){ + newCertificates = new ArrayList(); + } if(!oldCertificates.isEmpty()){ Iterator oit = oldCertificates.iterator(); while(oit.hasNext()){ @@ -327,6 +331,45 @@ } } if(!hasSameItem){//没有,说明已经被删除 + //删除注册证之前,要判断此注册证有没有已经被授权了,如果已经被授权了(过期的不算),则不允许删除 + if(Certificate.CERTIFICATE_TYPE_REGISTRATIONCERTIFICATE.equals(oldCertificate.getType()) + && oldCertificate.getIsNeedWarning()){ + Long manufacturerId = oldCertificate.getSupplier().getId(); + Set ids = oldCertificate.getDisposableGoodss().stream().map(p->p.getId()).collect(Collectors.toSet()); + String idPredicate = SqlUtils.getNonStringFieldInCollectionsPredicate("dg.id", ids); + String hql = "select po from Certificate po join po.authorizationRecord ar" + + " join ar.disposableGoodss dg where ar.manufacturerId = " + manufacturerId + + " and ar.authorizer.id = " + manufacturerId + + " and po.isNowUsing = 1 and " + idPredicate; + List authorizationCertificates = objectDao.findByHql(hql); + if(authorizationCertificates.size() != 0){ + Set authorizationCertificateSet = new HashSet(authorizationCertificates); + String exception = "注册证\"" + oldCertificate.getCertificateNumber() + "\"不能删除,注册的物品有授权记录,被授权方为:"; + for (Certificate certificate : authorizationCertificateSet) { + exception += certificate.getAuthorizationRecord().getAuthorizedName() + " "; + } + throw new RuntimeException(exception); + } + //如果是授权证,则判断此授权证关联的物品有没有对下级授权,如果有,则不允许删除(要删除多级授权,需要从最下面授权开始删除) + }else if(Certificate.CERTIFICATE_TYPE_AUTHORIZATIONCERTIFICATE.equals(oldCertificate.getType()) + && oldCertificate.getIsNeedWarning()){ + Long authorizerId = oldCertificate.getSupplier().getId(); + Long manufacturerId = oldCertificate.getAuthorizationRecord().getManufacturerId(); + Set ids = oldCertificate.getAuthorizationRecord().getDisposableGoodss().stream().map(p->p.getId()).collect(Collectors.toSet()); + String idPredicate = SqlUtils.getNonStringFieldInCollectionsPredicate("dg.id", ids); + String hql = "select po from Certificate po join po.authorizationRecord ar" + + " join ar.disposableGoodss dg where ar.manufacturerId = " + manufacturerId + + " and ar.authorizer.id = " + authorizerId + + " and po.isNowUsing = 1 and " + idPredicate; + List authorizationCertificates = objectDao.findByHql(hql); + if(authorizationCertificates.size() != 0){ + String exception = "授权证\"" + oldCertificate.getCertificateNumber() + "\"不能删除,有多级授权,下级被授权方为:"; + for (Certificate certificate : authorizationCertificates) { + exception += certificate.getAuthorizationRecord().getAuthorizedName() + " "; + } + throw new RuntimeException(exception); + } + } certificateManager.delete(oldCertificate); oit.remove(); } @@ -502,10 +545,6 @@ @Override public void saveManufacturerRegistrationCertificates(Supplier supplier, List newCertificates) { List oldCertificates = certificateManager.getRegistrationCertificates(supplier.getId()); - if(newCertificates == null){ - certificateManager.deleteAll(oldCertificates); - return ; - } mergeCertificateListAndSave(oldCertificates, newCertificates); } @@ -620,10 +659,6 @@ @Override public void saveAuthorizationCertificates(Supplier supplier, List newCertificates) { List oldCertificates = certificateManager.getAuthorizationCertificates(supplier.getId()); - if(newCertificates == null){ - certificateManager.deleteAll(oldCertificates); - return ; - } oldCertificates = mergeCertificateListAndSave(oldCertificates, newCertificates); //***************通过授权证,来关联保存注册证*******************************************// @@ -646,11 +681,19 @@ Certificate.CERTIFICATE_TYPE_REGISTRATIONCERTIFICATE + "' and po.supplier.id = " + certificate.getAuthorizationRecord().getManufacturerId() + " and dg.id = " + id + " order by po.validityDate desc"; - List results = objectDao.findByHql(hql, 0, 1); - if(results == null){ + @SuppressWarnings("unchecked") + List results = objectDao.findByHql(hql, 0, 0); + if(results == null || results.isEmpty()){ throw new RuntimeException("未找到授权证书关联的一次性物品的注册证"); }else{ - newRegistrationCertificates.add(results.get(0)); + //找到了生产厂家拥有的该一次性物品的所有注册证。(包括过期的,没有过期的) + //添加逻辑:理论上最多只有一个是没过期的。找到没过期的即可。如果所有的都过期了,就找有效期最后的那个 + Certificate rs = results.stream().filter(p->p.getIsNowUsing()).findFirst().orElse(null); + if(rs == null){ + newRegistrationCertificates.add(results.get(0)); + }else{ + newRegistrationCertificates.add(rs); + } } } } @@ -729,6 +772,7 @@ public void deleteSupplierById(String id) { Supplier supplier = getSupplierById(id); if(supplier != null){ + @SuppressWarnings("unchecked") List certificates = objectDao.findBySql(Certificate.class.getSimpleName(), "where po.supplier.id = " + supplier.getId()); certificateManager.deleteAll(certificates); objectDao.delete(supplier); @@ -1452,7 +1496,7 @@ // } @Override - @PostConstruct +// @PostConstruct public void updateSupplierAndCertificateStatus(){ SessionFactory sessionFactory = objectDao.getHibernateSessionFactory(); boolean participate = false; Index: ssts-web/src/main/webapp/dataUpdater/sqls/4.9.21_4.9.22.sql =================================================================== diff -u --- ssts-web/src/main/webapp/dataUpdater/sqls/4.9.21_4.9.22.sql (revision 0) +++ ssts-web/src/main/webapp/dataUpdater/sqls/4.9.21_4.9.22.sql (revision 23696) @@ -0,0 +1,2 @@ +alter table RelevancyGoodsAuthorization alter column expensiveGoodsIds varchar(4000) +alter table RelevancyGoodsAuthorization alter column expensiveGoodsName varchar(4000) \ No newline at end of file Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/supplier/Certificate.java =================================================================== diff -u -r23509 -r23696 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/supplier/Certificate.java (.../Certificate.java) (revision 23509) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/supplier/Certificate.java (.../Certificate.java) (revision 23696) @@ -51,43 +51,36 @@ * 营业执照 */ public static final String CERTIFICATE_TYPE_BUSINESSLICENSE = "营业执照"; -// public static final int CERTIFICATE_TYPE_BUSINESSLICENSE_NUMBER = 1; /** *生产许可证 */ public static final String CERTIFICATE_TYPE_PRODUCTIONCERTIFICATE = "生产许可证"; -// public static final int CERTIFICATE_TYPE_PRODUCTIONCERTIFICATE_NUMBER = 2; /** * 经营许可证 */ public static final String CERTIFICATE_TYPE_BUSINESSCERTIFICATE = "经营许可证"; -// public static final int CERTIFICATE_TYPE_BUSINESSCERTIFICATE_NUMBER = 3; /** * 注册证 */ public static final String CERTIFICATE_TYPE_REGISTRATIONCERTIFICATE = "注册证"; -// public static final int CERTIFICATE_TYPE_REGISTRATIONCERTIFICATE_NUMBER = 4; /** * 授权证书 */ public static final String CERTIFICATE_TYPE_AUTHORIZATIONCERTIFICATE = "授权书"; -// public static final int CERTIFICATE_TYPE_AUTHORIZATIONCERTIFICATE_NUMBER = 5; /** * 法人授权委托书 */ public static final String CERTIFICATE_TYPE_AUTHORIZATIONLETTER = "法人授权委托书"; -// public static final int CERTIFICATE_TYPE_AUTHORIZATIONLETTER_NUMBER = 6; /** * 质量保证书 */ public static final String CERTIFICATE_TYPE_QUALITYGUARANTEE = "质量保证书"; -// public static final int CERTIFICATE_TYPE_QUALITYGUARANTEE_NUMBER = 7; /** * 证件长期有效,存储在数据库里的值(2050-02-14) Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierView.js =================================================================== diff -u -r23516 -r23696 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierView.js (.../supplierView.js) (revision 23516) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierView.js (.../supplierView.js) (revision 23696) @@ -206,11 +206,11 @@ var tbar = [ { text : '同步数据', iconCls : 'icon_refresh', - hidden :false, + hidden :warningStatus, handler:function(){sync();} }, '-', { text : '添加', - hidden : SSTS_Supplier_Create, + hidden : SSTS_Supplier_Create | warningStatus, iconCls : 'btn_ext_application_add', handler : function() { addAndEditSupplier(0); @@ -225,7 +225,7 @@ } }, '-', { text : '删除', - hidden : SSTS_Supplier_Delete, + hidden : SSTS_Supplier_Delete | warningStatus, iconCls : 'btn_ext_application_del', handler : function() { deleteSupplier(grid); @@ -238,7 +238,7 @@ } ]; var dwrCallParams = null; - if(warningStatus == "true"){ + if(warningStatus){ $Id('parm_s_warning').value = true; } Ext.ux.ForgonPageGrid.prototype.getGridParameterMap = function() { Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierForm.js =================================================================== diff -u -r23516 -r23696 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierForm.js (.../supplierForm.js) (revision 23516) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/supplier/supplierForm.js (.../supplierForm.js) (revision 23696) @@ -776,6 +776,9 @@ viewConfig: { forceFit:true, getRowClass : function(record,rowIndex,rowParams,store){ + if(!record.data.isNowUsing){ + return 'my_row_red'; + } var dateOfWarning = record.data.warningDate; var dateOfValidity = record.data.validityDate; var dateOfNow = new Date(); @@ -825,13 +828,13 @@ }); } } - }, { - text : '过期证件', - tooltip : '查看已经过期的证件', - iconCls : 'btn_ext_folder_class', - handler : function() { - expiredCertificateShow(expiredSupplierRegistrtionCertificateStore, supplierRegistrtionCertificateStore, true); - } +// }, { +// text : '过期证件', +// tooltip : '查看已经过期的证件', +// iconCls : 'btn_ext_folder_class', +// handler : function() { +// expiredCertificateShow(expiredSupplierRegistrtionCertificateStore, supplierRegistrtionCertificateStore, true); +// } }], listeners : { celldblclick : function(thiz, rowIndex, columnIndex, eventObject) { @@ -1195,6 +1198,7 @@ hidden : !needCertificate, items : [ { xtype : 'combo', + hidden : !needCertificate, width : 130, fieldLabel : '是否是生产厂家', id : 'isManufacturer', @@ -1225,6 +1229,7 @@ hidden : !needCertificate, items : [ { xtype : 'combo', + hidden : !needCertificate, width : 130, fieldLabel : "是否是供应商", name : "isSupplier", @@ -1271,6 +1276,16 @@ }else{ top.Ext.getCmp('allowApplyUser').hide(); } + if(this.value == madeCompany){ + top.Ext.getCmp('isManufacturer').setRawValue("是"); + top.Ext.getCmp('isSupplier').setRawValue("否"); + }else if(this.value == supplier){ + top.Ext.getCmp('isManufacturer').setRawValue("否"); + top.Ext.getCmp('isSupplier').setRawValue("是"); + }else{ + top.Ext.getCmp('isManufacturer').setRawValue("否"); + top.Ext.getCmp('isSupplier').setRawValue("否"); + } } } },{ @@ -1446,7 +1461,7 @@ if(isSupplier){ var supplierRegistrationCertificates = certificates.supplierRegistrationCertificates; fillCertificateStore(supplierRegistrationCertificates, supplierRegistrtionCertificateStore , - expiredSupplierRegistrtionCertificateStore); + supplierRegistrtionCertificateStore); var authorizationCertificates = certificates.authorizationCertificates; fillCertificateStore(authorizationCertificates, authorizationCertificateStore, expiredAuthorizationCertificateStore); @@ -1688,11 +1703,6 @@ } if(needCertificate){ var certificates = getAllCertificatesInfo(); - }else{ -// top.Ext.getCmp('isManufacturer').setValue(false); - top.Ext.getCmp('isManufacturer').setRawValue("否"); -// top.Ext.getCmp('isSupplier').setValue(false); - top.Ext.getCmp('isSupplier').setRawValue("否"); } Ext.Ajax.request({ Index: ssts-web/src/main/resources/systemset/operationDefine.xml =================================================================== diff -u -r23679 -r23696 --- ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 23679) +++ ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 23696) @@ -460,6 +460,7 @@ +