Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinition.java =================================================================== diff -u -r13300 -r13739 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinition.java (.../TousseDefinition.java) (revision 13300) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinition.java (.../TousseDefinition.java) (revision 13739) @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.LinkedList; import java.util.List; import javax.persistence.CascadeType; @@ -17,6 +18,12 @@ import javax.persistence.Table; import javax.persistence.Transient; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; +import net.sf.json.JsonConfig; +import net.sf.json.processors.DefaultValueProcessor; +import net.sf.json.util.CycleDetectionStrategy; + import org.apache.commons.lang3.StringUtils; import org.hibernate.Query; import org.hibernate.Session; @@ -35,6 +42,7 @@ import com.forgon.disinfectsystem.entity.idcarddefinition.IDCardDefinition; import com.forgon.tools.crypto.coder.CoderEncryption; import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.json.JSONUtil; import com.forgon.tools.util.ForgonStringUtils; /** @@ -83,6 +91,8 @@ @JsonIgnore private List diposableGoodsItems = new ArrayList(); // 包含的耗材 + + private JSONArray tousseDefinitionMaterials = new JSONArray(); private String supplierName;// 供应商 @@ -327,7 +337,40 @@ List diposableGoodsItems) { this.diposableGoodsItems = diposableGoodsItems; } + @Transient + public JSONArray getTousseDefinitionMaterials() { + return tousseDefinitionMaterials; + } + @Transient + public void buildTousseDefinitionMaterials() { + List tousseDefinitionMaterials = new LinkedList(); +// tousseDefinitionMaterials.clear(); + if(diposableGoodsItems != null){ + tousseDefinitionMaterials.addAll(diposableGoodsItems); + } + if(materialInstances != null){ + tousseDefinitionMaterials.addAll(materialInstances); + } + Collections.sort(tousseDefinitionMaterials); + + JsonConfig config = new JsonConfig(); + config.setExcludes(new String[] { "fieldHandler", "handler", + "idCardDefinitions", "hibernateLazyInitializer", "image", + "tousse", "goodsBatchs", "tousseInstances" }); // 解决hibernate延迟加载的问题 + config.registerDefaultValueProcessor(Double.class, + new DefaultValueProcessor() { + @Override + public Object getDefaultValue( + @SuppressWarnings("rawtypes") Class arg0) { + return null; + } + }); + config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); + this.tousseDefinitionMaterials = JSONArray.fromObject(tousseDefinitionMaterials,config); + } + + public String getPackageType() { return packageType; } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinitionMaterial.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinitionMaterial.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinitionMaterial.java (revision 13739) @@ -0,0 +1,14 @@ +/** + * + */ +package com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition; + +/** + * @author jeffli + * + */ +public interface TousseDefinitionMaterial extends + Comparable { + public String getType(); + public Integer getSequence(); +} Index: forgon-tools/src/main/java/com/forgon/tools/json/JSONUtil.java =================================================================== diff -u -r13689 -r13739 --- forgon-tools/src/main/java/com/forgon/tools/json/JSONUtil.java (.../JSONUtil.java) (revision 13689) +++ forgon-tools/src/main/java/com/forgon/tools/json/JSONUtil.java (.../JSONUtil.java) (revision 13739) @@ -281,6 +281,14 @@ return v; } + public static Integer optInteger(JSONObject obj, String key, Integer defValue) { + Long v = obj.optLong(key, Long.MAX_VALUE); + if (v == Long.MAX_VALUE) { + return defValue; + } + return v.intValue(); + } + public static JsonObject fromObjecttoJsonObject(Object obj) { return new Gson().toJsonTree(obj).getAsJsonObject(); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/materialinstance/MaterialInstance.java =================================================================== diff -u -r13724 -r13739 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/materialinstance/MaterialInstance.java (.../MaterialInstance.java) (revision 13724) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/materialinstance/MaterialInstance.java (.../MaterialInstance.java) (revision 13739) @@ -19,7 +19,7 @@ @Entity @Table(name = "MaterialInstance") @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) -public class MaterialInstance { +public class MaterialInstance implements TousseDefinitionMaterial{ private Long id ; @@ -49,6 +49,8 @@ private String includeImplant = UNINCLUDE_IMPLANT;// 是否包含植入物 + private String type = "器械"; + private Integer sequence = 0;// 序号 public static final String INCLUDE_IMPLANT = "是";// 包含植入物 public static final String UNINCLUDE_IMPLANT = "否";// 不包含植入物 @@ -120,6 +122,23 @@ this.includeImplant = includeImplant; } + @Transient + public String getType() { + return type; + } + + public Integer getSequence() { + return sequence; + } + + public void setSequence(Integer sequence) { + if(sequence == null){ + this.sequence = 0; + }else{ + this.sequence = sequence; + } + } + public Integer getUsedAmountOfIncludeImplant() { return usedAmountOfIncludeImplant; } @@ -151,5 +170,17 @@ public void setMinDismantleAmount(String minDismantleAmount) { this.minDismantleAmount = minDismantleAmount; } + + @Override + public int compareTo(TousseDefinitionMaterial o) { + Integer otherSequence = 0; + if (o != null) { + otherSequence = o.getSequence(); + } + if (otherSequence == null) { + otherSequence = 0; + } + return sequence - otherSequence; + } } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/DiposableGoodsInstance.java =================================================================== diff -u -r13017 -r13739 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/DiposableGoodsInstance.java (.../DiposableGoodsInstance.java) (revision 13017) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/DiposableGoodsInstance.java (.../DiposableGoodsInstance.java) (revision 13739) @@ -7,10 +7,13 @@ import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; +import javax.persistence.Transient; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinitionMaterial; + /** * *@author SongWei @@ -20,14 +23,16 @@ */ @Entity @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) -public class DiposableGoodsInstance { +public class DiposableGoodsInstance implements TousseDefinitionMaterial{ private Long id; private DisposableGoods diposableGoods; private Integer amount; + private String type = "一次性物品"; + private Integer sequence = 0;// 序号 @Id @GeneratedValue(strategy = GenerationType.AUTO) public Long getId() { @@ -61,5 +66,33 @@ } } + @Transient + public String getType() { + return type; + } + + public Integer getSequence() { + return sequence; + } + + public void setSequence(Integer sequence) { + if(sequence == null){ + this.sequence = 0; + }else{ + this.sequence = sequence; + } + } + + @Override + public int compareTo(TousseDefinitionMaterial o) { + Integer otherSequence = 0; + if (o != null) { + otherSequence = o.getSequence(); + } + if (otherSequence == null) { + otherSequence = 0; + } + return sequence - otherSequence; + } }