Index: ssts-web/src/main/webapp/disinfectsystem/packing/packingView.js =================================================================== diff -u -r14763 -r14856 --- ssts-web/src/main/webapp/disinfectsystem/packing/packingView.js (.../packingView.js) (revision 14763) +++ ssts-web/src/main/webapp/disinfectsystem/packing/packingView.js (.../packingView.js) (revision 14856) @@ -8,6 +8,7 @@ var showTousseDamageMaterial; var idCardBarcode = ''; var idCardInstanceID = ''; +var idCardInfo = null; var currentIDCardInfo = null; var idCardTaskNode = null; @@ -527,6 +528,7 @@ Ext4.getCmp('idCardName').setValue(tousseName + "(条码:" + barcode + ")"); idCardBarcode = barcode; idCardInstanceID = result.idCard.id; + idCardInfo = result.idCard; // alert(idCardInstanceID) Ext4.getCmp('operatorBarcode').focus(); // 做保养器械包的处理 @@ -2055,6 +2057,7 @@ function clearInputedIDCardInfo(){ idCardBarcode = ''; idCardInstanceID = ''; + idCardInfo = null; idCardTaskNode = null; Ext4.getCmp('idCardBarcode').setValue(); Ext4.getCmp('idCardName').setValue(); @@ -2323,6 +2326,7 @@ splitPackage: null, basketBarcode: basketBarcode, idCardInstanceID: idCardInstanceID, + idCardDefinitionId: idCardInfo.idCardDefinition.id, sterilizer: sterilizer, frequency: frequency, confirmContinue: '', Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java =================================================================== diff -u -r14825 -r14856 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java (.../PackingManager.java) (revision 14825) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java (.../PackingManager.java) (revision 14856) @@ -109,7 +109,7 @@ public String packingTousse_TRANS_REQUIRED(String params,HttpSession session) throws Exception; public boolean addTousseInstanceToIdCardInstance( - IDCardInstance idCardInstance, PackingTask packingTask, + String idCardDefinitionId,String idCardInstanceID, PackingTask packingTask, TousseInstance tousseInstance); public void updateGoodsStock(String orgUnitCoding,List tousseList); Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r14825 -r14856 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 14825) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 14856) @@ -33,6 +33,7 @@ import org.apache.log4j.Logger; import org.hibernate.Criteria; import org.hibernate.Query; +import org.hibernate.Session; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Restrictions; @@ -92,6 +93,7 @@ import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; 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.PackingTaskForDisplay; import com.forgon.disinfectsystem.packing.vo.ReviewerVo; @@ -157,6 +159,7 @@ private SerialNumManager serialNumManager; + private IDCardDefinitionManager idCardDefinitionManager; private IDCardInstanceManager idCardInstanceManager; private ReviewedBasketManager reviewedBasketManager; @@ -272,6 +275,11 @@ this.serialNumManager = serialNumManager; } + public void setIdCardDefinitionManager( + IDCardDefinitionManager idCardDefinitionManager) { + this.idCardDefinitionManager = idCardDefinitionManager; + } + public void setIdCardInstanceManager(IDCardInstanceManager idCardInstanceManager) { this.idCardInstanceManager = idCardInstanceManager; } @@ -2796,6 +2804,7 @@ String taskGroup = JSONUtil.optString(paramsObj, "taskGroup", null); String splitPackages = JSONUtil.optString(paramsObj, "splitPackage", null); String basketBarcode = JSONUtil.optString(paramsObj, "basketBarcode", null); + String idCardDefinitionId = JSONUtil.optString(paramsObj, "idCardDefinitionId", null); String idCardInstanceID = JSONUtil.optString(paramsObj, "idCardInstanceID", null); String sterilizerName = JSONUtil.optString(paramsObj, "sterilizer", null); String sterileFrequency = JSONUtil.optString(paramsObj, "frequency", null); @@ -3134,7 +3143,7 @@ JSONObject result = batchCreateTousseInstance( operator, operatorCode, reviewer,reviewerCode, packageType, - sterilingType, stock,idCardInstanceID,washRecordList, washBasket,sterilizerName, sterileFrequency,sterileStartTime, + sterilingType, stock,idCardDefinitionId,idCardInstanceID,washRecordList, washBasket,sterilizerName, sterileFrequency,sterileStartTime, validUntil, warningUntil,currentPackingTaskAsList,packingRecord, td, tousseType,tousseName,foreignTousseApplication,packingDate, packingAmountForThisTask, toussePrice, fluctuationPrice,tousseAmount, orgUnitCoding,orgUnitName,basketBarcode, @@ -3424,14 +3433,22 @@ * @return 绑定成功,返回true,否则返回false */ public boolean addTousseInstanceToIdCardInstance( - IDCardInstance idCardInstance, PackingTask packingTask, + String idCardDefinitionId,String idCardInstanceID, PackingTask packingTask, TousseInstance tousseInstance) { + if(StringUtils.isBlank(idCardDefinitionId)){ + throw new RuntimeException("标识牌定义id不能为空!"); + } + IDCardDefinition idCardDefinition = idCardDefinitionManager.getIDCardDefinitionById_ForUpdate(idCardDefinitionId); + if(idCardDefinition == null){ + throw new RuntimeException("标识牌定义已被删除!"); + } + IDCardInstance idCardInstance = idCardInstanceManager.getIDCardInstanceById_ForUpdate(idCardInstanceID); boolean addSuccess = false; - if(idCardInstance == null){ throw new RuntimeException("标识牌已被删除!"); } + tousseInstance.setIdCardInstanceID(idCardInstance.getId()); tousseInstance.setIdCardInstanceBarcode(idCardInstance.getBarcode()); @@ -3442,12 +3459,25 @@ else{ useAmount = 1L; } + // 此处已做并发控制,可以直接增加次数,不用汇总所有标识牌实例 + idCardInstance.setUseAmount(useAmount); + Long useAmountOfDef = idCardDefinition.getUseAmount(); + if (useAmountOfDef != null){ + useAmountOfDef += 1; + } + else{ + useAmountOfDef = 1L; + } + idCardDefinition.setUseAmount(useAmountOfDef); + tousseInstance.setUseAmount(useAmountOfDef); - long useAmountOfIdCardDef = idCardInstanceManager.modifyIDCardUseAmount(idCardInstance, useAmount); - tousseInstance.setUseAmount(useAmountOfIdCardDef); - objectDao.saveOrUpdate(tousseInstance); + idCardInstance.safelySetLastTousseInstanceId(tousseInstance.getId()); + idCardDefinition.safelySetLastTousseInstanceId(tousseInstance.getId()); + objectDao.update(idCardInstance); + objectDao.update(idCardDefinition); + if (packingTask != null){ // 获取一个标识牌信息 String sql = String @@ -3507,7 +3537,7 @@ */ private JSONObject batchCreateTousseInstance(String operator, String operatorCode, String reviewer, String reviewerCode,String packageType, String sterilingType, String stock, - String idCardInstanceID,List washRecordList, String washBasket,String sterilizerName, String sterileFrequency, + String idCardDefinitionId,String idCardInstanceID,List washRecordList, String washBasket,String sterilizerName, String sterileFrequency, Date sterileStartTime, Date validUntil, Date warningUntil,List packingTaskList, PackingRecord packingRecord, TousseDefinition tousseDefinition,String tousseType, String tousseName,ForeignTousseApplication foreignTousseApplication,Date packingDate, Integer currentPackAmount, double toussePrice,double fluctuationPrice, Integer tousseAmount,String orgUnitCoding, String orgUnitName, @@ -3625,8 +3655,8 @@ if(currentPackingTask == null){ throw new RuntimeException("未获取到装配任务!"); } - IDCardInstance idCardInstance = idCardInstanceManager.getIDCardInstanceByID(idCardInstanceID); - bindTousseInstanceWithIdcard = addTousseInstanceToIdCardInstance( idCardInstance, + + bindTousseInstanceWithIdcard = addTousseInstanceToIdCardInstance( idCardDefinitionId,idCardInstanceID, currentPackingTask, tousseInstance); }