Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java =================================================================== diff -u -r13041 -r13111 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java (.../PackingAction.java) (revision 13041) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java (.../PackingAction.java) (revision 13111) @@ -268,173 +268,178 @@ TousseDefinition td = tousseDefinitionManager .getTousseDefinitionBySql(" where po.name = '" + tousseName + "' and po.tousseType = '" + tousseType + "'"); + if(td == null){ + throw new RuntimeException(String.format("装配失败,未找到[%s]的包定义!", tousseName)); + } + if(td.isDisinfection()){ + throw new RuntimeException(String.format("装配失败,消毒物品不能自定义装配!", tousseName)); + } - if (td != null) { - - if(TousseDefinition.STR_NO.equals(td.getIsPrint())){ - isPrint = false; + + if(TousseDefinition.STR_NO.equals(td.getIsPrint())){ + isPrint = false; + isTraceable = false; + }else{ + if(TousseDefinition.STR_NO.equals(td.getIsTraceable())){ isTraceable = false; - }else{ - if(TousseDefinition.STR_NO.equals(td.getIsTraceable())){ - isTraceable = false; - } } - - if (TousseDefinition.PACKAGE_TYPE_DISINFECTION - .equals(td.getTousseType())) { - isDisinfection = true; - JSONObject material = new JSONObject(); - // 是否为消毒物品-->打印物品明细 - List materialInstanceList = td - .getMaterialInstances(); - if (materialInstanceList != null) { - for (MaterialInstance instance : materialInstanceList) { + } + + if (TousseDefinition.PACKAGE_TYPE_DISINFECTION + .equals(td.getTousseType())) { + isDisinfection = true; + JSONObject material = new JSONObject(); + // 是否为消毒物品-->打印物品明细 + List materialInstanceList = td + .getMaterialInstances(); + if (materialInstanceList != null) { + for (MaterialInstance instance : materialInstanceList) { - String name = instance.getMaterialDefinition() - .getName(); - if (StringUtils - .isNotBlank(instance - .getMaterialDefinition() - .getSpecification())) { - name += ("[" - + instance.getMaterialDefinition() - .getSpecification() + "]"); - } - material.put("name", name); - material.put("count", instance.getCount()); - material.put("isDiposable", "否"); - materials.add(material); + String name = instance.getMaterialDefinition() + .getName(); + if (StringUtils + .isNotBlank(instance + .getMaterialDefinition() + .getSpecification())) { + name += ("[" + + instance.getMaterialDefinition() + .getSpecification() + "]"); } + material.put("name", name); + material.put("count", instance.getCount()); + material.put("isDiposable", "否"); + materials.add(material); } + } - List diposableGoodsInstanceList = td - .getDiposableGoodsItems(); - if (diposableGoodsInstanceList != null) { - for (DiposableGoodsInstance instance : diposableGoodsInstanceList) { - String name = instance.getDiposableGoods() - .getName(); - if (StringUtils.isNotBlank(instance - .getDiposableGoods().getSpecification())) { - name += ("[" - + instance.getDiposableGoods() - .getSpecification() + "]"); - } - material.put("name", name); - material.put("amount", instance.getAmount()); - material.put("isDiposable", "是"); - materials.add(material); + List diposableGoodsInstanceList = td + .getDiposableGoodsItems(); + if (diposableGoodsInstanceList != null) { + for (DiposableGoodsInstance instance : diposableGoodsInstanceList) { + String name = instance.getDiposableGoods() + .getName(); + if (StringUtils.isNotBlank(instance + .getDiposableGoods().getSpecification())) { + name += ("[" + + instance.getDiposableGoods() + .getSpecification() + "]"); } + material.put("name", name); + material.put("amount", instance.getAmount()); + material.put("isDiposable", "是"); + materials.add(material); } } + } - // 价格及浮动价格 - double price = td.getPrice(); - double fPrice = supplyRoomConfigManager.getFluctuationPrice(price); + // 价格及浮动价格 + double price = td.getPrice(); + double fPrice = supplyRoomConfigManager.getFluctuationPrice(price); + + // 保存装配记录 + PackingRecord packingRecord = new PackingRecord(); + packingRecord.setIsDirectPacking(true); + packingRecord.setPacker(operator); + packingRecord.setPackTime(new Date()); + packingRecord.setInspector(inspector); + packingRecord.setWrapper(wrapper); + packingRecord.setTousseName(tousseName); + packingRecord.setTousseType(td.getTousseType()); + packingRecord.setSterilizer(sterilizer); + packingRecord.setFrequency(frequency); + packingRecord.setTaskGroup((taskGroup==null||taskGroup.trim().length()==0)?td.getTaskGroup():taskGroup); + packingRecord.setOrgUnitCoding(AcegiHelper.getLoginUser() + .getOrgUnitCodingFromSupplyRoomConfig()); + packingManager.saveOrUpdate(packingRecord); + + // 打印条码、保存包实例 + List tousseInstanceList = new ArrayList(); + + Date currentDate = new Date(); + String sterileStartTime = Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(currentDate); + + for (int i = 0; i < packAmount; i++) { + TousseInstance tousseInstance = new TousseInstance(); - // 保存装配记录 - PackingRecord packingRecord = new PackingRecord(); - packingRecord.setIsDirectPacking(true); - packingRecord.setPacker(operator); - packingRecord.setPackTime(new Date()); - packingRecord.setInspector(inspector); - packingRecord.setWrapper(wrapper); - packingRecord.setTousseName(tousseName); - packingRecord.setTousseType(td.getTousseType()); - packingRecord.setSterilizer(sterilizer); - packingRecord.setFrequency(frequency); - packingRecord.setTaskGroup((taskGroup==null||taskGroup.trim().length()==0)?td.getTaskGroup():taskGroup); - packingRecord.setOrgUnitCoding(AcegiHelper.getLoginUser() - .getOrgUnitCodingFromSupplyRoomConfig()); - packingManager.saveOrUpdate(packingRecord); + tousseInstance.setPackingRecord_id(packingRecord.getId()); - // 打印条码、保存包实例 - List tousseInstanceList = new ArrayList(); + String barcodeStr = serialNumManager + .getSerialNumberStr(SerialNum.TYPE_BARCODE); + tousseInstance.setBarcode(barcodeStr); + tousseInstance.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstance.setTousseDefinition(td); + tousseInstance.setStatisticsAmount(td + .getTousseAmount()); + tousseInstance.setTousseName(tousseName); + tousseInstance.setOperator(operator); + tousseInstance.setOperatorCode(operatorCode); + tousseInstance.setReviewerCode(reviewerCode); - Date currentDate = new Date(); - String sterileStartTime = Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(currentDate); + tousseInstance.setOperationTime(currentDate); + // 将装配时间作为默认的灭菌开始时间 + tousseInstance.setSterileStartTime(sterileStartTime); - for (int i = 0; i < packAmount; i++) { - TousseInstance tousseInstance = new TousseInstance(); - - tousseInstance.setPackingRecord_id(packingRecord.getId()); - - String barcodeStr = serialNumManager - .getSerialNumberStr(SerialNum.TYPE_BARCODE); - tousseInstance.setBarcode(barcodeStr); - tousseInstance.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); - tousseInstance.setTousseDefinition(td); - tousseInstance.setStatisticsAmount(td - .getTousseAmount()); - tousseInstance.setTousseName(tousseName); - tousseInstance.setOperator(operator); - tousseInstance.setOperatorCode(operatorCode); - tousseInstance.setReviewerCode(reviewerCode); - - tousseInstance.setOperationTime(currentDate); - // 将装配时间作为默认的灭菌开始时间 - tousseInstance.setSterileStartTime(sterileStartTime); - - tousseInstance.setPrice(price); - tousseInstance.setFluctuationPrice(fPrice); - - if (i == 0) { - barcodes += tousseInstance.getBarcode(); - } else { - barcodes += ","+tousseInstance.getBarcode() ; - } - tousseInstance.setReviewer(reviewer); - tousseInstance.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); - tousseInstance.setPackageType(packageType); - tousseInstance.setSterilingType(sterilingType); - tousseInstance.setSterilizerName(sterilizer); - tousseInstance.setSterileFrequency(frequency); - - //不审核器械包修改状态 - if(TousseDefinition.STR_NO.equals(td.getIsReview())){ - if(TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(td.getTousseType())){ - tousseInstance.setStatus(TousseInstance.STATUS_DISINFECTED); - }else{ - tousseInstance.setStatus(TousseInstance.STATUS_REVIEWED); - } - tousseInstance.setReviewTime(currentDate); + tousseInstance.setPrice(price); + tousseInstance.setFluctuationPrice(fPrice); + + if (i == 0) { + barcodes += tousseInstance.getBarcode(); + } else { + barcodes += ","+tousseInstance.getBarcode() ; + } + tousseInstance.setReviewer(reviewer); + tousseInstance.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstance.setPackageType(packageType); + tousseInstance.setSterilingType(sterilingType); + tousseInstance.setSterilizerName(sterilizer); + tousseInstance.setSterileFrequency(frequency); + + //不审核器械包修改状态 + if(TousseDefinition.STR_NO.equals(td.getIsReview())){ + if(TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(td.getTousseType())){ + tousseInstance.setStatus(TousseInstance.STATUS_DISINFECTED); }else{ - tousseInstance.setStatus(TousseInstance.STATUS_PACKED); + tousseInstance.setStatus(TousseInstance.STATUS_REVIEWED); } - - tousseInstance.setValidUntil(validUntil); - tousseInstance.setWarningUntil(warningUntil); - tousseInstance.setOrgUnitCoding(AcegiHelper.getLoginUser() - .getOrgUnitCodingFromSupplyRoomConfig()); - tousseInstance.setOrgUnitName(AcegiHelper.getLoginUser() - .getOrgUnitNameCodingFromSupplyRoomConfig()); - - tousseInstanceManager.saveOrUpdate(tousseInstance); - tousseInstanceList.add(tousseInstance); + tousseInstance.setReviewTime(currentDate); + }else{ + tousseInstance.setStatus(TousseInstance.STATUS_PACKED); + } + + tousseInstance.setValidUntil(validUntil); + tousseInstance.setWarningUntil(warningUntil); + tousseInstance.setOrgUnitCoding(AcegiHelper.getLoginUser() + .getOrgUnitCodingFromSupplyRoomConfig()); + tousseInstance.setOrgUnitName(AcegiHelper.getLoginUser() + .getOrgUnitNameCodingFromSupplyRoomConfig()); + + tousseInstanceManager.saveOrUpdate(tousseInstance); + tousseInstanceList.add(tousseInstance); - // 器械包标志牌处理 - // 如果找到对应的器械包标识牌实例,则该器械包实例与标识牌实例关联,并退出循环,因为这里是1对1的关系 - if(StringUtils.isNotBlank(idCardBarcode)){ - IDCardInstance idCardInstance = idCardInstanceManager.getIDCardInstanceByBarcode(idCardBarcode); - if (packingManager.addTousseInstanceToIdCardInstance( - idCardInstance, null, tousseInstance)) { - Long useAmount = tousseInstance.getUseAmount(); - if (useAmount != null){ - idCardDefinitionUseAmount = useAmount.toString(); - } - - break; + // 器械包标志牌处理 + // 如果找到对应的器械包标识牌实例,则该器械包实例与标识牌实例关联,并退出循环,因为这里是1对1的关系 + if(StringUtils.isNotBlank(idCardBarcode)){ + IDCardInstance idCardInstance = idCardInstanceManager.getIDCardInstanceByBarcode(idCardBarcode); + if (packingManager.addTousseInstanceToIdCardInstance( + idCardInstance, null, tousseInstance)) { + Long useAmount = tousseInstance.getUseAmount(); + if (useAmount != null){ + idCardDefinitionUseAmount = useAmount.toString(); } + + break; } - } - // 更新装配数量 - packingRecord.setAmount(tousseInstanceList.size()); - packingManager.saveOrUpdate(packingRecord); - //更新库存 - packingManager.updateGoodsStock(packingRecord.getOrgUnitCoding(), tousseInstanceList); } + // 更新装配数量 + packingRecord.setAmount(tousseInstanceList.size()); + packingManager.saveOrUpdate(packingRecord); + //更新库存 + packingManager.updateGoodsStock(packingRecord.getOrgUnitCoding(), tousseInstanceList); + + if (StringUtils.isNotBlank(barcodes)) { String fixedBarcode = ""; if (!isTraceable) {