Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/sterilizer/service/SterilizerManagerImpl.java =================================================================== diff -u -r17322 -r18472 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/sterilizer/service/SterilizerManagerImpl.java (.../SterilizerManagerImpl.java) (revision 17322) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/sterilizer/service/SterilizerManagerImpl.java (.../SterilizerManagerImpl.java) (revision 18472) @@ -86,8 +86,13 @@ return (Sterilizer) objectDao.getByProperty(Sterilizer.class .getSimpleName(), "name", name); } - + @Override + public Sterilizer getSterilizerByNameForUpdate(String name) { + return (Sterilizer) objectDao.getByProperty_ForUpdate(Sterilizer.class + .getSimpleName(), "name", name); + } + @Override public ConsumptiveConfig getConsumptiveById(String consumptiveId) { return (ConsumptiveConfig) objectDao.getByProperty(ConsumptiveConfig.class .getSimpleName(), "id", Long.valueOf(consumptiveId)); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/sterilizer/service/SterilizerManager.java =================================================================== diff -u -r17322 -r18472 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/sterilizer/service/SterilizerManager.java (.../SterilizerManager.java) (revision 17322) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/sterilizer/service/SterilizerManager.java (.../SterilizerManager.java) (revision 18472) @@ -35,6 +35,12 @@ public boolean verifySterilizer(String id,String name); public Sterilizer getSterilizerByName(String name); + /** + * 获取灭菌炉,加锁 + * @param name + * @return + */ + public Sterilizer getSterilizerByNameForUpdate(String name); public ConsumptiveConfig getConsumptiveById(String consumptiveId); Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r18445 -r18472 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 18445) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 18472) @@ -1107,8 +1107,15 @@ boolean isNewRecord = false; if(sterilizationRecord.getId() == null || sterilizationRecord.getId() == 0L) { + // 获取灭菌炉,加锁 + Sterilizer sr = sterilizerManager.getSterilizerByNameForUpdate(sterilizationRecord.getSterilizerName()); + if(sr == null){ + result.put(JSONUtil.JSON_KEY_SUCCESS, false); + result.put(JSONUtil.JSON_KEY_MESSAGE, "找不到灭菌炉"); + return result; + } // 新加灭菌记录,校验 - if( !isAllSterilizationEnd(sterilizationRecord.getSterilizerName())) + if( !isAllSterilizationEnd(sr.getName())) { result.put(JSONUtil.JSON_KEY_SUCCESS, false); result.put(JSONUtil.JSON_KEY_MESSAGE, "灭菌炉正在灭菌中");