Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java =================================================================== diff -u -r12713 -r12895 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java (.../PackingAction.java) (revision 12713) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java (.../PackingAction.java) (revision 12895) @@ -21,7 +21,6 @@ import net.sf.json.util.PropertyFilter; import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.math.NumberUtils; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; @@ -36,7 +35,6 @@ import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; -import com.forgon.disinfectsystem.entity.idcarddefinition.IDCardDefinition; import com.forgon.disinfectsystem.entity.idcardinstance.IDCardInstance; import com.forgon.disinfectsystem.entity.packing.PackingRecord; import com.forgon.disinfectsystem.entity.packing.PackingTask; @@ -137,49 +135,6 @@ this.idCardInstanceManager = idCardInstanceManager; } - /** - * - * @param tempAmount - * @param idCardBarcode - * @param tousseInstance - * @return - */ - private boolean addTousseInstanceToIdCardInstance(Integer tempAmount, - String idCardBarcode, TousseInstance tousseInstance) { - boolean isIdCardBarcodeMatch = false; - IDCardInstance idCardInstance = null; - List idCardDefinitions = tousseInstance.getTousseDefinition().getIDCardDefinitions(objectDao); - if (idCardDefinitions != null) { - for (IDCardDefinition idCardDefinition : idCardDefinitions) { - if (NumberUtils.INTEGER_ZERO.equals(idCardDefinition - .getDeleted())) { - for (IDCardInstance idCardInstance2 : idCardDefinition - .getIDCardInstances(objectDao)) { - if (IDCardInstance.STATUS_USING - .equals(idCardInstance2.getStatus())) { - if (StringUtils.equals( - idCardInstance2.getBarcode(), - idCardBarcode)) { - isIdCardBarcodeMatch = true; - idCardInstance = idCardInstance2; - } - break; - } - } - } - } - } - if (isIdCardBarcodeMatch && idCardInstance != null) { - - tousseInstance.setIdCardInstanceID(idCardInstance.getId()); - objectDao.saveOrUpdate(tousseInstance); - - return true; - } else { - return false; - } - } - public void getTousseMaterialByBarcode() { String barcodeStr = StrutsParamUtils.getRequest().getParameter( "barcode"); @@ -298,7 +253,8 @@ String disinfectionItemStr = "";// 消毒物品材料明细 boolean isPrint = true; boolean isTraceable = true; - + String idCardDefinitionUseAmount = ""; + // 修改装配数量 printValue += tousseName + ":"; Integer packAmount = Integer.parseInt(packAmountStr); @@ -455,8 +411,15 @@ // 器械包标志牌处理 // 如果找到对应的器械包标识牌实例,则该器械包实例与标识牌实例关联,并退出循环,因为这里是1对1的关系 - if (addTousseInstanceToIdCardInstance(packAmount, - idCardBarcode, tousseInstance)) { + + IDCardInstance idCardInstance = idCardInstanceManager.getIDCardInstanceByBarcode(idCardBarcode); + if (packingManager.addTousseInstanceToIdCardInstance( + idCardInstance, null, tousseInstance)) { + Long useAmount = tousseInstance.getUseAmount(); + if (useAmount != null){ + idCardDefinitionUseAmount = useAmount.toString(); + } + break; } } @@ -475,6 +438,7 @@ printValue = "{success:true,message:'保存成功',barcode:'" + printValue.substring(0, printValue.length() - 1) + "',isPrint:" + isPrint + ",isTraceable:" + isTraceable + + ",idCardDefinitionUseAmount:" + idCardDefinitionUseAmount + ",fixedBarcode:'" + fixedBarcode + "',isDisinfection:" + isDisinfection + ",disinfectionItem:[" + disinfectionItemStr + "]}"; Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r12893 -r12895 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 12893) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 12895) @@ -2529,12 +2529,19 @@ return newTousseDefinition; } - private boolean addTousseInstanceToIdCardInstance( - String idCardInstanceID, PackingTask task, + /** + * 将新产生的器械包实例与标识牌实例进行绑定 + * @param idCardInstance 标识牌实例 + * @param task 装配任务,自定义装配则为null + * @param tousseInstance 器械包实例 + * @return 绑定成功,返回true,否则返回false + */ + public boolean addTousseInstanceToIdCardInstance( + IDCardInstance idCardInstance, PackingTask task, TousseInstance tousseInstance) { boolean addSuccess = false; - IDCardInstance idCardInstance = idCardInstanceManager.getIDCardInstanceByID(idCardInstanceID); + if(idCardInstance == null){ throw new RuntimeException("标识牌已被删除!"); } @@ -2543,18 +2550,23 @@ long useAmountOfIdCardDef = updateIDCardUseAmount(idCardInstance); tousseInstance.setUseAmount(useAmountOfIdCardDef); - // 获取一个标识牌信息 - String sql = String - .format("where po.idCardInstanceID=%s and po.packingTaskID = %s",idCardInstanceID,task.getId()); - IDCardInfoForPackingTask idCardInfo = (IDCardInfoForPackingTask)objectDao.getBySql(IDCardInfoForPackingTask.class.getSimpleName(), sql); - if(idCardInfo == null){ - throw new RuntimeException("未获取到和装配任务相关的标识牌信息!"); + objectDao.saveOrUpdate(tousseInstance); + + if (task != null){ + // 获取一个标识牌信息 + String sql = String + .format("where po.idCardInstanceID=%s and po.packingTaskID = %s",idCardInstance.getId(),task.getId()); + IDCardInfoForPackingTask idCardInfo = (IDCardInfoForPackingTask)objectDao.getBySql(IDCardInfoForPackingTask.class.getSimpleName(), sql); + if(idCardInfo == null){ + throw new RuntimeException("未获取到和装配任务相关的标识牌信息!"); + } + if(!idCardInfo.isAwaitPacking()){ + throw new RuntimeException("标识牌已装配,不能重复装配!"); + } + idCardInfo.setStatus(PackingTask.STATUS_PACKED); + objectDao.update(idCardInfo);// 更新该标识牌对应的装配状态 } - if(!idCardInfo.isAwaitPacking()){ - throw new RuntimeException("标识牌已装配,不能重复装配!"); - } - idCardInfo.setStatus(PackingTask.STATUS_PACKED); - objectDao.update(idCardInfo);// 更新该标识牌对应的装配状态 + addSuccess = true; return addSuccess; @@ -2733,7 +2745,8 @@ if(currentPackingTask == null){ throw new RuntimeException("未获取到装配任务!"); } - bindTousseInstanceWithIdcard = addTousseInstanceToIdCardInstance( idCardInstanceID, + IDCardInstance idCardInstance = idCardInstanceManager.getIDCardInstanceByID(idCardInstanceID); + bindTousseInstanceWithIdcard = addTousseInstanceToIdCardInstance( idCardInstance, currentPackingTask, tousseInstance); } Index: ssts-web/src/main/webapp/disinfectsystem/packing/directPacking.js =================================================================== diff -u -r12532 -r12895 --- ssts-web/src/main/webapp/disinfectsystem/packing/directPacking.js (.../directPacking.js) (revision 12532) +++ ssts-web/src/main/webapp/disinfectsystem/packing/directPacking.js (.../directPacking.js) (revision 12895) @@ -163,7 +163,7 @@ barcodeField.setValue(); } - function printBarcode(barcodeStr,disinfectionDate,isTraceable,fixedBarcode){ + function printBarcode(barcodeStr,disinfectionDate,isTraceable,fixedBarcode,idCardDefinitionUseAmount){ var names = getPrintNames(isPrintUserFullName, Ext.getCmp('operator').getValue(), Ext.getCmp('reviewer').getValue(), Ext.getCmp('operatorCode').getValue(), Ext.getCmp('reviewerCode').getValue()); @@ -172,7 +172,7 @@ var sterilingType = Ext.getCmp("sterilingType").getValue(); var sterilizer = Ext.getCmp("sterilizer").getValue(); var frequency = Ext.getCmp("frequency").getValue(); - + if(barcodeStr != null && barcodeStr.length > 0){ var tousseName = Ext.getCmp('tousseName').getValue(); @@ -222,7 +222,7 @@ var obj = {'barcode':pBarcode, 'name':toussName,'pageType':barcodePaperType, 'materials':materials, 'operator':names.operatorToPrint, 'reviewer': names.reviewerToPrint, 'sterilizationDate':sterilizationDate, 'validDate':validDate, 'hospitalName':hospitalName, 'sterilizer':sterilizer, 'frequency':frequency, 'markTousse':markTousse, 'sterilingType':sterilingType ,'materialAmount':jsonObj.materialAmount,'diposableGoodsAmount':jsonObj.diposableGoodsAmount,'totalAmount':jsonObj.totalAmount, - 'packageTypeAbbreviation':packageTypeAbbreviation}; + 'idCardDefinitionUseAmount':idCardDefinitionUseAmount,'packageTypeAbbreviation':packageTypeAbbreviation}; defaultPrintPackage(obj); tempPrintNum--; } @@ -1325,11 +1325,13 @@ var isPrint = action.result.isPrint; var isTraceable = action.result.isTraceable; var fixedBarcode = action.result.fixedBarcode; + var idCardDefinitionUseAmount = action.result.idCardDefinitionUseAmount; + if(isPrint){ if(action.result.isDisinfection){//是否为消毒物品 printBarcodeOfDisinfection(action.result.barcode, action.result.disinfectionItem,isTraceable,fixedBarcode); }else{ - printBarcode(action.result.barcode,disinfectionDate,isTraceable,fixedBarcode); + printBarcode(action.result.barcode,disinfectionDate,isTraceable,fixedBarcode,idCardDefinitionUseAmount); } }else{ showResult("此器械包不打印标签!"); Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java =================================================================== diff -u -r12713 -r12895 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java (.../PackingManager.java) (revision 12713) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java (.../PackingManager.java) (revision 12895) @@ -10,6 +10,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; +import com.forgon.disinfectsystem.entity.idcardinstance.IDCardInstance; import com.forgon.disinfectsystem.entity.packing.IDCardInfoForPackingTask; import com.forgon.disinfectsystem.entity.packing.PackingRecord; import com.forgon.disinfectsystem.entity.packing.PackingTask; @@ -102,4 +103,7 @@ String packAmountStr, String taskGroup, String splitPackage, String basketBarcode, String idCardInstanceID, String sterilizerName, String sterileFrequency,String confirmContinue,HttpSession session) ; + public boolean addTousseInstanceToIdCardInstance( + IDCardInstance idCardInstance, PackingTask task, + TousseInstance tousseInstance); }