Index: ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManager.java =================================================================== diff -u -r12331 -r14858 --- ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManager.java (.../IDCardDefinitionManager.java) (revision 12331) +++ ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManager.java (.../IDCardDefinitionManager.java) (revision 14858) @@ -2,11 +2,15 @@ import java.util.List; +import net.sf.json.JSONArray; + import com.forgon.disinfectsystem.entity.idcarddefinition.IDCardDefinition; public interface IDCardDefinitionManager { public IDCardDefinition getIDCardDefinitionByID(String id); + public IDCardDefinition getIDCardDefinitionById_ForUpdate(String id); + public IDCardDefinition getIDCardDefinitionByIDCardInstanceId( String instanceId); @@ -19,6 +23,8 @@ String tousseName); public String getIDCardDefinitionInfoByTousseID(String id); + public JSONArray getIDCardInstanceByIDCardDefinitionId(String id); + public JSONArray getTraceableMaterialByIDCardDefinitionId(String id); public List getIDCardDefinitionsOfTousseDefinition( String tousseDefinitionId, boolean includeDiscardDefinitions); Index: ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManagerImpl.java =================================================================== diff -u -r13740 -r14858 --- ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManagerImpl.java (.../IDCardDefinitionManagerImpl.java) (revision 13740) +++ ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManagerImpl.java (.../IDCardDefinitionManagerImpl.java) (revision 14858) @@ -4,7 +4,11 @@ import java.sql.SQLException; import java.text.ParseException; import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.Set; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -40,6 +44,7 @@ import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.JSONUtil; +import com.forgon.tools.util.SqlUtils; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.JsonParser; @@ -114,6 +119,10 @@ return (IDCardDefinition) objectDao.getByProperty( IDCardDefinition.class.getSimpleName(), "id", Long.valueOf(id)); } + public IDCardDefinition getIDCardDefinitionById_ForUpdate(String id){ + return (IDCardDefinition) objectDao.getByProperty_ForUpdate( + IDCardDefinition.class.getSimpleName(), "id", Long.valueOf(id)); + } public IDCardDefinition getIDCardDefinitionByIDCardInstanceId( String instanceId) { @@ -146,12 +155,13 @@ IDCardInstance idCardInstance = (IDCardInstance) barcodeDevice; try { idCardInstance.isCanUse(objectDao, true); - + IDCardDefinition idCardDefinition = getIDCardDefinitionByID(idCardInstance.getIdCardDefinitionID().toString()); TousseDefinition tousseDefinition = tousseDefinitionManager .getTousseDefinitionByIDCardInstance(idCardInstance); JSONObject wci = new JSONObject(); wci.put("id", idCardInstance.getId()); + wci.put("idCardDefinitionId", idCardDefinition.getId()); wci.put("name", tousseDefinition.getName()); wci.put("tousseType", tousseDefinition.getTousseType()); @@ -255,12 +265,10 @@ tousseDefinitionId, false); if (idCardDefinitions != null && idCardDefinitions.size() > 0) { +// Set idCardDefinitionIds int number = 0; for (IDCardDefinition idCardDefinition : idCardDefinitions) { - List traceableMaterials = idCardDefinition - .getTraceableMaterials(objectDao); - List idCardInstances = idCardDefinition - .getIDCardInstances(objectDao); + String description = idCardDefinition.getDescription(); if (description == null || "".equals(description)) { description = ""; @@ -276,70 +284,126 @@ idCardDefinition.getTousseDefinitionID()); JSONArray materialsArr = new JSONArray(); - if (traceableMaterials.size() > 0) { - for (TraceableMaterial traceableMaterial : traceableMaterials) { - MaterialDefinition materialDefinition = traceableMaterial - .getMaterialDefinition(); - if (materialDefinition != null) { - JSONObject materialObj = new JSONObject(); - String serialNumber = traceableMaterial - .getSerialNumber(); - String name = materialDefinition.getName(); - String specification = materialDefinition - .getSpecification(); - - JSONObject materialDefinitionObj = new JSONObject(); - materialDefinitionObj.put("name", name); - materialDefinitionObj.put("id", - materialDefinition.getId()); - materialDefinitionObj.put("specification", - specification); - // materialObj.put("name", name); - // materialObj.put("specification", - // specification); - materialObj.put("nameSpecification", - materialDefinition - .getNameSpecification()); - materialObj - .put("id", traceableMaterial.getId()); - materialObj.put("serialNumber", serialNumber); - materialObj.put("materialDefinition", - materialDefinitionObj.toString()); - materialsArr.add(materialObj); - } - } - } obj.put("traceableMaterials", materialsArr.toArray()); - if (idCardInstances.size() > 0) { + JSONArray arr = new JSONArray(); +// if (idCardInstances.size() > 0) { +// +// Long useAmount = 0L; +// String barcode = ""; +// +// JSONArray arr = getIDCardInstancesJSONArray(idCardInstances); +// for (int i = 0; i < arr.size(); i++) { +// JSONObject o = (JSONObject) arr.get(i); +// +// useAmount += o.optLong("useAmount"); +// +// if (IDCardInstance.STATUS_USING.equals(o +// .optString("status"))) { +// barcode = o.optString("barcode"); +// obj.put("tousseInstanceStatusAndTime", o.optString("tousseInstanceStatusAndTime")); +// } +// } +// obj.put("barcode", barcode); +// } + obj.put("idCardInstances", arr.toArray()); + obj.put("useAmount", idCardDefinition.getUseAmount()); - Long useAmount = 0L; - String barcode = ""; + array.add(obj); - JSONArray arr = getIDCardInstancesJSONArray(idCardInstances); - for (int i = 0; i < arr.size(); i++) { - JSONObject o = (JSONObject) arr.get(i); + } + } + } + return array.toString(); + } + public JSONArray getIDCardInstanceByIDCardDefinitionId(String id){ + JSONArray array = new JSONArray(); + IDCardDefinition idCardDefinition = getIDCardDefinitionByID(id); + List idCardInstances = idCardDefinition + .getIDCardInstances(objectDao); + if (idCardInstances.size() > 0) { + Set tousseIdSet = new HashSet(); + Map tousseMap = new HashMap(); + for (IDCardInstance idCardInstance : idCardInstances) { + Long lastTousseInstanceId = idCardInstance.getLastTousseInstanceId(); + if(lastTousseInstanceId != null){ + tousseIdSet.add(lastTousseInstanceId); + } + } + String tousseSql = String.format(" where %s", SqlUtils.getNonStringFieldInCollectionsPredicate("po.id", tousseIdSet)); + List tousseList = objectDao.findBySql(TousseInstance.class.getSimpleName(), tousseSql); + if(tousseList != null){ + for (TousseInstance tousseInstance : tousseList) { + tousseMap.put(tousseInstance.getId(), tousseInstance); + } + } - useAmount += o.optLong("useAmount"); + for (IDCardInstance idCardInstance : idCardInstances) { - if (IDCardInstance.STATUS_USING.equals(o - .optString("status"))) { - barcode = o.optString("barcode"); - obj.put("tousseInstanceStatusAndTime", o.optString("tousseInstanceStatusAndTime")); - } - } + TousseInstance tousseInstance = tousseMap.get(idCardInstance.getLastTousseInstanceId()); - obj.put("idCardInstances", arr.toArray()); - obj.put("useAmount", useAmount); - obj.put("barcode", barcode); - } + String status = idCardInstance.getStatus(); + String printDate = idCardInstance.getPrintDate(); + String signBoardBarcode = idCardInstance.getBarcode(); - array.add(obj); + JSONObject object = new JSONObject(); + if (tousseInstance != null) { + String statusAndTime = TousseInstanceUtils + .getStatusAndTimeByTousseInstance(tousseInstance, null, + null); + object.put("tousseInstanceStatusAndTime", statusAndTime); + } + object.put("id", idCardInstance.getId()); + object.put("barcode", signBoardBarcode); + object.put("useAmount", idCardInstance.getUseAmount()); + object.put("status", status); + object.put("printDate", printDate); + object.put("idCardDefinitionID", + idCardInstance.getIdCardDefinitionID()); + array.add(object); + } + } + return array; + } + public JSONArray getTraceableMaterialByIDCardDefinitionId(String id){ + JSONArray materialsArr = new JSONArray(); + IDCardDefinition idCardDefinition = getIDCardDefinitionByID(id); + List traceableMaterials = idCardDefinition + .getTraceableMaterials(objectDao); + if (traceableMaterials.size() > 0) { + for (TraceableMaterial traceableMaterial : traceableMaterials) { + MaterialDefinition materialDefinition = traceableMaterial + .getMaterialDefinition(); + if (materialDefinition != null) { + JSONObject materialObj = new JSONObject(); + String serialNumber = traceableMaterial + .getSerialNumber(); + String name = materialDefinition.getName(); + String specification = materialDefinition + .getSpecification(); + JSONObject materialDefinitionObj = new JSONObject(); + materialDefinitionObj.put("name", name); + materialDefinitionObj.put("id", + materialDefinition.getId()); + materialDefinitionObj.put("specification", + specification); + // materialObj.put("name", name); + // materialObj.put("specification", + // specification); + materialObj.put("nameSpecification", + materialDefinition + .getNameSpecification()); + materialObj + .put("id", traceableMaterial.getId()); + materialObj.put("serialNumber", serialNumber); + materialObj.put("materialDefinition", + materialDefinitionObj.toString()); + materialsArr.add(materialObj); } } } - return array.toString(); + return materialsArr; } public boolean isIdCardBarcodeMatchTousseDefinition(String idCardBarcode,