Index: forgon-core/src/main/java/com/forgon/directory/model/BrancheOfHospital.java =================================================================== diff -u --- forgon-core/src/main/java/com/forgon/directory/model/BrancheOfHospital.java (revision 0) +++ forgon-core/src/main/java/com/forgon/directory/model/BrancheOfHospital.java (revision 29975) @@ -0,0 +1,75 @@ +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 BrancheOfHospital { + + /** + * ID + */ + private Long id; + + /** + * 序号(大于等于0的整数) + */ + private Long serialNumber; + + /** + * 院区设置名称 + */ + private String name; + + /** + * 科室分组设置id + */ + private Long orgUnitGroupId; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getSerialNumber() { + return serialNumber; + } + + public void setSerialNumber(Long serialNumber) { + this.serialNumber = serialNumber; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Long getOrgUnitGroupId() { + return orgUnitGroupId; + } + + public void setOrgUnitGroupId(Long orgUnitGroupId) { + this.orgUnitGroupId = orgUnitGroupId; + } + +} Index: forgon-core/src/main/java/com/forgon/directory/service/BrancheOfHospitalManagerImpl.java =================================================================== diff -u --- forgon-core/src/main/java/com/forgon/directory/service/BrancheOfHospitalManagerImpl.java (revision 0) +++ forgon-core/src/main/java/com/forgon/directory/service/BrancheOfHospitalManagerImpl.java (revision 29975) @@ -0,0 +1,83 @@ +package com.forgon.directory.service; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +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.BrancheOfHospital; +import com.forgon.directory.model.OrgUnitGroup; +import com.forgon.exception.SystemException; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.BasePoManagerImpl; +import com.forgon.tools.string.StringTools; + +public class BrancheOfHospitalManagerImpl extends BasePoManagerImpl implements BrancheOfHospitalManager { + + @Override + public JSONArray findBrancheOfHospitalList(String searchKeyWord, String searchColumns) { + + List searchSqlList = new ArrayList(); + String searchSql = ""; + if(StringUtils.isNotBlank(searchKeyWord)){ + if(StringUtils.isNotBlank(searchColumns)){ + Collection columnList = StringTools.toCollectionIgnoreNullAndBlank(searchColumns, ";"); + for (String column : columnList) { + if(StringUtils.equals(column, "name")){ + String nameSql = " bh.name like '%" + searchKeyWord + "%' "; + searchSqlList.add(nameSql); + } else if(StringUtils.equals(column, "orgUnitGroup")){ + String orgUnitGroupSql = " bh.orgUnitGroupId in (select id from " + OrgUnitGroup.class.getSimpleName() + " where name like '%" + searchKeyWord + "%') "; + searchSqlList.add(orgUnitGroupSql); + } + } + } + } + if(CollectionUtils.isNotEmpty(searchSqlList)){ + searchSql = " and ( " + StringTools.join(searchSqlList, " or ") + ") "; + } + String hql = String.format("select bh, g from %s bh, %s g " + + " where bh.orgUnitGroupId = g.id %s " + + " order by bh.serialNumber ", + BrancheOfHospital.class.getSimpleName(), OrgUnitGroup.class.getSimpleName(), searchSql); + List list = objectDao.findByHql(hql); + if(CollectionUtils.isEmpty(list)){ + return new JSONArray(); + } + JSONArray array = new JSONArray(); + for(int i=0;i, Preparable{ + + private BrancheOfHospital brancheOfHospital; + + private BrancheOfHospitalManager brancheOfHospitalManager; + + public void setBrancheOfHospitalManager(BrancheOfHospitalManager brancheOfHospitalManager) { + this.brancheOfHospitalManager = brancheOfHospitalManager; + } + + /** + * 加载院区设置列表 + */ + public void findBrancheOfHospitalList(){ + try { + String searchKeyWord = StrutsParamUtils.getPraramValue("searchKeyWord", ""); + String searchColumns = StrutsParamUtils.getPraramValue("searchColumns", ""); + JSONArray data = brancheOfHospitalManager.findBrancheOfHospitalList(searchKeyWord, searchColumns); + StrutsResponseUtils.output(true, data); + } catch (Exception e) { + e.printStackTrace(); + StrutsResponseUtils.output(false, e.getMessage()); + } + } + + /** + * 保存院区设置 + */ + public void saveOrUpdateBrancheOfHospital(){ + try { + brancheOfHospitalManager.save(brancheOfHospital); + StrutsResponseUtils.output(true, "保存成功!"); + } catch (Exception e) { + e.printStackTrace(); + StrutsResponseUtils.output(false, e.getMessage()); + } + } + + /** + * 根据ID删除院区设置 + */ + public void deleteBrancheOfHospitalByIds(){ + try { + String ids = StrutsParamUtils.getPraramValue("ids", ""); + brancheOfHospitalManager.delete(ids, ";"); + StrutsResponseUtils.output(true, "删除成功!"); + } catch (Exception e) { + e.printStackTrace(); + StrutsResponseUtils.output(false, e.getMessage()); + } + } + + /** + * 加载院区设置 + */ + public void loadBrancheOfHospital(){ + try { + JSONObject json = brancheOfHospitalManager.loadBrancheOfHospital(brancheOfHospital); + StrutsResponseUtils.output(true, json); + } 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)) { + brancheOfHospital = brancheOfHospitalManager.get(id); + } else { + brancheOfHospital = new BrancheOfHospital(); + } + } + + @Override + public BrancheOfHospital getModel() { + return brancheOfHospital; + } + +} Index: forgon-core/src/main/java/com/forgon/directory/model/Org_OrgGroup.java =================================================================== diff -u -r29964 -r29975 --- forgon-core/src/main/java/com/forgon/directory/model/Org_OrgGroup.java (.../Org_OrgGroup.java) (revision 29964) +++ forgon-core/src/main/java/com/forgon/directory/model/Org_OrgGroup.java (.../Org_OrgGroup.java) (revision 29975) @@ -22,8 +22,14 @@ @GeneratedValue(strategy=GenerationType.AUTO) private Long id; + /** + * 科室ID + */ private Long orgUnitId; + /** + * 科室分组设置ID + */ private Long orgGroupId; public Long getId() { Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitGroupManagerImpl.java =================================================================== diff -u -r29969 -r29975 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitGroupManagerImpl.java (.../OrgUnitGroupManagerImpl.java) (revision 29969) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitGroupManagerImpl.java (.../OrgUnitGroupManagerImpl.java) (revision 29975) @@ -13,6 +13,7 @@ import net.sf.json.JSONArray; import net.sf.json.JSONObject; +import com.forgon.directory.model.BrancheOfHospital; import com.forgon.directory.model.OrgUnit; import com.forgon.directory.model.OrgUnitGroup; import com.forgon.directory.model.Org_OrgGroup; @@ -116,6 +117,12 @@ throw new SystemException("科室分组设置id不存在!"); } Collection orgUnitGroupIdList = StringTools.parseToLongs(ids, ";"); + String countSql = String.format("select count (*) from %s where %s ", + BrancheOfHospital.class.getSimpleName(), + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("orgUnitGroupId", orgUnitGroupIdList)); + if(objectDao.countBySql(countSql) > 0){ + throw new SystemException("科室分组已经被使用,不能删除!"); + } String deleteGroupSql = String.format("delete from %s where %s ", OrgUnitGroup.class.getSimpleName(), SqlUtils.getNonStringFieldInLargeCollectionsPredicate("id", orgUnitGroupIdList)); objectDao.excuteSQL(deleteGroupSql); Index: forgon-core/src/main/java/com/forgon/directory/service/BrancheOfHospitalManager.java =================================================================== diff -u --- forgon-core/src/main/java/com/forgon/directory/service/BrancheOfHospitalManager.java (revision 0) +++ forgon-core/src/main/java/com/forgon/directory/service/BrancheOfHospitalManager.java (revision 29975) @@ -0,0 +1,26 @@ +package com.forgon.directory.service; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import com.forgon.directory.model.BrancheOfHospital; +import com.forgon.tools.hibernate.BasePoManager; + +public interface BrancheOfHospitalManager extends BasePoManager { + + /** + * 加载院区设置列表 + * @param searchColumns + * @param searchKeyWord + * @return + */ + public JSONArray findBrancheOfHospitalList(String searchKeyWord, String searchColumns); + + /** + * 根据id加载院区设置 + * @param brancheOfHospital + * @return + */ + public JSONObject loadBrancheOfHospital(BrancheOfHospital brancheOfHospital); + +}