Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManager.java =================================================================== diff -u --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManager.java (revision 0) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManager.java (revision 15160) @@ -0,0 +1,9 @@ +package com.forgon.disinfectsystem.toussetransition.service; + +import com.forgon.disinfectsystem.entity.toussetransition.TousseTransitionRecord; +import com.forgon.tools.hibernate.BasePoManager; + +public interface TousseTransitionRecordManager extends + BasePoManager { + +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/toussetransition/TousseTransitionItem.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/toussetransition/TousseTransitionItem.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/toussetransition/TousseTransitionItem.java (revision 15160) @@ -0,0 +1,61 @@ +package com.forgon.disinfectsystem.entity.toussetransition; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; + +/** + * 器械包交接明细 + * @author kzh + * + */ +@Entity +@Table(name = "TousseTransitionItem") +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +public class TousseTransitionItem { + private Long id; + /** + * 交接记录id + */ + private Long tousseTransitionRecordId; + /** + * 申请项id + */ + private Long tousseItemId; + /** + * 器械包条码 + */ + private String tousseBarcode; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public Long getTousseTransitionRecordId() { + return tousseTransitionRecordId; + } + public void setTousseTransitionRecordId(Long tousseTransitionRecordId) { + this.tousseTransitionRecordId = tousseTransitionRecordId; + } + public Long getTousseItemId() { + return tousseItemId; + } + public void setTousseItemId(Long tousseItemId) { + this.tousseItemId = tousseItemId; + } + public String getTousseBarcode() { + return tousseBarcode; + } + public void setTousseBarcode(String tousseBarcode) { + this.tousseBarcode = tousseBarcode; + } +} Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionItemManagerImpl.java =================================================================== diff -u --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionItemManagerImpl.java (revision 0) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionItemManagerImpl.java (revision 15160) @@ -0,0 +1,38 @@ +package com.forgon.disinfectsystem.toussetransition.service; + +import java.util.List; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.apache.commons.collections4.CollectionUtils; + +import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.disinfectsystem.entity.toussetransition.TousseTransitionItem; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.BasePoManagerImpl; + +public class TousseTransitionItemManagerImpl extends BasePoManagerImpl + implements TousseTransitionItemManager { + + public TousseTransitionItemManagerImpl() { + super(TousseTransitionItem.class); + } + + @Override + public JSONArray getJsonArray(TousseItem tousseItem) { + JSONArray array = new JSONArray(); + if(tousseItem != null && DatabaseUtil.isPoIdValid(tousseItem.getId())){ + List list = getByProperty("tousseItemId", tousseItem.getId()+""); + if(CollectionUtils.isNotEmpty(list)){ + for(TousseTransitionItem item : list){ + JSONObject json = new JSONObject(); + json.put("tousseBarcode", item.getTousseBarcode()); + json.put("tousseName", tousseItem.getTousseName()); + array.add(json); + } + } + } + return array; + } +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/toussetransition/TousseTransitionRecord.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/toussetransition/TousseTransitionRecord.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/toussetransition/TousseTransitionRecord.java (revision 15160) @@ -0,0 +1,91 @@ +package com.forgon.disinfectsystem.entity.toussetransition; + +import java.util.Date; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; + +/** + * 器械包交接记录 + * @author kzh + */ +@Entity +@Table(name = "TousseTransitionRecord") +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +public class TousseTransitionRecord { + private Long id; + /** + * 使用记录转换的申请单id + */ + private Long recyclingApplicationId; + /** + * 交接人编码(不是条码,是登录名),用于唯一确定身份 + */ + private String handoverCode; + /** + * 交接人名称(用于显示的全名) + */ + private String handover; + /** + * 接收人编码(不是条码,是登录名),用于唯一确定身份 + */ + private String takeoverCode; + /** + * 接收人名称(用于显示的全名) + */ + private String takeover; + /** + * 交接时间 + */ + private Date transitionTime; + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public Long getRecyclingApplicationId() { + return recyclingApplicationId; + } + public void setRecyclingApplicationId(Long recyclingApplicationId) { + this.recyclingApplicationId = recyclingApplicationId; + } + public String getHandoverCode() { + return handoverCode; + } + public void setHandoverCode(String handoverCode) { + this.handoverCode = handoverCode; + } + public String getHandover() { + return handover; + } + public void setHandover(String handover) { + this.handover = handover; + } + public String getTakeoverCode() { + return takeoverCode; + } + public void setTakeoverCode(String takeoverCode) { + this.takeoverCode = takeoverCode; + } + public String getTakeover() { + return takeover; + } + public void setTakeover(String takeover) { + this.takeover = takeover; + } + public Date getTransitionTime() { + return transitionTime; + } + public void setTransitionTime(Date transitionTime) { + this.transitionTime = transitionTime; + } +} Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManagerImpl.java =================================================================== diff -u --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManagerImpl.java (revision 0) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManagerImpl.java (revision 15160) @@ -0,0 +1,13 @@ +package com.forgon.disinfectsystem.toussetransition.service; + +import com.forgon.disinfectsystem.entity.toussetransition.TousseTransitionRecord; +import com.forgon.tools.hibernate.BasePoManagerImpl; + +public class TousseTransitionRecordManagerImpl extends BasePoManagerImpl + implements TousseTransitionRecordManager { + + public TousseTransitionRecordManagerImpl() { + super(TousseTransitionRecord.class); + } + +} Index: forgon-tools/src/main/java/com/forgon/tools/hibernate/BasePoManager.java =================================================================== diff -u --- forgon-tools/src/main/java/com/forgon/tools/hibernate/BasePoManager.java (revision 0) +++ forgon-tools/src/main/java/com/forgon/tools/hibernate/BasePoManager.java (revision 15160) @@ -0,0 +1,85 @@ +package com.forgon.tools.hibernate; + +import java.util.List; + +/** + * 数据库操作服务对象的基类接口 + * @author kzh + * + * @param 实体类对象的类型 + */ +public interface BasePoManager { + /** + * 保存对象 + * @param object 要保存的实体对象 + */ + public void save(T object) throws RuntimeException; + /** + * 删除对象 + * @param object 要删除的实体对象 + * @return 成功删除返回true,否则返回false + */ + public boolean delete(T object) throws RuntimeException; + /** + * 删除对象 + * @param id 要删除的实体对象的id + * @return 成功删除返回true,否则返回false + */ + public boolean delete(Long id) throws RuntimeException; + /** + * 删除对象 + * @param id 要删除的实体对象的id + * @return 成功删除返回true,否则返回false + */ + public boolean delete(String id) throws RuntimeException; + /** + * 更新一个对象 + * @param object 要更新的实体对象 + * @return 更新成功返回true,否则返回false + */ + public boolean update(T object); + /** + * 根据id获取对象 + * @param id 要获取对象的id + * @return 成功返回对应的对象,否则返回null + */ + public T get(Long id); + /** + * 根据id获取对象 + * @param id 要获取对象的id + * @return 成功返回对应的对象,否则返回null + */ + public T get(String id); + /** + * 根据属性值获取对象 + * @param property 属性名 + * @param value 属性值 + * @return 成功返回所有满足条件的对象,否则返回空集合 + */ + public List getByProperty(String property,String value); + /** + * 获取对应属性值的第一个对象 + * @param property 属性名 + * @param value 属性值 + * @return 成功返回第一个对应的对象,否则返回null + */ + public T getFirst(String property,String value); + /** + * 根据查询条件查询第一条记录 + * @param condition 条件语句,如果为空,表示没有限制 + * @return 成功返回第一个对应的对象,否则返回null + */ + public T getFirst(String condition); + /** + * 根据查询条件查询满足条件的所有记录 + * @param condition 条件语句,如果为空,表示没有限制 + * @return 成功返回所有满足条件的对象,否则返回空集合 + */ + public List getByHql(String condition); + /** + * 获取属性值最大的值 + * @param property 属性名称 + * @return 返回属性的最大值,如果没有找到对象,返回null; + */ + public TT getMaxProperty(String property); +} Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionItemManager.java =================================================================== diff -u --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionItemManager.java (revision 0) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionItemManager.java (revision 15160) @@ -0,0 +1,21 @@ +package com.forgon.disinfectsystem.toussetransition.service; + +import net.sf.json.JSONArray; + +import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.disinfectsystem.entity.toussetransition.TousseTransitionItem; +import com.forgon.tools.hibernate.BasePoManager; + +/** + * 器械交接明细操作类 + * @author kzh + * + */ +public interface TousseTransitionItemManager extends BasePoManager { + /** + * 获取交接明细项的数组 + * @param tousseItem 申请项 + * @return + */ + public JSONArray getJsonArray(TousseItem tousseItem); +} Index: forgon-tools/src/main/java/com/forgon/tools/hibernate/BasePoManagerImpl.java =================================================================== diff -u --- forgon-tools/src/main/java/com/forgon/tools/hibernate/BasePoManagerImpl.java (revision 0) +++ forgon-tools/src/main/java/com/forgon/tools/hibernate/BasePoManagerImpl.java (revision 15160) @@ -0,0 +1,166 @@ +package com.forgon.tools.hibernate; + +import java.util.List; + +import org.apache.commons.collections4.CollectionUtils; +import org.hibernate.Query; +import org.springframework.transaction.annotation.Transactional; + +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.SqlUtils; + +/** + * 数据库操作服务对象的抽象基类 + * @author kzh + * + * @param 实体类对象的类型 + */ +@Transactional +public class BasePoManagerImpl implements BasePoManager { + protected static String deleteFailedMsg = "删除失败"; + protected static String saveFailedMsg = "保存失败"; + protected static String updateFailedMsg = "更新失败"; + + protected ObjectDao objectDao; + + protected String poName; + + public void setObjectDao(ObjectDao objectDao) { + this.objectDao = objectDao; + } + + public BasePoManagerImpl(Class clazz){ + poName = clazz.getSimpleName(); + } + + @Override + public void save(T object) throws RuntimeException { + try{ + objectDao.saveOrUpdate(object); + }catch(Exception e){ + e.printStackTrace(); + throw new RuntimeException(saveFailedMsg); + } + } + + @Override + public boolean delete(T object) throws RuntimeException { + try{ + if(object != null){ + objectDao.delete(object); + } + return true; + }catch(Exception e){ + e.printStackTrace(); + throw new RuntimeException(deleteFailedMsg); + } + } + + @Override + public boolean delete(Long id) throws RuntimeException { + if(DatabaseUtil.isPoIdValid(id)){ + objectDao.deleteById(poName, id + ""); + return true; + } + throw new RuntimeException(deleteFailedMsg); + } + + @Override + public boolean delete(String id) throws RuntimeException { + if(DatabaseUtil.isPoIdValid(id)){ + objectDao.deleteById(poName, id); + return true; + } + throw new RuntimeException(deleteFailedMsg); + } + + @Override + public boolean update(T object) { + try{ + objectDao.update(object); + return true; + }catch(Exception e){ + e.printStackTrace(); + throw new RuntimeException(updateFailedMsg); + } + } + + @Override + public T get(Long id) { + String hql = "1=0"; + if(DatabaseUtil.isPoIdValid(id)){ + hql = SqlUtils.getNonStringFieldPredicate("po.id", id.toString()); + } + return getFirst(hql); + } + + @Override + public T get(String id) { + String hql = "1=0"; + if(DatabaseUtil.isPoIdValid(id)){ + hql = SqlUtils.getNonStringFieldPredicate("po.id",id); + } + return getFirst(hql); + } + + @SuppressWarnings("unchecked") + @Override + public List getByProperty(String property, String value) { + if(StringTools.isNotBlank(property) && value != null){ + return objectDao.findByProperty(poName, property, value); + } + return null; + } + + @Override + public T getFirst(String property, String value) { + List list = getByProperty(property, value); + if(CollectionUtils.isNotEmpty(list)){ + return list.get(0); + } + return null; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public T getFirst(String condition) { + String hql = "from " + poName + " po where " + defaultIfEmpty(condition); + List list = objectDao.findByHql(hql, 0, 1); + if(CollectionUtils.isNotEmpty(list)){ + return (T)list.get(0); + } + return null; + } + + @SuppressWarnings("unchecked") + @Override + public List getByHql(String condition) { + String hql = "from " + poName + " po where " + defaultIfEmpty(condition); + return objectDao.findByHql(hql); + } + + /** + * 检查条件。如果条件为null或者空字符串,则返回 1=0 + * @param condition + * @return + */ + private static String defaultIfEmpty(String condition){ + if(StringTools.isBlank(condition)){ + condition = " 1 = 0 "; + } + return condition; + } + + @SuppressWarnings("unchecked") + @Override + public TT getMaxProperty(String property) { + String hql = "select MAX(" + property + ") from " + poName; + Query query = objectDao.getHibernateSession().createQuery(hql); + List rets = query.list(); + if(CollectionUtils.isNotEmpty(rets)){ + return rets.get(0); + } + return null; + } +}