Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r19799 -r19805 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 19799) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 19805) @@ -102,6 +102,8 @@ import com.forgon.disinfectsystem.expirationdateinfo.service.ExpirationDateInfoManager; import com.forgon.disinfectsystem.idcarddefinition.service.IDCardDefinitionManager; import com.forgon.disinfectsystem.idcardinstance.service.IDCardInstanceManager; +import com.forgon.disinfectsystem.packing.vo.ForeignTousseSplitMaterialVo; +import com.forgon.disinfectsystem.packing.vo.ForeignTousseSplitVo; import com.forgon.disinfectsystem.packing.vo.PackingTaskForDisplay; import com.forgon.disinfectsystem.packing.vo.ReviewerVo; import com.forgon.disinfectsystem.packing.vo.WaitPackingTaskItemVo; @@ -3119,7 +3121,7 @@ ClassifiedItem.TYPE_MATERIAL); ResultSet rs = objectDao.executeSql(sql); - Map map = new HashMap(); + Map map = new HashMap(); int i = 1; String tousseName = tousseDefinition.getName(); if(rs != null){ @@ -3129,32 +3131,28 @@ String materilName = rs.getString(2); Integer amount = rs.getInt(3); Long materialDefinitionId = rs.getLong(4); - JSONObject packageObj = map.get(classifyBasketId); + ForeignTousseSplitVo packageObj = map.get(classifyBasketId); if(packageObj == null){ ClassifyBasketRecyclingSequence sequence = classifyBasketRecyclingSequenceManager.get(task.getSourceId(), classifyBasketId, tousseDefinition.getId()); - packageObj = new JSONObject(); - Integer seq = sequence != null?sequence.getSequence():0; - packageObj.put("splitIndex",seq != null&&seq > 0?seq:i); + packageObj = new ForeignTousseSplitVo(); + Integer seq = sequence != null&&sequence.getSequence() != null?sequence.getSequence():0; + packageObj.setSplitIndex(seq != null&&seq > 0?seq:i); // packageObj.put("tousseName",tousseName + "(部分" + i + ")"); - packageObj.put("bigPackage","否"); - packageObj.put("packingType",defaultPackageType); + packageObj.setBigPackage("否"); + packageObj.setPackingType(defaultPackageType); map.put(classifyBasketId, packageObj); i++; } - JSONArray materialsJsonArray = packageObj.optJSONArray("materialsJsonArray"); - if(materialsJsonArray == null){ - materialsJsonArray = new JSONArray(); - } - JSONObject materilObj = new JSONObject(); - materilObj.put("name", materilName); + List materialsJsonArray = packageObj.getMaterialsJsonArray(); + ForeignTousseSplitMaterialVo materilObj = new ForeignTousseSplitMaterialVo(); + materilObj.setName(materilName); String includeImplant = implantGoodsMap.get(materialDefinitionId); if(StringUtils.isBlank(includeImplant)){ includeImplant = Constants.STR_NO; } - materilObj.put("includeImplant", includeImplant); - materilObj.put("materialAmount", amount); + materilObj.setIncludeImplant(includeImplant); + materilObj.setMaterialAmount(amount); materialsJsonArray.add(materilObj); - packageObj.put("materialsJsonArray", materialsJsonArray); } } catch (SQLException e) { e.printStackTrace(); @@ -3169,14 +3167,14 @@ boolean nameIncludeSplitTotalAmountForSplitForeignTousse = CssdUtils.getSystemSetConfigByNameBool("nameIncludeSplitTotalAmountForSplitForeignTousse"); int splitForeignTousseNameStyle = CssdUtils.getSystemSetConfigByNameInt("splitForeignTousseNameStyle",0); int count = i-1; - JSONArray result = new JSONArray(); + List result = new ArrayList(); Set splitIndexs = new HashSet<>(); for (Long classifyBasketId : map.keySet()) { - JSONObject packageItem = map.get(classifyBasketId); - JSONArray materials = packageItem.optJSONArray("materialsJsonArray"); + ForeignTousseSplitVo packageItem = map.get(classifyBasketId); + List materials = packageItem.getMaterialsJsonArray(); int toolAmount = 0; int implantAmount = 0; - int splitIndex = packageItem.optInt("splitIndex"); + int splitIndex = packageItem.getSplitIndex(); splitIndexs.add(splitIndex); String splitName = tousseName + "(部分" + splitIndex + ")"; if(nameIncludeSplitTotalAmountForSplitForeignTousse){ @@ -3186,26 +3184,28 @@ splitName = tousseName+"(" + count + "-" + splitIndex + ")"; } } - packageItem.put("tousseName",splitName); + packageItem.setTousseName(splitName); for(int j = 0 ; j < materials.size() ; j++){ - JSONObject item = materials.optJSONObject(j); - String includeImplant = item.optString("includeImplant"); - Integer materialAmount = item.optInt("materialAmount"); + ForeignTousseSplitMaterialVo item = materials.get(j); + String includeImplant = item.getIncludeImplant(); + Integer materialAmount = item.getMaterialAmount(); if(Constants.STR_YES.equals(includeImplant)){ implantAmount += materialAmount; }else{ toolAmount += materialAmount; } } - packageItem.put("toolAmount",toolAmount); - packageItem.put("implantAmount",implantAmount); + packageItem.setToolAmount(toolAmount); + packageItem.setImplantAmount(implantAmount); result.add(packageItem); } //验证是否连续 if(!MathTools.continuous(splitIndexs)){ throw new RuntimeException(splitIndexs + "拆包序号不连续"); } - return result.toString(); + //按拆分包序号从小到大排序 + Collections.sort(result); + return JSONArray.fromObject(result).toString(); } } Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/vo/ForeignTousseSplitVo.java =================================================================== diff -u --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/vo/ForeignTousseSplitVo.java (revision 0) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/vo/ForeignTousseSplitVo.java (revision 19805) @@ -0,0 +1,92 @@ +package com.forgon.disinfectsystem.packing.vo; + +import java.util.ArrayList; +import java.util.List; + +/** + * 外来器械拆包信息 + * @author kzh + * + */ +public class ForeignTousseSplitVo implements Comparable { + /** + * 拆包的包名称 + */ + private String tousseName; + /** + * 工具数量 + */ + private Integer toolAmount; + /** + * 植入物数量 + */ + private Integer implantAmount; + /** + * 拆包序号 + */ + private Integer splitIndex; + /** + * 是否大包 + */ + private String bigPackage; + /** + * 包装类型 + */ + private String packingType; + + private List materialsJsonArray = new ArrayList<>(); + public String getTousseName() { + return tousseName; + } + public void setTousseName(String tousseName) { + this.tousseName = tousseName; + } + public Integer getToolAmount() { + return toolAmount; + } + public void setToolAmount(Integer toolAmount) { + this.toolAmount = toolAmount; + } + public Integer getImplantAmount() { + return implantAmount; + } + public void setImplantAmount(Integer implantAmount) { + this.implantAmount = implantAmount; + } + public Integer getSplitIndex() { + return splitIndex==null?0:splitIndex; + } + public void setSplitIndex(Integer splitIndex) { + this.splitIndex = splitIndex; + } + public List getMaterialsJsonArray() { + return materialsJsonArray; + } + public void setMaterialsJsonArray( + List materialsJsonArray) { + this.materialsJsonArray = materialsJsonArray; + } + public String getBigPackage() { + return bigPackage; + } + public void setBigPackage(String bigPackage) { + this.bigPackage = bigPackage; + } + public String getPackingType() { + return packingType; + } + public void setPackingType(String packingType) { + this.packingType = packingType; + } + /** + * 比较大小 。null元素最大,放最后。以splitIndex的大小排序.splitIndex为null当0处理 + */ + @Override + public int compareTo(ForeignTousseSplitVo o) { + if(o == null){ + return -1; + } + return getSplitIndex().compareTo(o.getSplitIndex()); + } + +} Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/vo/ForeignTousseSplitMaterialVo.java =================================================================== diff -u --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/vo/ForeignTousseSplitMaterialVo.java (revision 0) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/vo/ForeignTousseSplitMaterialVo.java (revision 19805) @@ -0,0 +1,38 @@ +package com.forgon.disinfectsystem.packing.vo; +/** + * 外来器械拆包材料 + * @author kzh + * + */ +public class ForeignTousseSplitMaterialVo { + /** + * 材料名称 + */ + private String name; + /** + * 是否植入物 + */ + private String includeImplant; + /** + * 材料数量 + */ + private Integer materialAmount; + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getIncludeImplant() { + return includeImplant; + } + public void setIncludeImplant(String includeImplant) { + this.includeImplant = includeImplant; + } + public Integer getMaterialAmount() { + return materialAmount==null?0:materialAmount; + } + public void setMaterialAmount(Integer materialAmount) { + this.materialAmount = materialAmount; + } +}