Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitGroupManagerImpl.java =================================================================== diff -u -r33367 -r33552 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitGroupManagerImpl.java (.../OrgUnitGroupManagerImpl.java) (revision 33367) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitGroupManagerImpl.java (.../OrgUnitGroupManagerImpl.java) (revision 33552) @@ -35,7 +35,7 @@ public class OrgUnitGroupManagerImpl extends BasePoManagerImpl implements OrgUnitGroupManager{ @Override - public JSONArray getOrgUnitGroupJSONArray(String searchKeyWord, String searchColumns) { + public JSONArray getOrgUnitGroupJSONArray(String searchKeyWord, String searchColumns, String groupType) { List searchSqlList = new ArrayList(); if(StringUtils.isNotBlank(searchKeyWord) && StringUtils.isNotBlank(searchColumns)){ @@ -54,8 +54,8 @@ if(CollectionUtils.isNotEmpty(searchSqlList)){ searchSql = " and (" + StringTools.join(searchSqlList, " or ") + ") "; } - String hql = String.format("select g, o from %s g, %s o, %s r where g.id = r.orgGroupId and o.id = r.orgUnitId %s order by g.id desc ", - OrgUnitGroup.class.getSimpleName(), OrgUnit.class.getSimpleName(), Org_OrgGroup.class.getSimpleName(), searchSql); + String hql = String.format("select g, o from %s g, %s o, %s r where g.id = r.orgGroupId and o.id = r.orgUnitId %s and g.groupType = '%s' order by g.id desc ", + OrgUnitGroup.class.getSimpleName(), OrgUnit.class.getSimpleName(), Org_OrgGroup.class.getSimpleName(), searchSql, groupType); List list = objectDao.findByHql(hql); if(CollectionUtils.isEmpty(list)){ return new JSONArray(); @@ -253,5 +253,39 @@ throw new SystemException("如下科室同时属于【" + bhNameStr + "】所引用的科室分组,不允许一个科室属于多个院区,请修改后再保存!【" + orgNames + "】"); } } + + @Override + public List loadOrgUnits(Long groupID, String groupType) { + if(DatabaseUtil.isPoIdValid(groupID)){ + return loadOrgUnitByGroupID(groupID); + } + return loadOrgUnitByGroupType(groupType); + } + + /** + * 加载某类科室分组的科室,比如加载“手术器械科室分组设置”的科室 + * @param groupType + * @return + */ + @SuppressWarnings("unchecked") + private List loadOrgUnitByGroupType(String groupType) { + String hql = String.format("select o from %s g, %s o, %s r where g.id = r.orgGroupId and o.id = r.orgUnitId and g.groupType = '%s' order by g.id desc ", + OrgUnitGroup.class.getSimpleName(), OrgUnit.class.getSimpleName(), Org_OrgGroup.class.getSimpleName(), groupType); + return objectDao.findByHql(hql); + } + + /** + * 加载某个科室分组的科室 + * @param groupID + * @return + */ + @SuppressWarnings("unchecked") + private List loadOrgUnitByGroupID(Long groupID) { + String hql = String.format("select po from %s po where po.id in (select id from %s where orgGroupId = %s)", + OrgUnit.class.getSimpleName(), + Org_OrgGroup.class.getSimpleName(), + groupID); + return objectDao.findByHql(hql); + } } Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitGroupManager.java =================================================================== diff -u -r29991 -r33552 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitGroupManager.java (.../OrgUnitGroupManager.java) (revision 29991) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitGroupManager.java (.../OrgUnitGroupManager.java) (revision 33552) @@ -1,8 +1,11 @@ package com.forgon.directory.service; +import java.util.List; + import net.sf.json.JSONArray; import net.sf.json.JSONObject; +import com.forgon.directory.model.OrgUnit; import com.forgon.directory.model.OrgUnitGroup; import com.forgon.tools.hibernate.BasePoManager; @@ -17,9 +20,10 @@ * 加载科室分组设置列表 * @param searchColumns * @param searchKeyWord + * @param groupType * @return */ - public JSONArray getOrgUnitGroupJSONArray(String searchKeyWord, String searchColumns); + public JSONArray getOrgUnitGroupJSONArray(String searchKeyWord, String searchColumns, String groupType); /** * 加载科室分组设置 @@ -40,5 +44,12 @@ * @param departCodes */ public void saveOrUpdateOrgUnitGroup(OrgUnitGroup orgUnitGroup, String departCodes); - + + /** + * 加载某个或者某类科室分组的科室 + * @param groupID 科室分组ID + * @param groupType 科室分组类型:“科室分组设置”或者“手术器械科室分组设置” + * @return + */ + public List loadOrgUnits(Long groupID, String groupType); } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/CustomReportsOfZsyy.java =================================================================== diff -u -r33526 -r33552 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/CustomReportsOfZsyy.java (.../CustomReportsOfZsyy.java) (revision 33526) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/CustomReportsOfZsyy.java (.../CustomReportsOfZsyy.java) (revision 33552) @@ -6,16 +6,22 @@ import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.databaseadapter.service.SqlFunctionsAdapter; +import com.forgon.directory.model.OrgUnit; +import com.forgon.directory.model.OrgUnitGroup; +import com.forgon.directory.service.OrgUnitGroupManager; import com.forgon.directory.service.OrgUnitManager; import com.forgon.disinfectsystem.barcode.service.BarcodeManager; import com.forgon.disinfectsystem.basedatamanager.reportoption.GoodsOptionManager; @@ -44,6 +50,7 @@ import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.db.InitDbConnection; import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.string.StringTools; import com.forgon.tools.util.SqlUtils; /** @@ -107,6 +114,8 @@ private DataIndex dataIndex; @Autowired private WorkQualityCollectionDataIndex workQualityCollectionDataIndex; + @Autowired + private OrgUnitGroupManager orgUnitGroupManager; /** * 中大附一的工作质量持续收集统计报表的实现 * @param startAndEndDays @@ -193,7 +202,7 @@ bean3.setTitle("应急处理器械次数 "); bean3.setRowNum(list.size()+1); list.add(bean3); - String operatingRoomCodes = CssdUtils.getSystemSetConfigByName("operatingRoomCodes"); + String operatingRoomCodes = getOperatingRoomCodes(); String notInDepartSql = ""; if(StringUtils.isNotBlank(operatingRoomCodes)){ String[] departArr = operatingRoomCodes.split(","); @@ -502,6 +511,22 @@ } /** + * 获取手术器械科室分组设置指定所有科室 + * @return + */ + private String getOperatingRoomCodes() { + List orgUnitList = orgUnitGroupManager.loadOrgUnits(null, OrgUnitGroup.GROUP_TYPE_OPERATIONROOM_GROUP); + if(CollectionUtils.isEmpty(orgUnitList)){ + return ""; + } + Set orgUnitCodeSet = new HashSet(); + for (OrgUnit orgUnit : orgUnitList) { + orgUnitCodeSet.add(orgUnit.getOrgUnitCoding()); + } + return StringTools.join(orgUnitCodeSet, ","); + } + + /** * 中大附一的工作质量持续收集统计报表实现(按年度) * @param querySupplyRoom * @param year @@ -563,7 +588,7 @@ //joinTwo = " join (select td.id tid, sum(mi.count) amount from MaterialInstance mi, tousseDefinition td where mi.tousse_id=td.id and td.forDisplay=1 and td.tousseGroupName = '专科' group by td.id) tdc on tdc.tid=cit.tousseDefinitionID "; joinThree = " join (select td.id tid, sum(mi.count) amount from MaterialInstance mi, tousseDefinition td where mi.tousse_id=td.id and td.forDisplay=1 group by td.id) tdc on tdc.tid=ritem.tousseDefinitionId "; } - String operatingRoomCodes = CssdUtils.getSystemSetConfigByName("operatingRoomCodes"); + String operatingRoomCodes = getOperatingRoomCodes(); String notInDepartSql = ""; if(StringUtils.isNotBlank(operatingRoomCodes)){ String[] departArr = operatingRoomCodes.split(","); Index: ssts-web/src/main/webapp/dataUpdater/sqls/4.9.88_4.9.89_sqlserver.sql =================================================================== diff -u -r33540 -r33552 --- ssts-web/src/main/webapp/dataUpdater/sqls/4.9.88_4.9.89_sqlserver.sql (.../4.9.88_4.9.89_sqlserver.sql) (revision 33540) +++ ssts-web/src/main/webapp/dataUpdater/sqls/4.9.88_4.9.89_sqlserver.sql (.../4.9.88_4.9.89_sqlserver.sql) (revision 33552) @@ -1,4 +1,5 @@ update MaterialDefinition set isPrintToLabel = '是' where isPrintToLabel is null; update Toussedefinition set temporaryPurchase = '否' where temporaryPurchase is null; +update OrgUnitGroup set groupType = '科室分组设置' where groupType is null; ALTER TABLE DataModifyRecord ALTER COLUMN oldValue text; ALTER TABLE DataModifyRecord ALTER COLUMN newValue text; \ No newline at end of file Index: ssts-web/src/main/webapp/dataUpdater/sqls/4.9.88_4.9.89_oracle.sql =================================================================== diff -u -r33540 -r33552 --- ssts-web/src/main/webapp/dataUpdater/sqls/4.9.88_4.9.89_oracle.sql (.../4.9.88_4.9.89_oracle.sql) (revision 33540) +++ ssts-web/src/main/webapp/dataUpdater/sqls/4.9.88_4.9.89_oracle.sql (.../4.9.88_4.9.89_oracle.sql) (revision 33552) @@ -1,5 +1,6 @@ update MaterialDefinition set isPrintToLabel = '是' where isPrintToLabel is null; update Toussedefinition set temporaryPurchase = '否' where temporaryPurchase is null; +update OrgUnitGroup set groupType = '科室分组设置' where groupType is null; execute immediate 'alter table DataModifyRecord add (foo clob)'; execute immediate 'update DataModifyRecord set foo = oldValue'; execute immediate 'commit'; Index: forgon-core/src/main/java/com/forgon/directory/action/OrgUnitGroupAction.java =================================================================== diff -u -r29991 -r33552 --- forgon-core/src/main/java/com/forgon/directory/action/OrgUnitGroupAction.java (.../OrgUnitGroupAction.java) (revision 29991) +++ forgon-core/src/main/java/com/forgon/directory/action/OrgUnitGroupAction.java (.../OrgUnitGroupAction.java) (revision 33552) @@ -43,7 +43,8 @@ try { String searchKeyWord = StrutsParamUtils.getPraramValue("searchKeyWord", ""); String searchColumns = StrutsParamUtils.getPraramValue("searchColumns", ""); - JSONArray array = orgUnitGroupManager.getOrgUnitGroupJSONArray(searchKeyWord, searchColumns); + String groupType = StrutsParamUtils.getPraramValue("groupType", OrgUnitGroup.GROUP_TYPE_ORG_GROUP); + JSONArray array = orgUnitGroupManager.getOrgUnitGroupJSONArray(searchKeyWord, searchColumns, groupType); StrutsResponseUtils.output(true, array); } catch (Exception e) { e.printStackTrace(); Index: forgon-core/src/main/java/com/forgon/directory/model/OrgUnitGroup.java =================================================================== diff -u -r29964 -r33552 --- forgon-core/src/main/java/com/forgon/directory/model/OrgUnitGroup.java (.../OrgUnitGroup.java) (revision 29964) +++ forgon-core/src/main/java/com/forgon/directory/model/OrgUnitGroup.java (.../OrgUnitGroup.java) (revision 33552) @@ -19,6 +19,9 @@ @DynamicUpdate(true) public class OrgUnitGroup { + public final static String GROUP_TYPE_ORG_GROUP = "科室分组设置"; + public final static String GROUP_TYPE_OPERATIONROOM_GROUP = "手术器械科室分组设置"; + /** * id */ @@ -33,6 +36,11 @@ * 分组内科室名称,实时查询,不持久化到数据库 */ private String orgUnitNames; + + /** + * 科室分组类型 + */ + private String groupType; @Id @GeneratedValue(strategy=GenerationType.AUTO) @@ -60,9 +68,14 @@ public void setOrgUnitNames(String orgUnitNames) { this.orgUnitNames = orgUnitNames; } + - /*public List getOrgUnitList(ObjectDao objectDao){ - - }*/ + public String getGroupType() { + return groupType; + } + + public void setGroupType(String groupType) { + this.groupType = groupType; + } }