Index: ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManagerImpl.java =================================================================== diff -u -r26281 -r28306 --- ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManagerImpl.java (.../IDCardDefinitionManagerImpl.java) (revision 26281) +++ ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManagerImpl.java (.../IDCardDefinitionManagerImpl.java) (revision 28306) @@ -16,18 +16,26 @@ import net.sf.json.processors.DefaultValueProcessor; import net.sf.json.util.CycleDetectionStrategy; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.hibernate.Query; import org.hibernate.Session; +import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.directory.model.BarcodeDevice; +import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.barcode.service.BarcodeManager; +import com.forgon.disinfectsystem.basedatamanager.sterilisation.service.SterilisationManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.basedatamanager.toussedefinition.service.TousseInstanceUtils; import com.forgon.disinfectsystem.common.Constants; +import com.forgon.disinfectsystem.entity.assestmanagement.DiposableGoodsInstance; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.TraceableMaterial; +import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; +import com.forgon.disinfectsystem.entity.basedatamanager.sterilisation.Sterilisation; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; @@ -71,6 +79,8 @@ private SupplyRoomConfigManager supplyRoomConfigManager; + private SterilisationManager sterilisationManager; + public void setMaterialDefinitionManager( MaterialDefinitionManager materialDefinitionManager) { this.materialDefinitionManager = materialDefinitionManager; @@ -95,6 +105,10 @@ this.supplyRoomConfigManager = supplyRoomConfigManager; } + public void setSterilisationManager(SterilisationManager sterilisationManager) { + this.sterilisationManager = sterilisationManager; + } + private void save_internal(IDCardDefinition idCardDefinition) { idCardDefinition.validateAssociatedInfo(); objectDao.save(idCardDefinition); @@ -986,4 +1000,123 @@ return container; } + @Override + public String rePrintIDCardInstance_TRANS_REQUIRED2( + String tousseDefinitionID, String idCardInstanceID) { + return rePrintIDCardInstance_internal2(tousseDefinitionID, + idCardInstanceID); + } + + /** + * 根据器械包定义id和标识牌实例id获取标识牌模板打印内容(NYSY-3) + */ + private String rePrintIDCardInstance_internal2(String tousseDefinitionID, + String idCardInstanceID) { + String printDate = com.forgon.Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS + .format(new Date()); + // 锁定并获取器械包定义 + TousseDefinition tousseDefinition = tousseDefinitionManager + .getById_ForUpdate_MANDATORY(tousseDefinitionID); + if (tousseDefinition == null) { + throw new RuntimeException("器械包定义已被删除!"); + } + + IDCardInstance idCardInstance = idCardInstanceManager + .getIDCardInstanceByID(idCardInstanceID); + if (idCardInstance == null) { + throw new RuntimeException("标识牌实例已被删除!"); + } + idCardInstance.setPrintDate(printDate); + idCardInstanceManager.update_TRANS_MANDATORY(idCardInstance); + + return getJsonStringForPrint2(idCardInstance, tousseDefinition, null); + } + + /** + * 获取标签模板数据源为“标识牌”的打印内容(NYSY-3) + */ + private String getJsonStringForPrint2(IDCardInstance idCardInstance, + TousseDefinition tousseDefinition, MaterialErrorDamageDetail error) { + IDCardDefinition idCardDefinition = idCardInstance.getIDCardDefinition(objectDao); + if (idCardDefinition == null) { + throw new RuntimeException("标识牌定义已被删除!"); + } + + JSONObject obj = new JSONObject(); + + LoginUserData loginUser = AcegiHelper.getLoginUser(); + //String orgUnitName = loginUser.getCurrentOrgUnitName(); + String hospitalName = loginUser.getHospitalName(); + + //(科室)包名 + //String name = "(" + orgUnitName + ")" + tousseDefinition.getName(); + //obj.put("name", name); + //包名 + obj.put("tousseNameWithoutDepart", tousseDefinition.getName()); + //灭菌程序 + obj.put("sterilingType", tousseDefinition.getSterilingMethod()); + //灭菌程序简称 + Sterilisation sterilisation = sterilisationManager.getSterilisationBySterilisationType(tousseDefinition.getSterilingMethod()); + obj.put("sterilisationAbbreviation", sterilisation == null ? "" : sterilisation.getSterilisationAbbreviation()); + //科室 + //obj.put("depart", orgUnitName); + //医院名称 + obj.put("hospitalName", hospitalName); + //备注 + obj.put("remark", ""); + //器械总数 + List materialInstances = tousseDefinition.getMaterialInstances(); + List diposableGoodsItems = tousseDefinition.getDiposableGoodsItems(); + obj.put("materialAmount", tousseDefinition.getMaterialAmount()); + //材料总数 + Integer diposableGoodsAmount = diposableGoodsItems == null ? 0 : diposableGoodsItems.size(); + obj.put("totalAmount", tousseDefinition.getMaterialAmount() + diposableGoodsAmount); + //材料种类 + Set mdSet = new HashSet(); + if(CollectionUtils.isNotEmpty(materialInstances)){ + for (MaterialInstance materialInstance : materialInstances) { + mdSet.add(materialInstance.getMaterialDefinition()); + } + } + obj.put("materialsTypesAmount", mdSet.size()); + //包装类型 + obj.put("packageType", tousseDefinition.getPackageType()); + //标识牌定义编号 + obj.put("idCardDefinitionIdNumber", idCardDefinition.getIdNumber()); + //标识牌定义描述 + obj.put("idCardDefinitionDescription", idCardDefinition.getDescription()); + + //材料列表 + JSONArray materials = new JSONArray(); + + if(CollectionUtils.isNotEmpty(materialInstances)){ + for (MaterialInstance materialInstance : materialInstances) { + JSONObject json = new JSONObject(); + json.put("name", materialInstance.getMaterialName()); + json.put("count", materialInstance.getCount()); + json.put("price", materialInstance.getMaterialDefinition().getCost()); + json.put("specification", materialInstance.getSpecification()); + materials.add(json); + } + } + + if(CollectionUtils.isNotEmpty(diposableGoodsItems)){ + for (DiposableGoodsInstance diposableGoodsItem : diposableGoodsItems) { + JSONObject json = new JSONObject(); + DisposableGoods diposableGoods = diposableGoodsItem.getDiposableGoods(); + if(diposableGoods != null){ + json.put("name", diposableGoods.getName()); + json.put("count", diposableGoodsItem.getAmount()); + json.put("price", diposableGoods.getReferencePrice()); + json.put("specification", diposableGoods.getSpecification()); + materials.add(json); + } + } + } + + obj.put("materials", materials); + + return obj.toString(); + } + } Index: ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/action/IDCardDefinitionAction.java =================================================================== diff -u -r25750 -r28306 --- ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/action/IDCardDefinitionAction.java (.../IDCardDefinitionAction.java) (revision 25750) +++ ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/action/IDCardDefinitionAction.java (.../IDCardDefinitionAction.java) (revision 28306) @@ -253,6 +253,33 @@ e.printStackTrace(); } } + + /** + * 在器械包定义的标识牌标签页中,按照标签模板打印出标识牌的内容(NYSY-3) + */ + public void printIDCardInstance() { + String tousseDefinitionID = StrutsParamUtils.getPraramValue( + "tousseDefinitionID", ""); + String idCardInstanceID = StrutsParamUtils.getPraramValue( + "idCardInstanceID", ""); + StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); + JSONObject jsonObject = new JSONObject(); + try { + String json = idCardDefinitionManager + .rePrintIDCardInstance_TRANS_REQUIRED2(tousseDefinitionID, + idCardInstanceID); + jsonObject = JSONObject.fromObject(json); + jsonObject.put("success", true); + } catch (Exception e) { + e.printStackTrace(); + jsonObject.put("success", false); + } + try { + StrutsParamUtils.getResponse().getWriter().println(jsonObject.toString()); + } catch (Exception e) { + e.printStackTrace(); + } + } // public void saveIDCardDefinition_old() { // String tousseID = StrutsParamUtils.getPraramValue("id", ""); Index: ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManager.java =================================================================== diff -u -r25750 -r28306 --- ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManager.java (.../IDCardDefinitionManager.java) (revision 25750) +++ ssts-idcard/src/main/java/com/forgon/disinfectsystem/idcarddefinition/service/IDCardDefinitionManager.java (.../IDCardDefinitionManager.java) (revision 28306) @@ -59,5 +59,11 @@ public void saveTraceableMaterials_TRANS_REQUIRED(String idCardDefinitionId,String originalTraceableMaterialsStr,String traceableMaterialsStr); public void newAndSaveContainer(IDCardDefinition idCardDefinition); public Container newContainer(IDCardDefinition idCardDefinition); + + /** + * 在器械包定义的标识牌标签页中,按照标签模板打印出标识牌的内容(NYSY-3) + */ + public String rePrintIDCardInstance_TRANS_REQUIRED2( + String tousseDefinitionID, String idCardInstanceID); }