Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r34735 -r34736 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 34735) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 34736) @@ -2441,11 +2441,27 @@ if(!enableSterilizerConsumptiveMaterialConsumptionFunction){ return; } + HttpOption httpOption = null; + Long sterilizationPurposeId = paramObj.optLong("sterilizationPurposeId"); + if(DatabaseUtil.isPoIdValid(sterilizationPurposeId)){ + httpOption = (HttpOption)objectDao.getById(HttpOption.class.getSimpleName(), sterilizationPurposeId); + } Set deleteDetailIds = SqlUtils.splitStringToSet(paramObj.optString("deleteDetailIds"), ","); + //获取批次库存数量 + Set disposableGoodsBatchIds = new HashSet(); + JSONArray steriConsumeMaterialArr = paramObj.optJSONArray("steriConsumeMaterialArr"); + Set addDisposableGoodsIds = new HashSet(); + if(CollectionUtils.isNotEmpty(steriConsumeMaterialArr)){ + for (int i = 0; i < steriConsumeMaterialArr.size(); i++) { + JSONObject detailsObj = (JSONObject)steriConsumeMaterialArr.get(i); + disposableGoodsBatchIds.add(detailsObj.optLong("disposableGoodsBatchId")); + addDisposableGoodsIds.add(detailsObj.optLong("disposableGoodsId")); + } + } + verifyRequiredSteriConsumeMaterialUseDetail(httpOption, sterilizationRecord.getId(), deleteDetailIds, addDisposableGoodsIds); if(CollectionUtils.isNotEmpty(deleteDetailIds)){ objectDao.excuteSQL("update " + SteriConsumeMaterialUseDetail.class.getSimpleName() + " set isDisable='是' where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("id", deleteDetailIds)); } - JSONArray steriConsumeMaterialArr = paramObj.optJSONArray("steriConsumeMaterialArr"); if(CollectionUtils.isEmpty(steriConsumeMaterialArr)){ return; } @@ -2463,12 +2479,6 @@ steriConsumeMaterialUseRecord.setSterilizationUser(sterilizationRecord.getSterilizationUser()); steriConsumeMaterialUseRecord.setSterilizerName(sterilizationRecord.getSterilizer().getName()); List details = new ArrayList(); - //获取批次库存数量 - Set disposableGoodsBatchIds = new HashSet(); - for (int i = 0; i < steriConsumeMaterialArr.size(); i++) { - JSONObject detailsObj = (JSONObject)steriConsumeMaterialArr.get(i); - disposableGoodsBatchIds.add(detailsObj.optLong("disposableGoodsBatchId")); - } Map disposableGoodsBatchStockAmountMap = getDisposableGoodsBatchStockAmountMap(wareHouse.getId(), disposableGoodsBatchIds); for (int i = 0; i < steriConsumeMaterialArr.size(); i++) { @@ -2503,6 +2513,54 @@ } } /** + * 验证是否已经扫描了必须扫描的灭菌耗材 + * @param httpOption 灭菌目的 + * @param sterilizationRecordId 灭菌记录id + * @param deleteDetailIds 删除的耗材明细id + * @param addDisposableGoodsIds 本次添加的一次性物品id + * @return + */ + private void verifyRequiredSteriConsumeMaterialUseDetail(HttpOption httpOption, Long sterilizationRecordId,Set deleteDetailIds, Set addDisposableGoodsIds){ + if(httpOption == null){ + return; + } + String sql = "select dg.name,dg.specification from SteriliPurposeDisposableGoods s " + + " join DisposableGoods dg on dg.id=s.disposableGoodsId where disposableGoodsId not in (select d.disposableGoodsId from SteriConsumeMaterialUseRecord r " + + "join SteriConsumeMaterialUseDetail d on d.useRecord_id=r.id " + + "where r.sterilizationRecordId="+sterilizationRecordId; + if(CollectionUtils.isNotEmpty(deleteDetailIds)){ + sql += " and " + SqlUtils.getNonStringFieldNotInCollectionsPredicate("d.id", deleteDetailIds); + } + sql += " and sterilizationPurposeId=" +httpOption.getId(); + if(CollectionUtils.isNotEmpty(addDisposableGoodsIds)){ + sql += " and " + SqlUtils.getNonStringFieldNotInCollectionsPredicate("s.disposableGoodsId", addDisposableGoodsIds); + } + ResultSet rs = null; + String msg = ""; + try { + rs = objectDao.executeSql(sql); + + while (rs.next()) { + String name = rs.getString("name"); + String specification = rs.getString("specification"); + if(StringUtils.isNotBlank(specification)){ + name += "["+ specification +"]"; + } + if(StringUtils.isNotBlank(msg)){ + msg += ";"; + } + msg += name; + } + } catch (Exception e) { + e.printStackTrace(); + }finally{ + DatabaseUtil.closeResultSetAndStatement(rs); + } + if(StringUtils.isNotBlank(msg)){ + throw new SystemException(msg+"未扫描,请扫码后再保存记录"); + } + } + /** * 获取仓库中一次性物品批次库存的数量 * @param wareHouseId * @param disposableGoodsBatchIds