Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r33934 -r34035 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 33934) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 34035) @@ -121,6 +121,7 @@ import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingRecord; import com.forgon.disinfectsystem.entity.returngoodsrecord.ReturnGoodsRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.foreignproxydisinfection.ForeignProxyDisinfection; +import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.entity.urgent.UrgentLevel; import com.forgon.disinfectsystem.entity.videomonitor.PackingRecordVideo; @@ -8613,11 +8614,21 @@ if (StringUtils.isNotBlank(ids) || DatabaseUtil.isPoIdValid(urgentLevelId)) { String[] idArray = ids.split(";"); UrgentLevel urgentLevel = urgentLevelManager.get(urgentLevelId); + Set sterilizationRecordIds = new HashSet(); + Set reviewedBasketIds = new HashSet(); + Set tiIds = new HashSet(); for (String tousseInstanceId : idArray) { TousseInstance ti = tousseInstanceManager.get(tousseInstanceId); - if(ti == null || StringUtils.equals(Constants.STR_YES,ti.getIsUrgentTousse())){ + if(ti == null || (ti.getUrgentLevel() != null && MathTools.equals(urgentLevelId, ti.getUrgentLevel().getId()))){ continue; } + if(DatabaseUtil.isPoIdValid(ti.getSterilizationRecord_id())){ + sterilizationRecordIds.add(ti.getSterilizationRecord_id()); + }else if(DatabaseUtil.isPoIdValid(ti.getReviewBasket_id())){ + reviewedBasketIds.add(ti.getReviewBasket_id()); + }else{ + tiIds.add(ti.getId()); + } ti.setUrgentLevel(urgentLevel); ti.setIsUrgentTousse(Constants.STR_YES); InvoicePlan invoicePlan = null; @@ -8640,9 +8651,70 @@ invoicePlan.setUrgentInfo(); } } + resetSterilizationRecordUrgent(sterilizationRecordIds, reviewedBasketIds, tiIds); } } - + /** + * 修改包实例的加急时,修改灭菌记录的加急 + * @param sterilizationRecordIds + * @param reviewedBasketIds + * @param tiIds + */ + private void resetSterilizationRecordUrgent(Set sterilizationRecordIds, Set reviewedBasketIds, Set tiIds){ + String sql = ""; + if(CollectionUtils.isNotEmpty(reviewedBasketIds)){ + sql = "select distinct sterilizationRecord_id from sterilization_reviewed where " + + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("reviewedBasket_id", reviewedBasketIds); + } + if(CollectionUtils.isNotEmpty(tiIds)){ + if(StringUtils.isNotBlank(sql)){ + sql += " union all "; + } + sql += "select distinct st.sterilizationRecord_id from sterilization_tousseInstance st where " + + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("tousseInstance_id", tiIds); + } + if(StringUtils.isNotBlank(sql)){ + ResultSet rs = null; + try { + rs = objectDao.executeSql(sql); + while(rs.next()){ + Long sterilizationRecord_id = rs.getLong("sterilizationRecord_id"); + sterilizationRecordIds.add(sterilizationRecord_id); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + } + if(CollectionUtils.isNotEmpty(sterilizationRecordIds)){ + objectDao.flush();//不刷新就会查到修改前的等级 + //设置最高加急等级 + for (Long sterilizationRecordId : sterilizationRecordIds) { + sql = "update "+ SterilizationRecord.class.getSimpleName() + " set urgentLevel_id=( " + + "select ur1.id from "+ UrgentLevel.class.getSimpleName() + " ur1 where ur1.grade=( " + + "select max(ur.grade) from "+ TousseInstance.class.getSimpleName() + " ti " + + "join "+ UrgentLevel.class.getSimpleName() + " ur on ur.id=ti.urgentLevel_id " + + " left join sterilization_tousseInstance st on st.tousseinstance_id=ti.id " + + " left join sterilization_reviewed srd on srd.reviewedBasket_id=ti.reviewBasket_id " + + "where " + + "ti.sterilizationRecord_id is null " + + "and ti.sterilizationRecord_id="+ + sterilizationRecordId + +" or srd.sterilizationRecord_id="+ + sterilizationRecordId + +" or st.sterilizationRecord_id="+ + sterilizationRecordId + +") " + + ") where id="+ + sterilizationRecordId; + objectDao.excuteSQL(sql); + sql = "update "+ SterilizationRecord.class.getSimpleName() + " set urgent=case when urgentLevel_id is null then '否' else '是' end where id=" + + sterilizationRecordId; + objectDao.excuteSQL(sql); + } + } + } private void setTousseItemUrgent(InvoicePlan invoicePlan,Long tousseDefinitionId, UrgentLevel urgentLevel){ if(invoicePlan != null){ if(StringUtils.equals(invoicePlan.getDeliverStatus(), InvoicePlan.DELIVERSTATUS_DELIVERED)){ Index: ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordView.js =================================================================== diff -u -r33733 -r34035 --- ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordView.js (.../sterilizationRecordView.js) (revision 33733) +++ ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordView.js (.../sterilizationRecordView.js) (revision 34035) @@ -1717,7 +1717,7 @@ printObjWithdefaultPrintFun(obj); }; grid = new Ext.ux.ForgonPageGrid({ - title: '灭菌列表', + title: '灭菌记录列表', tbar: tbar, pageSize: 20, defaultSortField: 'id',