Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java =================================================================== diff -u -r22638 -r22758 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java (.../OrgUnitManager.java) (revision 22638) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java (.../OrgUnitManager.java) (revision 22758) @@ -164,7 +164,7 @@ * @param type 申请单的物品类型(即:“器械包”或者“一次性物品”) * @return */ - public List getCssdsByApplyDepartAndType( + public Collection getCssdsByApplyDepartAndType( String applyDepartCode, String type); /** * 根据申请科室编码及申请单的物品类型获取处理科室,如果有多个,返回第一个 Index: ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.js =================================================================== diff -u -r22697 -r22758 --- ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.js (.../goodsApplicationView.js) (revision 22697) +++ ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.js (.../goodsApplicationView.js) (revision 22758) @@ -346,6 +346,7 @@ } }, fields : [ + {name : 'defaultHandleDepart',mapping : 'defaultHandleDepart'}, {name : 'cssdOrgUnitCode',mapping : 'cssdOrgUnitCode'}, {name : 'name',mapping : 'cssdOrgUnitName'} ], Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java =================================================================== diff -u -r22638 -r22758 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java (.../OrgUnitManagerImpl.java) (revision 22638) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java (.../OrgUnitManagerImpl.java) (revision 22758) @@ -1218,7 +1218,7 @@ @SuppressWarnings("unchecked") @Override - public List getCssdsByApplyDepartAndType(String applyDepartCode, String type) { + public Collection getCssdsByApplyDepartAndType(String applyDepartCode, String type) { String sql = " where 1=1 "; //如果申请科室不为空,根据申请科室及类型查询其处理科室 if(StringUtils.isNotBlank(applyDepartCode)){ @@ -1229,32 +1229,44 @@ CssdServiceDepts.TOUSSETYPE_DIPOSABLEGOODS.equals(type) ? type : CssdServiceDepts.TOUSSETYPE_TOUSSE); } } - String querySql = "select distinct cssdOrgUnitCode,cssdOrgUnitName from " + CssdServiceDepts.class.getSimpleName() + " po " + sql; - List cssdServiceDeptsList = new ArrayList(); + String querySql = "select defaultHandleDepart,cssdOrgUnitCode,cssdOrgUnitName from " + CssdServiceDepts.class.getSimpleName() + " po " + sql; + Map map = new HashMap(); ResultSet rs = null; try{ rs = objectDao.executeSql(querySql); - CssdServiceDepts cssdServiceDepts = null; while(rs.next()){ - cssdServiceDepts = new CssdServiceDepts(); - cssdServiceDepts.setCssdOrgUnitCode(rs.getString("cssdOrgUnitCode")); - cssdServiceDepts.setCssdOrgUnitName(rs.getString("cssdOrgUnitName")); - cssdServiceDeptsList.add(cssdServiceDepts); + String defaultHandleDepart = StringTools.defaultString(rs.getString("defaultHandleDepart")); + String cssdOrgUnitCode = StringTools.defaultString(rs.getString("cssdOrgUnitCode")); + String cssdOrgUnitName = StringTools.defaultString(rs.getString("cssdOrgUnitName")); + String key = cssdOrgUnitCode + cssdOrgUnitName; + + CssdServiceDepts cssdServiceDepts = map.get(key); + if (cssdServiceDepts == null) { + cssdServiceDepts = new CssdServiceDepts(); + cssdServiceDepts.setCssdOrgUnitCode(cssdOrgUnitCode); + cssdServiceDepts.setCssdOrgUnitName(cssdOrgUnitName); + } + if (Constants.STR_YES.equals(defaultHandleDepart)) { + cssdServiceDepts.setDefaultHandleDepart(defaultHandleDepart); + } + map.put(key, cssdServiceDepts); } }catch(Exception e){ e.printStackTrace(); }finally{ DatabaseUtil.closeResultSetAndStatement(rs); } - return cssdServiceDeptsList; + return map.values(); } @Override public CssdServiceDepts getCssdServiceDepts(String applyDepartCode, String type) { - List list = getCssdsByApplyDepartAndType(applyDepartCode,type); + Collection list = getCssdsByApplyDepartAndType(applyDepartCode,type); if(list != null && !list.isEmpty()){ - return list.get(0); + for (CssdServiceDepts cssdServiceDepts : list) { + return cssdServiceDepts; + } } return null; } Index: ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationForm.js =================================================================== diff -u -r22682 -r22758 --- ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationForm.js (.../goodsApplicationForm.js) (revision 22682) +++ ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationForm.js (.../goodsApplicationForm.js) (revision 22758) @@ -1160,11 +1160,7 @@ //4、设置处理科室,如果加载后的数量为1,则进行默认处理科室赋值,如果isOpenLoadTemplateByUnit=true需要根据所选的科室重新加载模板,否则使用登录用户当前的模板 handleDepartStore.load({ callback: function(records, operation, success) { - if (records && records.length == 1){ - var record = records[0]; - top.Ext4.getCmp("handleDepartCoding").setValue(record.data.cssdOrgUnitCode); - top.Ext4.getCmp('handleDepart').setValue(record.data.name); - + if (setDefaultHandleDepart(records)) { reloadComboGoodsStoreAndTreeStore = true; } if (reloadComboGoodsStoreAndTreeStore) { @@ -1429,11 +1425,7 @@ } handleDepartStore.load({ callback: function(records, operation, success) { - if (records && records.length == 1){ - var record = records[0]; - top.Ext4.getCmp("handleDepartCoding").setValue(record.data.cssdOrgUnitCode); - top.Ext4.getCmp('handleDepart').setValue(record.data.name); - } + setDefaultHandleDepart(records); loadProduction({}, false); } }); @@ -1451,11 +1443,7 @@ } else { handleDepartStore.load({ callback: function(records, operation, success) { - if (records && records.length == 1){ - var record = records[0]; - top.Ext4.getCmp("handleDepartCoding").setValue(record.data.cssdOrgUnitCode); - top.Ext4.getCmp('handleDepart').setValue(record.data.name); - } + setDefaultHandleDepart(records); loadProduction({}, false); } }); @@ -1815,6 +1803,32 @@ } /** + * 设置默认处理科室的规则 1、一个处理科室时 2、多个处理科室时,则取用户配置的那一个. + * @param records 处理科室的数据集合 + * return 如果设置成功则返回true,否则返回false + */ +function setDefaultHandleDepart(records) { + var setupSuccess = false; + if (records && records.length == 1){ + var record = records[0]; + top.Ext4.getCmp("handleDepartCoding").setValue(record.get('cssdOrgUnitCode')); + top.Ext4.getCmp('handleDepart').setValue(record.get('name')); + setupSuccess = true; + } else if (records && records.length > 1) { + for (var i = 0; i < records.length; i ++) { + var record = records[i]; + if (record.get('defaultHandleDepart') == '是') { + top.Ext4.getCmp("handleDepartCoding").setValue(record.get('cssdOrgUnitCode')); + top.Ext4.getCmp('handleDepart').setValue(record.get('name')); + setupSuccess = true; + break; + } + } + } + return setupSuccess; +} + +/** * 切换申请模板之后重新计算一次性物品节点的单价和小计 * @param disposableGoodsNodes 一次性物品节点集合 * @param disposableFloatPercent一次性物品的浮动系数 Index: forgon-core/src/main/java/com/forgon/directory/action/OrgUnitAction.java =================================================================== diff -u -r22638 -r22758 --- forgon-core/src/main/java/com/forgon/directory/action/OrgUnitAction.java (.../OrgUnitAction.java) (revision 22638) +++ forgon-core/src/main/java/com/forgon/directory/action/OrgUnitAction.java (.../OrgUnitAction.java) (revision 22758) @@ -3,6 +3,7 @@ import java.io.IOException; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; @@ -327,13 +328,14 @@ String tousseType = StrutsParamUtils.getPraramValue("tousseType", ""); Map result = new HashMap(); - List list = orgUnitManager.getCssdsByApplyDepartAndType( + Collection list = orgUnitManager.getCssdsByApplyDepartAndType( applyDepartCode, tousseType); List> resultMapList = new ArrayList>(); if(CollectionUtils.isNotEmpty(list)){ Map resultMap = null; for(CssdServiceDepts cssdServiceDepts : list){ resultMap = new HashMap(); + resultMap.put("defaultHandleDepart", cssdServiceDepts.getDefaultHandleDepart()); resultMap.put("cssdOrgUnitCode", cssdServiceDepts.getCssdOrgUnitCode()); resultMap.put("cssdOrgUnitName", cssdServiceDepts.getCssdOrgUnitName()); resultMapList.add(resultMap);