Index: ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcardinstance/service/IDCardInstanceManagerImpl.java =================================================================== diff -u -r14857 -r14866 --- ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcardinstance/service/IDCardInstanceManagerImpl.java (.../IDCardInstanceManagerImpl.java) (revision 14857) +++ ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcardinstance/service/IDCardInstanceManagerImpl.java (.../IDCardInstanceManagerImpl.java) (revision 14866) @@ -24,6 +24,8 @@ import com.forgon.disinfectsystem.idcardinstance.vo.DefinitionSelectionForComboVo; import com.forgon.disinfectsystem.idcardinstance.vo.IdentificationCardVo; import com.forgon.disinfectsystem.idcardinstance.vo.SerializedMaterial; +import com.forgon.serialnumber.model.SerialNum; +import com.forgon.serialnumber.service.SerialNumManager; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; @@ -35,6 +37,8 @@ private IDCardDefinitionManager idCardDefinitionManager; + private SerialNumManager serialNumManager; + public void setObjectDao(ObjectDao objectDao) { this.objectDao = objectDao; } @@ -48,12 +52,21 @@ this.idCardDefinitionManager = idCardDefinitionManager; } + public void setSerialNumManager(SerialNumManager serialNumManager) { + this.serialNumManager = serialNumManager; + } + public void save_TRANS_MANDATORY(IDCardInstance idCardInstance) { save_internal(idCardInstance); } public void save_internal(IDCardInstance idCardInstance) { idCardInstance.validateAssociatedInfo(); + if (StringUtils.isBlank(idCardInstance.getBarcode())) { + String barcode = serialNumManager + .getSerialNumberStr(SerialNum.TYPE_BARCODE); + idCardInstance.setBarcode(barcode); + } objectDao.save(idCardInstance); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcarddefinition/IDCardDefinition.java =================================================================== diff -u -r14852 -r14866 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcarddefinition/IDCardDefinition.java (.../IDCardDefinition.java) (revision 14852) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcarddefinition/IDCardDefinition.java (.../IDCardDefinition.java) (revision 14866) @@ -19,6 +19,10 @@ import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; +/** + * @author jeffli 2016年9月8日 上午9:05:50 + * + */ @Entity @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) public class IDCardDefinition { @@ -54,6 +58,8 @@ private Long useAmount = 0L; private Long lastTousseInstanceId; + + private boolean idCardInstancesLoad = false; @Id @GeneratedValue(strategy = GenerationType.AUTO) @@ -104,7 +110,15 @@ public void setLastTousseInstanceId(Long lastTousseInstanceId) { this.lastTousseInstanceId = lastTousseInstanceId; } - + @Transient + public boolean isIdCardInstancesLoad() { + return idCardInstancesLoad; + } + + public void setIdCardInstancesLoad(boolean idCardInstancesLoad) { + this.idCardInstancesLoad = idCardInstancesLoad; + } + public void safelySetLastTousseInstanceId(Long lastTousseInstanceId) { if(this.lastTousseInstanceId == null){ this.lastTousseInstanceId = lastTousseInstanceId; Index: ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/action/IDCardDefinitionAction.java =================================================================== diff -u -r14857 -r14866 --- ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/action/IDCardDefinitionAction.java (.../IDCardDefinitionAction.java) (revision 14857) +++ ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/action/IDCardDefinitionAction.java (.../IDCardDefinitionAction.java) (revision 14866) @@ -133,6 +133,13 @@ e.printStackTrace(); } } + public void addIDCardDefinition() { + String tousseDefinitionId = StrutsParamUtils.getPraramValue( + "tousseDefinitionId", ""); + JSONObject obj = idCardDefinitionManager.addIDCardDefinition_TRANS_REQUIRED(tousseDefinitionId); + StrutsResponseUtils.output(obj); + } + public void addIDCardInstanceToThisDefinition() { String idCardDefinitionID = StrutsParamUtils.getPraramValue("id", ""); @@ -248,33 +255,65 @@ } } - public void saveIDCardDefinition() { - String tousseID = StrutsParamUtils.getPraramValue("id", ""); - String idCardsOriginalStr = StrutsParamUtils.getPraramValue( - "idCardsOriginalStr", ""); - String idCardsStr = StrutsParamUtils.getPraramValue("idCards", ""); - +// public void saveIDCardDefinition_old() { +// String tousseID = StrutsParamUtils.getPraramValue("id", ""); +// String idCardsOriginalStr = StrutsParamUtils.getPraramValue( +// "idCardsOriginalStr", ""); +// String idCardsStr = StrutsParamUtils.getPraramValue("idCards", ""); +// +// try { +// if (StringUtils.isBlank(idCardsOriginalStr) +// || StringUtils.isBlank(idCardsStr)) { +// throw new RuntimeException("标识牌信息不能为空!"); +// } +// Gson gson = new Gson(); +// List idCardsOriginal = gson.fromJson( +// idCardsOriginalStr, +// new TypeToken>() { +// }.getType()); +// List idCards = gson.fromJson(idCardsStr, +// new TypeToken>() { +// }.getType()); +// idCardDefinitionManager.saveIDCardDefinitions_TRANS_REQUIRED( +// tousseID, idCardsOriginal, idCards); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// } + public void updateIDCardDefinition() { + String idCardDefinitionStr = StrutsParamUtils.getPraramValue( + "idCardDefinitionStr", ""); try { - if (StringUtils.isBlank(idCardsOriginalStr) - || StringUtils.isBlank(idCardsStr)) { + if (StringUtils.isBlank(idCardDefinitionStr)) { throw new RuntimeException("标识牌信息不能为空!"); } - Gson gson = new Gson(); - List idCardsOriginal = gson.fromJson( - idCardsOriginalStr, - new TypeToken>() { - }.getType()); - List idCards = gson.fromJson(idCardsStr, - new TypeToken>() { - }.getType()); - idCardDefinitionManager.saveIDCardDefinitions_TRANS_REQUIRED( - tousseID, idCardsOriginal, idCards); + idCardDefinitionManager.updateIDCardDefinitions_TRANS_REQUIRED( + idCardDefinitionStr); } catch (Exception e) { e.printStackTrace(); } } + public void saveTraceableMaterials() { + String idCardDefinitionId = StrutsParamUtils.getPraramValue("idCardDefinitionId", ""); + String originalTraceableMaterialsStr = StrutsParamUtils.getPraramValue( + "originalTraceableMaterialsStr", ""); + String traceableMaterialsStr = StrutsParamUtils.getPraramValue( + "traceableMaterialsStr", ""); + try { + if (StringUtils.isBlank(idCardDefinitionId)) { + throw new RuntimeException("标识牌id不能为空!"); + } + idCardDefinitionManager.saveTraceableMaterials_TRANS_REQUIRED(idCardDefinitionId, originalTraceableMaterialsStr, traceableMaterialsStr); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + public void prepare() throws Exception { iniInfo(); Index: ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManager.java =================================================================== diff -u -r14858 -r14866 --- ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManager.java (.../IDCardDefinitionManager.java) (revision 14858) +++ ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManager.java (.../IDCardDefinitionManager.java) (revision 14866) @@ -3,6 +3,7 @@ import java.util.List; import net.sf.json.JSONArray; +import net.sf.json.JSONObject; import com.forgon.disinfectsystem.entity.idcarddefinition.IDCardDefinition; @@ -31,6 +32,7 @@ public void delete_TRANS_MANDATORY(IDCardDefinition idCardDefinition); + public JSONObject addIDCardDefinition_TRANS_REQUIRED(String tousseDefinitionId); public String addIDCardInstanceToThisDefinition_TRANS_REQUIRED( String tousseDefinitionID, String idCardDefinitionID); @@ -44,8 +46,8 @@ public void rebindIDCardInstanceToIDCardDefinition_TRANS_REQUIRED(String tousseDefinitionID,String fromIDCardDefinitionID, String fromIDCardInstanceID, String toIDCardDefinitionID); - public void saveIDCardDefinitions_TRANS_REQUIRED(String tousseID, - List original, List idCards); + public void updateIDCardDefinitions_TRANS_REQUIRED(String idCardDefinitionStr); + public void saveTraceableMaterials_TRANS_REQUIRED(String idCardDefinitionId,String originalTraceableMaterialsStr,String traceableMaterialsStr); } Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/idCardForm.js =================================================================== diff -u -r14857 -r14866 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/idCardForm.js (.../idCardForm.js) (revision 14857) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/idCardForm.js (.../idCardForm.js) (revision 14866) @@ -55,6 +55,7 @@ {name : 'idCardInstances'}, {name : 'useAmount'}, {name : 'traceableMaterials'}, + {name : 'idCardInstancesLoad'}, {name : 'description'} ]; IDCardInstance = Ext.data.Record.create(idCardInstanceFields); @@ -129,6 +130,7 @@ idCardInstancesGridPanel.getStore().removeAll(); traceableMaterialGridPanel.getStore().removeAll(); if(record != null){ + loadIDCardInstanceAndTraceableMaterialInfoIfNeeded(record); loadDataToIdCardInstancesGridStore(); loadDataToSignMaterileGridStore(); } @@ -147,7 +149,21 @@ xtype:'hidden', name:'rowNumber', id:'rowNumber' - }] + }], + bbar : [ + { + text : '更新标识牌', + hidden:forSupplement, + handler : function() { + + var idCardsRecords = gridPanel.getSelectionModel().getSelections(); + if (idCardsRecords.length == 0) { + showResult('请选择要更新的标识牌!'); + return; + } + saveIDCardDefinition(idCardsRecords[0]); + } + }] }); idCardInstancesGridStore = new top.Ext.data.Store({ @@ -360,7 +376,33 @@ } } - }] + }], + bbar : [ + { + text : '保存材料', + iconCls : 'icon_print', + hidden:forSupplement, + handler : function() { + + var idCardsRecords = gridPanel.getSelectionModel().getSelections(); + if (idCardsRecords.length == 0) { + showResult('请选择要保存的标识牌!'); + return; + } + saveTraceableMaterials(idCardsRecords[0]) + } + }, { + text : '取消', + hidden:true, + handler : function() { + var idCardsRecords = gridPanel.getSelectionModel().getSelections(); + if (idCardsRecords.length == 0) { + showResult('请选择标识牌!'); + return; + } + cancelSaveTraceableMaterials(idCardsRecords[0]); + } + } ] }); // 标识牌表单 @@ -487,7 +529,7 @@ buttonAlign : 'center', buttons:[{ text:'保存', - hidden:forSupplement, + hidden:true, handler:function(){ // 校验页面 if(!validateFormParams()){ @@ -545,7 +587,76 @@ } return true; } + function saveIDCardDefinition(record){ + + var idCardDefinitionStr = JSON.stringify(record.data); + Ext.Ajax.request({ + url : WWWROOT + '/disinfectSystem/idCardDefinitionAction!updateIDCardDefinition.do', + params : {idCardDefinitionId:record.data.id,idCardDefinitionStr:idCardDefinitionStr}, + success : function(response, options) { + showResult("保存成功!"); + reLoadIDCardDefinitions(); + }, + failure : function(response, options) { + showResult("保存失败!"); + } + }); + } + function saveTraceableMaterials(record){ + // 校验页面 + if(!validateTraceableMaterial(record)){ + return; + } + var traceableMaterialsStr = buildJSONStringFromStore(traceableMaterialGridPanel.getStore()); + Ext.Ajax.request({ + url : WWWROOT + '/disinfectSystem/idCardDefinitionAction!saveTraceableMaterials.do', + params : {idCardDefinitionId:record.data.id,originalTraceableMaterialsStr:record.data.originalTraceableMaterialsStr,traceableMaterialsStr:traceableMaterialsStr}, + success : function(response, options) { + showResult("保存成功!"); + reloadTraceableMaterial(record); + }, + failure : function(response, options) { + showResult("保存失败!"); + } + }); + } + function cancelSaveTraceableMaterials(){ + traceableMaterialGridPanel.getStore().removeAll(); + loadDataToSignMaterileGridStore(); + } + function reloadTraceableMaterial(record){ + traceableMaterialGridPanel.getStore().removeAll(); + + DWREngine.setAsync(false); + IDCardDefinitionTableManager.loadTraceableMaterialInfo(record.data.id,function(traceableMaterialStr){ + var traceableMaterials = JSON.parse(traceableMaterialStr); + record.data.traceableMaterials = traceableMaterials; + record.data.originalTraceableMaterialsStr = traceableMaterialStr; + }); + DWREngine.setAsync(true); + loadDataToSignMaterileGridStore(); + } + function validateTraceableMaterial(record){ + + var idCardDefinition = record.data; + var traceableMaterials = idCardDefinition.traceableMaterials; + if(!isUndefinedOrNullOrEmpty(traceableMaterials)){ + for(var t=0;t 0 ){ + for(var i=0;i 0 ){ -// for(var i=0;i 0 ){ -// for(var i=0;i 0 ){ + for(var i=0;i 0) { // Set idCardDefinitionIds + Set tousseIdSet = new HashSet(); + Map tousseMap = new HashMap(); + for (IDCardDefinition idCardDefinition : idCardDefinitions) { + Long lastTousseInstanceId = idCardDefinition.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); + } + } + int number = 0; for (IDCardDefinition idCardDefinition : idCardDefinitions) { @@ -427,6 +444,21 @@ return returnValue; } + public JSONObject addIDCardDefinition_TRANS_REQUIRED(String tousseDefinitionId){ + JSONObject obj = new JSONObject(); + IDCardDefinition idCardDefinition = new IDCardDefinition(); + idCardDefinition.setTousseDefinitionID(Long.valueOf(tousseDefinitionId)); + objectDao.save(idCardDefinition); + + IDCardInstance idCardInstance = new IDCardInstance(); + idCardInstance.setIdCardDefinitionID(idCardDefinition.getId()); + idCardInstance.setStatus(IDCardInstance.STATUS_USING); + idCardInstanceManager.save_TRANS_MANDATORY(idCardInstance); + + obj.put("idCardDefinition", idCardDefinition); + obj.put("idCardInstance", idCardInstance); + return obj; + } @Override public String addIDCardInstanceToThisDefinition_TRANS_REQUIRED( String tousseDefinitionID, String idCardDefinitionID) { @@ -733,10 +765,81 @@ @Override // 保存器械包标识牌 - public void saveIDCardDefinitions_TRANS_REQUIRED(String tousseDefinitionID, - List original, List idCards) { - saveIDCardDefinitions_internal(tousseDefinitionID, original, idCards); + public void updateIDCardDefinitions_TRANS_REQUIRED(String idCardDefinitionStr) { + updateIDCardDefinitions_internal(idCardDefinitionStr); } + public void saveTraceableMaterials_TRANS_REQUIRED(String idCardDefinitionId,String originalTraceableMaterialsStr,String traceableMaterialsStr){ + IDCardDefinition curIDCardDefinition = getIDCardDefinitionById_ForUpdate(idCardDefinitionId); + if (curIDCardDefinition == null) { + throw new RuntimeException("标识牌已被删除!"); + } + Gson gson = new Gson(); + List originalTraceableMaterials = gson.fromJson( + originalTraceableMaterialsStr, + new TypeToken>() { + }.getType()); + List traceableMaterials = gson.fromJson( + traceableMaterialsStr, + new TypeToken>() { + }.getType()); + // 更新材料,可能会有增加删除或修改 + List curTraceableMaterials = curIDCardDefinition + .getTraceableMaterials(objectDao); + // 处理修改 + for (int i = 0; i < traceableMaterials.size(); ++i) { + TraceableMaterial traceableMaterial = traceableMaterials.get(i); + Long traceableMaterialID = traceableMaterial.getId(); + if (traceableMaterialID == null) { + continue; + } + TraceableMaterial originalTraceableMaterial = TraceableMaterialUtils + .getTraceableMaterialsById(originalTraceableMaterials, + traceableMaterialID); + + TraceableMaterial curTraceableMaterial = TraceableMaterialUtils + .getTraceableMaterialsById(curTraceableMaterials, + traceableMaterialID); + if (curTraceableMaterial == null) { + // 被并发删除了,也不需要处理 + continue; + } + updateTraceableMaterial(originalTraceableMaterial, + traceableMaterial, curTraceableMaterial); + } + // 处理新增 + for (int i = 0; i < traceableMaterials.size(); ++i) { + TraceableMaterial traceableMaterial = traceableMaterials.get(i); + Long traceableMaterialID = traceableMaterial.getId(); + if (traceableMaterialID != null) {// 有id就不是新增项 + continue; + } + saveTraceableMaterial(curIDCardDefinition, traceableMaterial); + } + // 处理删除项,暂不支持删除 + for (int i = 0; i < originalTraceableMaterials.size(); ++i) { + TraceableMaterial originalTraceableMaterial = originalTraceableMaterials + .get(i); + Long traceableMaterialID = originalTraceableMaterial.getId(); + if (traceableMaterialID == null) { + continue; + } + TraceableMaterial traceableMaterial = TraceableMaterialUtils + .getTraceableMaterialsById(traceableMaterials, + traceableMaterialID); + if (traceableMaterial != null) {// 现在还存在,就不是删除项 + // 在页面上被删除了。 + continue; + } + TraceableMaterial curTraceableMaterial = TraceableMaterialUtils + .getTraceableMaterialsById(curTraceableMaterials, + traceableMaterialID); + if (curTraceableMaterial == null) { + // 被并发删除了。也不需要处理 + continue; + } + deleteTraceableMaterial(curIDCardDefinition, curTraceableMaterial); + } + } private void saveIDCardInstance(IDCardDefinition idCardDefinition, IDCardInstance idCardInstance) { @@ -783,7 +886,7 @@ traceableMaterial.validateAssociatedInfo(); objectDao.save(traceableMaterial); } - + private void updateTraceableMaterial( TraceableMaterial originalTraceableMaterial, TraceableMaterial traceableMaterial, @@ -846,126 +949,66 @@ .getIdCardInstances(); List curIDCardInstances = curIDCardDefinition .getIDCardInstances(objectDao); - // 处理修改 - for (int i = 0; i < idCardInstances.size(); ++i) { - IDCardInstance idCardInstance = idCardInstances.get(i); - Long idCardInstanceID = idCardInstance.getId(); - if (idCardInstanceID == null) { - continue; + if(idCardDefinition.isIdCardInstancesLoad()){// 加载后才会修改 + // 处理修改 + for (int i = 0; i < idCardInstances.size(); ++i) { + IDCardInstance idCardInstance = idCardInstances.get(i); + Long idCardInstanceID = idCardInstance.getId(); + if (idCardInstanceID == null) { + continue; + } + IDCardInstance originalIDCardInstance = IDCardInstanceUtils + .getIDCardInstancesById(originalIDCardInstances, + idCardInstanceID); + if (originalIDCardDefinition == null) { + // 在在原始列表里面不存在,是一种异常情况。 + throw new RuntimeException("参数错误!"); + } + IDCardInstance curIDCardInstance = IDCardInstanceUtils + .getIDCardInstancesById(curIDCardInstances, + idCardInstanceID); + if (curIDCardInstance == null) { + // 被并发删除了,也不需要处理 + continue; + } + updateIDCardInstance(originalIDCardInstance, + originalIDCardInstance, curIDCardInstance); } - IDCardInstance originalIDCardInstance = IDCardInstanceUtils - .getIDCardInstancesById(originalIDCardInstances, - idCardInstanceID); - if (originalIDCardDefinition == null) { - // 在在原始列表里面不存在,是一种异常情况。 - throw new RuntimeException("参数错误!"); + // 处理新增 + for (int i = 0; i < idCardInstances.size(); ++i) { + IDCardInstance idCardInstance = idCardInstances.get(i); + Long idCardDefinitionID = idCardInstance.getId(); + if (idCardDefinitionID != null) {// 有id就不是新增项 + continue; + } + saveIDCardInstance(curIDCardDefinition, idCardInstance); } - IDCardInstance curIDCardInstance = IDCardInstanceUtils - .getIDCardInstancesById(curIDCardInstances, - idCardInstanceID); - if (curIDCardInstance == null) { - // 被并发删除了,也不需要处理 - continue; + // 处理删除项,暂不支持删除 + for (int i = 0; i < originalIDCardInstances.size(); ++i) { + IDCardInstance originalIDCardInstance = originalIDCardInstances + .get(i); + Long idCardDefinitionID = originalIDCardInstance.getId(); + if (idCardDefinitionID == null) { + continue; + } + IDCardInstance idCardInstance = IDCardInstanceUtils + .getIDCardInstancesById(idCardInstances, idCardDefinitionID); + if (idCardInstance != null) {// 现在还存在,就不是删除项 + // 在页面上被删除了。 + continue; + } + IDCardInstance curIDCardInstance = IDCardInstanceUtils + .getIDCardInstancesById(curIDCardInstances, + idCardDefinitionID); + if (curIDCardDefinition == null) { + // 被并发删除了。也不需要处理 + continue; + } + deleteIDCardInstance(curIDCardDefinition, curIDCardInstance); } - updateIDCardInstance(originalIDCardInstance, - originalIDCardInstance, curIDCardInstance); + } - // 处理新增 - for (int i = 0; i < idCardInstances.size(); ++i) { - IDCardInstance idCardInstance = idCardInstances.get(i); - Long idCardDefinitionID = idCardInstance.getId(); - if (idCardDefinitionID != null) {// 有id就不是新增项 - continue; - } - saveIDCardInstance(curIDCardDefinition, idCardInstance); - } - // 处理删除项,暂不支持删除 - for (int i = 0; i < originalIDCardInstances.size(); ++i) { - IDCardInstance originalIDCardInstance = originalIDCardInstances - .get(i); - Long idCardDefinitionID = originalIDCardInstance.getId(); - if (idCardDefinitionID == null) { - continue; - } - IDCardInstance idCardInstance = IDCardInstanceUtils - .getIDCardInstancesById(idCardInstances, idCardDefinitionID); - if (idCardInstance != null) {// 现在还存在,就不是删除项 - // 在页面上被删除了。 - continue; - } - IDCardInstance curIDCardInstance = IDCardInstanceUtils - .getIDCardInstancesById(curIDCardInstances, - idCardDefinitionID); - if (curIDCardDefinition == null) { - // 被并发删除了。也不需要处理 - continue; - } - deleteIDCardInstance(curIDCardDefinition, curIDCardInstance); - } - // 更新材料,可能会有增加删除或修改 - List originalTraceableMaterials = originalIDCardDefinition - .getTraceableMaterials(); - List traceableMaterials = idCardDefinition - .getTraceableMaterials(); - List curTraceableMaterials = curIDCardDefinition - .getTraceableMaterials(objectDao); - // 处理修改 - for (int i = 0; i < traceableMaterials.size(); ++i) { - TraceableMaterial traceableMaterial = traceableMaterials.get(i); - Long traceableMaterialID = traceableMaterial.getId(); - if (traceableMaterialID == null) { - continue; - } - TraceableMaterial originalTraceableMaterial = TraceableMaterialUtils - .getTraceableMaterialsById(originalTraceableMaterials, - traceableMaterialID); - if (originalIDCardDefinition == null) { - // 在在原始列表里面不存在,是一种异常情况。 - throw new RuntimeException("参数错误!"); - } - TraceableMaterial curTraceableMaterial = TraceableMaterialUtils - .getTraceableMaterialsById(curTraceableMaterials, - traceableMaterialID); - if (curTraceableMaterial == null) { - // 被并发删除了,也不需要处理 - continue; - } - updateTraceableMaterial(originalTraceableMaterial, - traceableMaterial, curTraceableMaterial); - } - // 处理新增 - for (int i = 0; i < traceableMaterials.size(); ++i) { - TraceableMaterial traceableMaterial = traceableMaterials.get(i); - Long traceableMaterialID = traceableMaterial.getId(); - if (traceableMaterialID != null) {// 有id就不是新增项 - continue; - } - saveTraceableMaterial(curIDCardDefinition, traceableMaterial); - } - // 处理删除项,暂不支持删除 - for (int i = 0; i < originalTraceableMaterials.size(); ++i) { - TraceableMaterial originalTraceableMaterial = originalTraceableMaterials - .get(i); - Long traceableMaterialID = originalTraceableMaterial.getId(); - if (traceableMaterialID == null) { - continue; - } - TraceableMaterial traceableMaterial = TraceableMaterialUtils - .getTraceableMaterialsById(traceableMaterials, - traceableMaterialID); - if (traceableMaterial != null) {// 现在还存在,就不是删除项 - // 在页面上被删除了。 - continue; - } - TraceableMaterial curTraceableMaterial = TraceableMaterialUtils - .getTraceableMaterialsById(curTraceableMaterials, - traceableMaterialID); - if (curIDCardDefinition == null) { - // 被并发删除了。也不需要处理 - continue; - } - deleteTraceableMaterial(curIDCardDefinition, curTraceableMaterial); - } + update_internal(curIDCardDefinition); } @@ -1037,244 +1080,19 @@ } } - private void saveIDCardDefinitions_internal(String tousseDefinitionID, - List original, List idCards) { - if (StringUtils.isBlank(tousseDefinitionID)) { - throw new RuntimeException("器械包定义ID不能为空!"); + private void updateIDCardDefinitions_internal(String idCardDefinitionStr) { + JSONObject idCardDefinition = JSONObject.fromObject(idCardDefinitionStr); + + Long idCardDefinitionId = JSONUtil.optLong(idCardDefinition, "id", null); + IDCardDefinition curIDCardDefinition = getIDCardDefinitionById_ForUpdate(idCardDefinitionId.toString()); + if (curIDCardDefinition == null) { + throw new RuntimeException("标识牌已被删除!"); } - // 校验参数 - validateParams(original, idCards); - // 锁定并获取器械包定义 - TousseDefinition tousseDefinition = tousseDefinitionManager - .getById_ForUpdate_MANDATORY(tousseDefinitionID); - if (tousseDefinition == null) { - throw new RuntimeException("器械包定义已被删除!"); - } - List curIDCardDefinitionList = tousseDefinition - .getIDCardDefinitions(objectDao); - // 处理修改 - for (int i = 0; i < idCards.size(); ++i) { - IDCardDefinition idCardDefinition = idCards.get(i); - Long idCardDefinitionID = idCardDefinition.getId(); - if (idCardDefinitionID == null) { - continue; - } - IDCardDefinition originalIDCardDefinition = IDCardDefinitionUtils - .getIDCardDefinitionsById(original, idCardDefinitionID); - if (originalIDCardDefinition == null) { - // 在在原始列表里面不存在,是一种异常情况。 - throw new RuntimeException("参数错误!"); - } - IDCardDefinition curIDCardDefinition = IDCardDefinitionUtils - .getIDCardDefinitionsById(curIDCardDefinitionList, - idCardDefinitionID); - if (curIDCardDefinition == null) { - // 被并发删除了,也不需要处理 - continue; - } - updateIDCardDefinition(originalIDCardDefinition, idCardDefinition, - curIDCardDefinition); - - } - // 处理新增 - for (int i = 0; i < idCards.size(); ++i) { - IDCardDefinition idCardDefinition = idCards.get(i); - Long idCardDefinitionID = idCardDefinition.getId(); - if (idCardDefinitionID != null) {// 有id就不是新增项 - continue; - } - saveIDCardDefinition(tousseDefinition, idCardDefinition); - } - // 处理删除项,暂不支持删除 - for (int i = 0; i < original.size(); ++i) { - IDCardDefinition originalIDCardDefinition = original.get(i); - Long idCardDefinitionID = originalIDCardDefinition.getId(); - if (idCardDefinitionID == null) { - continue; - } - IDCardDefinition idCardDefinition = IDCardDefinitionUtils - .getIDCardDefinitionsById(idCards, idCardDefinitionID); - if (idCardDefinition != null) {// 现在还存在,就不是删除项 - // 在页面上被删除了。 - continue; - } - IDCardDefinition curIDCardDefinition = IDCardDefinitionUtils - .getIDCardDefinitionsById(curIDCardDefinitionList, - idCardDefinitionID); - if (curIDCardDefinition == null) { - // 被并发删除了。也不需要处理 - continue; - } - // 暂不支持删除 - throw new RuntimeException("暂不支持删除标识牌!"); - // deleteIDCardDefinition(tousseDefinition, curIDCardDefinition); - } + // 是否废弃 + curIDCardDefinition.setDeleted(JSONUtil.optInteger(idCardDefinition, "deleted", 0)); + // 描述 + curIDCardDefinition.setDescription(JSONUtil.optString(idCardDefinition, "description", "")); + objectDao.update(curIDCardDefinition); } - // private void saveSignBord(){ - // IDCardDefinition wcd = null; - // - // TousseDefinition tousseDefinition = tousseDefinitionManager - // .getTousseDefinitionById(tousseDefinitionID); - // - // List saveTraceableMaterialList = null; - // - // List materialDataList = new ArrayList(); - // if (StringUtils.isNotBlank(signBoardMaterialData)) { - // String[] signBoardMaterial = signBoardMaterialData.split("&"); - // for (int i = 0; i < signBoardMaterial.length; i++) { - // String material = signBoardMaterial[i]; - // String[] data = material.split(";"); - // for (int x = 0; x < data.length; x++) { - // materialDataList.add(data[x]); - // } - // } - // } - // - // String number = ""; - // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - // String printDate = sdf.format(new Date()); - // IDCardInstance wci = null; - // if (materialDataList.size() > 0) { - // for (String materialData : materialDataList) { - // - // String[] data = materialData.split("#"); - // String id = data[0]; - // String rowNumber = data[1]; - // String barcode = data[2]; - // // >3表示有添加器械材料 - // if (data.length > 4) { - // - // String name = data[3]; - // String specification = data[4]; - // if ("null".equals(specification)) { - // specification = null; - // } - // String snumber = data[5]; - // String remark = data[6]; - // if ("isnull".equals(remark)) { - // remark = ""; - // } - // - // // id为0表示 新添加标识牌 - // if ("0".equals(id)) { - // - // List traceableMaterialList = null; - // if (!number.equals(rowNumber)) { - // wcd = new IDCardDefinition(); - // wcd.setTousseDefinitionID(tousseDefinition.getId()); - // traceableMaterialList = new ArrayList(); - // } else { - // traceableMaterialList = wcd.getTraceableMaterials(); - // - // } - // TraceableMaterial traceableMaterial = new TraceableMaterial(); - // traceableMaterial.setSerialNumber(snumber); - // MaterialDefinition materialDefinition = materialDefinitionManager - // .getMaterialDefinitionByName(name, - // specification); - // traceableMaterial - // .setMaterialDefinition(materialDefinition); - // traceableMaterialList.add(traceableMaterial); - // wcd.setDescription(remark); - // wcd.setTraceableMaterials(traceableMaterialList); - // - // objectDao.saveOrUpdate(wcd); - // - // wci = new IDCardInstance(); - // - // wci.setBarcode(barcode); - // wci.setStatus(IDCardInstance.STATUS_USING); - // wci.setPrintDate(printDate); - // wci.setType(BarcodeDevice.BARCODE_TYPE_SIGNBOARD); - // - // wci.setIdCardDefinitionID(wcd.getId()); - // - // objectDao.save(wci); - // - // } else { - // // 11:2:不锈钢小杯[50ML]:不锈钢小杯:50ML:12312312wewa - // // 11:2:不锈钢小杯[50ML]:不锈钢小杯:50ML:12312312wewa - // - // List traceableMaterialList = null; - // - // if (!number.equals(rowNumber)) { - // - // wcd = getIDCardDefinitionByID(id); - // traceableMaterialList = wcd.getTraceableMaterials(); - // saveTraceableMaterialList = new ArrayList(); - // - // } else { - // traceableMaterialList = wcd.getTraceableMaterials(); - // - // } - // TraceableMaterial traceableMaterial = null; - // MaterialDefinition materialDefinition1 = materialDefinitionManager - // .getMaterialDefinitionByName(name, - // specification); - // for (TraceableMaterial tm : traceableMaterialList) { - // MaterialDefinition materialDefinition = tm - // .getMaterialDefinition(); - // if (materialDefinition1.getId().equals( - // materialDefinition.getId())) { - // traceableMaterial = tm; - // break; - // } - // } - // if (traceableMaterial == null) { - // traceableMaterial = new TraceableMaterial(); - // } - // traceableMaterial.setSerialNumber(snumber); - // traceableMaterial - // .setMaterialDefinition(materialDefinition1); - // saveTraceableMaterialList.add(traceableMaterial); - // traceableMaterialList.clear(); - // traceableMaterialList.addAll(saveTraceableMaterialList); - // wcd.setDescription(remark); - // wcd.setTraceableMaterials(traceableMaterialList); - // - // objectDao.saveOrUpdate(wcd); - // } - // } else { - // // 0:1 - // // 0:2 - // // 11:2 - // String remark = data[3]; - // if ("isnull".equals(remark)) { - // remark = ""; - // } - // - // if ("0".equals(id)) { - // wcd = new IDCardDefinition(); - // wcd.setTraceableMaterials(null); - // wcd.setDescription(remark); - // wcd.setTousseDefinitionID(tousseDefinition.getId()); - // - // objectDao.save(wcd); - // - // wci = new IDCardInstance(); - // - // wci.setBarcode(barcode); - // wci.setStatus(IDCardInstance.STATUS_USING); - // wci.setPrintDate(printDate); - // wci.setType(BarcodeDevice.BARCODE_TYPE_SIGNBOARD); - // - // wci.setIdCardDefinitionID(wcd.getId()); - // - // objectDao.save(wci); - // - // } else { - // wcd = getIDCardDefinitionByID(id); - // wcd.setTraceableMaterials(null); - // wcd.setDescription(remark); - // - // objectDao.saveOrUpdate(wcd); - // - // } - // - // } - // number = rowNumber.intern(); - // } - // } - // } } Index: ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/dwr/table/IDCardDefinitionTableManager.java =================================================================== diff -u -r13067 -r14866 --- ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/dwr/table/IDCardDefinitionTableManager.java (.../IDCardDefinitionTableManager.java) (revision 13067) +++ ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/dwr/table/IDCardDefinitionTableManager.java (.../IDCardDefinitionTableManager.java) (revision 14866) @@ -3,6 +3,7 @@ import java.util.List; import java.util.Map; +import net.sf.json.JSONArray; import net.sf.json.JSONObject; import com.forgon.component.grid.GridManager; @@ -55,4 +56,28 @@ } return jsonObject.toString(); } + + public String loadIDCardInstanceAndTraceableMaterialInfo( + String idCardDefinitionId) { + JSONObject obj = new JSONObject(); + JSONArray idCardInstances = idCardDefinitionManager + .getIDCardInstanceByIDCardDefinitionId(idCardDefinitionId); + JSONArray traceableMaterials = idCardDefinitionManager + .getTraceableMaterialByIDCardDefinitionId(idCardDefinitionId); + obj.put("idCardInstances", idCardInstances); + obj.put("traceableMaterials", traceableMaterials); + return obj.toString(); + } + public String loadTraceableMaterialInfo( + String idCardDefinitionId) { + JSONArray traceableMaterials = idCardDefinitionManager + .getTraceableMaterialByIDCardDefinitionId(idCardDefinitionId); + return traceableMaterials.toString(); + } + public String loadIDCardInstanceInfo( + String idCardDefinitionId) { + JSONArray idCardInstances = idCardDefinitionManager + .getIDCardInstanceByIDCardDefinitionId(idCardDefinitionId); + return idCardInstances.toString(); + } } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcardinstance/IDCardInstance.java =================================================================== diff -u -r14852 -r14866 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcardinstance/IDCardInstance.java (.../IDCardInstance.java) (revision 14852) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/idcardinstance/IDCardInstance.java (.../IDCardInstance.java) (revision 14866) @@ -37,6 +37,12 @@ private Long lastTousseInstanceId; + + public IDCardInstance() { + super(); + setType(BarcodeDevice.BARCODE_TYPE_SIGNBOARD); + } + @Transient public List getTousseInstances(ObjectDao dao) {