Index: ssts-web/src/main/webapp/WEB-INF/spring/applicationContext-disinfectsystem-service.xml
===================================================================
diff -u -r29868 -r29964
--- ssts-web/src/main/webapp/WEB-INF/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 29868)
+++ ssts-web/src/main/webapp/WEB-INF/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 29964)
@@ -2561,6 +2561,14 @@
+
+
+
+
+
+
+
+
Index: forgon-core/src/main/java/com/forgon/directory/model/OrgUnitGroup.java
===================================================================
diff -u
--- forgon-core/src/main/java/com/forgon/directory/model/OrgUnitGroup.java (revision 0)
+++ forgon-core/src/main/java/com/forgon/directory/model/OrgUnitGroup.java (revision 29964)
@@ -0,0 +1,68 @@
+package com.forgon.directory.model;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Transient;
+
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+/**
+ * 科室分组设置
+ * @author ZhouPeiMian
+ *
+ */
+@Entity
+@DynamicInsert(false)
+@DynamicUpdate(true)
+public class OrgUnitGroup {
+
+ /**
+ * id
+ */
+ private Long id;
+
+ /**
+ * 科室分组设置名称
+ */
+ private String name;
+
+ /**
+ * 分组内科室名称,实时查询,不持久化到数据库
+ */
+ private String orgUnitNames;
+
+ @Id
+ @GeneratedValue(strategy=GenerationType.AUTO)
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Transient
+ public String getOrgUnitNames() {
+ return orgUnitNames;
+ }
+
+ public void setOrgUnitNames(String orgUnitNames) {
+ this.orgUnitNames = orgUnitNames;
+ }
+
+ /*public List getOrgUnitList(ObjectDao objectDao){
+
+ }*/
+
+}
Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitGroupManagerImpl.java
===================================================================
diff -u
--- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitGroupManagerImpl.java (revision 0)
+++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitGroupManagerImpl.java (revision 29964)
@@ -0,0 +1,141 @@
+package com.forgon.directory.service;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+
+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.directory.model.Org_OrgGroup;
+import com.forgon.exception.SystemException;
+import com.forgon.tools.db.DatabaseUtil;
+import com.forgon.tools.hibernate.BasePoManagerImpl;
+import com.forgon.tools.string.StringTools;
+import com.forgon.tools.util.SqlUtils;
+
+public class OrgUnitGroupManagerImpl extends BasePoManagerImpl implements OrgUnitGroupManager{
+
+ @Override
+ public JSONArray getOrgUnitGroupJSONArray() {
+ String hql = String.format("select g, o from %s g, %s o, %s r where g.id = r.orgGroupId and o.id = r.orgUnitId order by g.id desc ",
+ OrgUnitGroup.class.getSimpleName(), OrgUnit.class.getSimpleName(), Org_OrgGroup.class.getSimpleName());
+ List list = objectDao.findByHql(hql);
+ if(CollectionUtils.isEmpty(list)){
+ return new JSONArray();
+ }
+ Map> orgGroupMap = new LinkedHashMap>();
+ for(int i=0;i orgList = orgGroupMap.get(orgUnitGroup);
+ if(CollectionUtils.isEmpty(orgList)){
+ orgList = new ArrayList();
+ }
+ orgList.add(orgUnit);
+ orgGroupMap.put(orgUnitGroup, orgList);
+ }
+ JSONArray array = new JSONArray();
+ if(!orgGroupMap.isEmpty()){
+ for (OrgUnitGroup orgUnitGroup : orgGroupMap.keySet()) {
+ JSONObject group = new JSONObject();
+ group.put("id", orgUnitGroup.getId());
+ group.put("name", orgUnitGroup.getName());
+ List orgUnitNameList = new ArrayList();
+ List orgList = orgGroupMap.get(orgUnitGroup);
+ if(CollectionUtils.isNotEmpty(orgList)){
+ for (OrgUnit orgUnit : orgList) {
+ orgUnitNameList.add(orgUnit.getName());
+ }
+ }
+ group.put("orgUnitNames", StringTools.join(orgUnitNameList, ";"));
+ array.add(group);
+ }
+ }
+ return array;
+ }
+
+ @Override
+ public JSONObject loadOrgUnitGroup(OrgUnitGroup orgUnitGroup) {
+ if(orgUnitGroup == null || !DatabaseUtil.isPoIdValid(orgUnitGroup.getId())){
+ throw new SystemException("科室分组设置不存在!");
+ }
+ String hql = String.format("select o from %s o, %s r where o.id = r.orgUnitId and r.orgGroupId = %s",
+ OrgUnit.class.getSimpleName(), Org_OrgGroup.class.getSimpleName(), orgUnitGroup.getId());
+ List list = objectDao.findByHql(hql);
+ List orgUnitIdList = new ArrayList();
+ List orgUnitCodeList = new ArrayList();
+ List orgUnitNameList = new ArrayList();
+ if(CollectionUtils.isNotEmpty(list)){
+ for (Object object : list) {
+ OrgUnit ou = (OrgUnit) object;
+ orgUnitIdList.add(ou.getId());
+ orgUnitCodeList.add(ou.getOrgUnitCoding());
+ orgUnitNameList.add(ou.getName());
+ }
+ }
+ JSONObject json = new JSONObject();
+ json.put("id", orgUnitGroup.getId());
+ json.put("name", orgUnitGroup.getName());
+ json.put("orgUnitIds", StringTools.join(orgUnitIdList, ";"));
+ json.put("orgUnitCodes", StringTools.join(orgUnitCodeList, ";"));
+ json.put("orgUnitNames", StringTools.join(orgUnitNameList, ";"));
+ return json;
+ }
+
+ @Override
+ public void batchDeleteOrgUnitGroupByIds(String ids) {
+ if(StringUtils.isBlank(ids)){
+ throw new SystemException("科室分组设置id不存在!");
+ }
+ Collection orgUnitGroupIdList = StringTools.parseToLongs(ids, ";");
+ String deleteGroupSql = String.format("delete from %s where %s ",
+ OrgUnitGroup.class.getSimpleName(), SqlUtils.getNonStringFieldInLargeCollectionsPredicate("id", orgUnitGroupIdList));
+ objectDao.excuteSQL(deleteGroupSql);
+ String deleteOrg_GroupSql = String.format("delete from %s where %s ",
+ Org_OrgGroup.class.getSimpleName(), SqlUtils.getNonStringFieldInLargeCollectionsPredicate("orgGroupId", orgUnitGroupIdList));
+ objectDao.excuteSQL(deleteOrg_GroupSql);
+ }
+
+ @Override
+ public void saveOrUpdateOrgUnitGroup(OrgUnitGroup orgUnitGroup, String departCodes) {
+ if(StringUtils.isBlank(orgUnitGroup.getName())){
+ throw new SystemException("科室分组名称不能为空!");
+ }
+ if(StringUtils.isBlank(departCodes)){
+ throw new SystemException("科室不能为空!");
+ }
+ this.save(orgUnitGroup);
+ if(StringUtils.isNotBlank(departCodes)){
+ List departCodeList = (List) StringTools.toCollectionIgnoreNullAndBlank(departCodes, ";");
+ String hql = String.format("select po from %s po where %s ",
+ OrgUnit.class.getSimpleName(),
+ SqlUtils.getStringFieldInLargeCollectionsPredicate("po.orgUnitCoding", departCodeList));
+ List orgList = objectDao.findByHql(hql);
+ if(CollectionUtils.isEmpty(orgList)){
+ throw new SystemException("科室不存在!");
+ }
+ String deleteOrg_GroupSql = String.format("delete from %s where orgGroupId = %s ",
+ Org_OrgGroup.class.getSimpleName(), orgUnitGroup.getId());
+ objectDao.excuteSQL(deleteOrg_GroupSql);
+ List org_GroupList = new ArrayList();
+ for (OrgUnit orgUnit : orgList) {
+ Org_OrgGroup or = new Org_OrgGroup();
+ or.setOrgGroupId(orgUnitGroup.getId());
+ or.setOrgUnitId(orgUnit.getId());
+ org_GroupList.add(or);
+ }
+ objectDao.batchSaveOrUpdate(org_GroupList);
+ }
+ }
+
+}
Index: forgon-core/src/main/java/com/forgon/directory/action/OrgUnitGroupAction.java
===================================================================
diff -u
--- forgon-core/src/main/java/com/forgon/directory/action/OrgUnitGroupAction.java (revision 0)
+++ forgon-core/src/main/java/com/forgon/directory/action/OrgUnitGroupAction.java (revision 29964)
@@ -0,0 +1,116 @@
+package com.forgon.directory.action;
+
+import java.util.List;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.struts2.convention.annotation.Action;
+import org.apache.struts2.convention.annotation.Namespace;
+import org.apache.struts2.convention.annotation.ParentPackage;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+import com.forgon.directory.model.OrgUnitGroup;
+import com.forgon.directory.service.OrgUnitGroupManager;
+import com.forgon.tools.StrutsParamUtils;
+import com.forgon.tools.StrutsResponseUtils;
+import com.forgon.tools.db.DatabaseUtil;
+import com.opensymphony.xwork2.ModelDriven;
+import com.opensymphony.xwork2.Preparable;
+
+@ParentPackage(value = "default")
+@Namespace(value = "/disinfectSystem")
+@Action(value = "orgUnitGroupAction")
+public class OrgUnitGroupAction implements ModelDriven, Preparable{
+
+ private OrgUnitGroup orgUnitGroup;
+
+ private OrgUnitGroupManager orgUnitGroupManager;
+
+ public void setOrgUnitGroupManager(OrgUnitGroupManager orgUnitGroupManager) {
+ this.orgUnitGroupManager = orgUnitGroupManager;
+ }
+
+ /**
+ * 获取科室分组设置列表
+ */
+ public void findOrgUnitGroupList(){
+ JSONArray array = orgUnitGroupManager.getOrgUnitGroupJSONArray();
+ StrutsResponseUtils.output(true, array);
+ }
+
+ /**
+ * 加载科室分组设置
+ */
+ public void loadOrgUnitGroup(){
+ try {
+ JSONObject json = orgUnitGroupManager.loadOrgUnitGroup(orgUnitGroup);
+ StrutsResponseUtils.output(true, json);
+ } catch (Exception e) {
+ e.printStackTrace();
+ StrutsResponseUtils.output(false, e.getMessage());
+ }
+ }
+
+ /**
+ * 科室分组设置下拉框列表
+ */
+ public void loadOrgUnitGroupList(){
+ List orgUnitGroupList = orgUnitGroupManager.getAll();
+ JSONArray data = new JSONArray();
+ if(CollectionUtils.isNotEmpty(orgUnitGroupList)){
+ for (OrgUnitGroup object : orgUnitGroupList) {
+ JSONObject json = new JSONObject();
+ json.put("id", object.getId());
+ json.put("name", object.getName());
+ data.add(json);
+ }
+ }
+ StrutsResponseUtils.output(true, data);
+ }
+
+ /**
+ * 根据id删除科室分组
+ * @param ids 分组id(1;2;3)
+ */
+ public void deleteOrgUnitGroupByIds(){
+ try {
+ String ids = StrutsParamUtils.getPraramValue("ids", "");
+ orgUnitGroupManager.batchDeleteOrgUnitGroupByIds(ids);
+ StrutsResponseUtils.output(true, "删除成功!");
+ } catch (Exception e) {
+ e.printStackTrace();
+ StrutsResponseUtils.output(false, e.getMessage());
+ }
+ }
+
+ /**
+ * 保存科室分组
+ */
+ public void saveOrUpdateOrgUnitGroup(){
+ try {
+ String departCodes = StrutsParamUtils.getPraramValue("departCodes", "");
+ orgUnitGroupManager.saveOrUpdateOrgUnitGroup(orgUnitGroup, departCodes);
+ StrutsResponseUtils.output(true, "保存成功!");
+ } catch (Exception e) {
+ e.printStackTrace();
+ StrutsResponseUtils.output(false, e.getMessage());
+ }
+ }
+
+ @Override
+ public void prepare() throws Exception {
+ String id = StrutsParamUtils.getPraramValue("id", "");
+ if (DatabaseUtil.isPoIdValid(id)) {
+ orgUnitGroup = orgUnitGroupManager.get(id);
+ } else {
+ orgUnitGroup = new OrgUnitGroup();
+ }
+ }
+
+ @Override
+ public OrgUnitGroup getModel() {
+ return orgUnitGroup;
+ }
+
+}
Index: forgon-core/src/main/java/com/forgon/directory/model/Org_OrgGroup.java
===================================================================
diff -u
--- forgon-core/src/main/java/com/forgon/directory/model/Org_OrgGroup.java (revision 0)
+++ forgon-core/src/main/java/com/forgon/directory/model/Org_OrgGroup.java (revision 29964)
@@ -0,0 +1,53 @@
+package com.forgon.directory.model;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+/**
+ * 科室和科室分组设置中间表
+ * @author ZhouPeiMian
+ *
+ */
+@Entity
+@DynamicInsert(false)
+@DynamicUpdate(true)
+public class Org_OrgGroup {
+
+ @Id
+ @GeneratedValue(strategy=GenerationType.AUTO)
+ private Long id;
+
+ private Long orgUnitId;
+
+ private Long orgGroupId;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getOrgUnitId() {
+ return orgUnitId;
+ }
+
+ public void setOrgUnitId(Long orgUnitId) {
+ this.orgUnitId = orgUnitId;
+ }
+
+ public Long getOrgGroupId() {
+ return orgGroupId;
+ }
+
+ public void setOrgGroupId(Long orgGroupId) {
+ this.orgGroupId = orgGroupId;
+ }
+
+}
Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitGroupManager.java
===================================================================
diff -u
--- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitGroupManager.java (revision 0)
+++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitGroupManager.java (revision 29964)
@@ -0,0 +1,37 @@
+package com.forgon.directory.service;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+import com.forgon.directory.model.OrgUnitGroup;
+import com.forgon.tools.hibernate.BasePoManager;
+
+public interface OrgUnitGroupManager extends BasePoManager {
+
+ /**
+ * 加载科室分组设置列表
+ * @return
+ */
+ public JSONArray getOrgUnitGroupJSONArray();
+
+ /**
+ * 加载科室分组设置
+ * @param orgUnitGroup
+ * @return
+ */
+ public JSONObject loadOrgUnitGroup(OrgUnitGroup orgUnitGroup);
+
+ /**
+ * 批量删除
+ * @param ids
+ */
+ public void batchDeleteOrgUnitGroupByIds(String ids);
+
+ /**
+ * 保存或者修改科室分组设置
+ * @param orgUnitGroup
+ * @param departCodes
+ */
+ public void saveOrUpdateOrgUnitGroup(OrgUnitGroup orgUnitGroup, String departCodes);
+
+}