Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/action/ButtJointUseRecordAction.java =================================================================== diff -u -r25486 -r25576 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/action/ButtJointUseRecordAction.java (.../ButtJointUseRecordAction.java) (revision 25486) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/action/ButtJointUseRecordAction.java (.../ButtJointUseRecordAction.java) (revision 25576) @@ -4,14 +4,17 @@ import java.util.Date; import java.util.List; +import net.sf.json.JSONArray; import net.sf.json.JSONObject; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; +import com.forgon.Constants; import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.directory.service.OrgUnitManager; import com.forgon.disinfectsystem.common.CssdUtils; @@ -22,7 +25,6 @@ import com.forgon.log.model.Log; import com.forgon.log.service.LogManager; import com.forgon.security.model.User; -import com.forgon.security.service.OperationManager; import com.forgon.security.service.UserManager; import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.StrutsResponseUtils; @@ -277,6 +279,160 @@ public void reviewAndConvertUseRecordForm() { saveAndReviewAndConvertUseRecordForm(); } + + + /** + * 根据住院号/诊疗号查询病人使用记录信息 + * 使用记录的器械包信息 + * @param patientNum + * @param numType + */ + public void loadUseRecordsAndTousseInstanceInfosInfosByPatientNumber(){ + String patientNum = StrutsParamUtils.getPraramValue("patientNum" , ""); + String numType = StrutsParamUtils.getPraramValue("numType" , "hospitalNum"); + JSONObject result = JSONUtil.buildJsonObject(false); + JSONArray dataArray = new JSONArray(); + try{ + if(StringUtils.isBlank(patientNum)){ + JSONUtil.addMessage(result, "住院号、诊疗号不能为空."); + }else{ + //查询条件 + String condition = "where 1=1 "; + if(StringUtils.equals(PatientInfoVO.NUMTYPE_HOSPITALNUM, numType)){ + condition += " and hospitalNum='"+ patientNum +"' "; + }else if(StringUtils.equals(PatientInfoVO.NUMTYPE_TREATMENTNUM, numType)){ + condition += "and treatmentNum='"+ patientNum +"' "; + }else{ + JSONUtil.addMessage(result, "numType参数值不对"); + StrutsResponseUtils.output(result); + return; + } + //根据住院号或诊疗号查询使用记录 + List useRecordList = objectDao.findBySql(UseRecord.class.getSimpleName(), condition); + if (CollectionUtils.isEmpty(useRecordList)){ + JSONUtil.addMessage(result, "没有查找到对应的病人使用记录"); + StrutsResponseUtils.output(result); + return; + } + //返回数据 + for (UseRecord useRecord : useRecordList) { + //1、病人使用记录 + JSONObject data = useRecordReulst(useRecord); + //2、获得病人使用记录的器械包实例信息 + List tousseInstanceList = useRecord.getTousseInstanceList(objectDao); + JSONArray tiTraceInfoList = getTousseInstanceListJson(tousseInstanceList,useRecord.getId()); + data.put("tousseInstanceInfos", tiTraceInfoList); + dataArray.add(data); + } + JSONUtil.addProperty(result, JSONUtil.JSON_KEY_SUCCESS, true); + JSONUtil.addProperty(result, JSONUtil.JSON_KEY_ROWS,dataArray); + } + } + catch(Exception e){ + JSONUtil.addMessage(result, "调用接口失败!"+e.getMessage()); + logger.debug("调用接口失败!loadUseRecordsAndTousseInstanceTraceInfosInfoByPatientNumber"+e.getMessage()); + e.printStackTrace(); + } + StrutsResponseUtils.output(result); + } + + /** + * + * @param useRecord + * @return + */ + private JSONObject useRecordReulst(UseRecord useRecord) { + JSONObject data = new JSONObject(); + if(null != useRecord){ + data.put("hospitalNum", useRecord.getHospitalNum());//住院号 + data.put("applicationTimeStr", useRecord.getApplicationTimeStr());//申请时间 + data.put("bedNumber", useRecord.getBedNumber());//床位 + data.put("circuitNurse", useRecord.getCircuitNurse());//巡回护士 + data.put("depart", useRecord.getDepart());//科室 + data.put("operation", useRecord.getOperation());//手术名称 + data.put("operationRoom", useRecord.getOperationRoom());//手术间 + data.put("operationTimeStr", useRecord.getOperationTimeStr());//手术时间 + data.put("operator", useRecord.getOperator());//操作员 + data.put("patientAge", useRecord.getPatientAge());//年龄 + data.put("patientArea", useRecord.getPatientArea());//病区 + data.put("patientIDCard", useRecord.getPatientIDCard());//身份证 + data.put("patientName", useRecord.getPatientName());//病人姓名 + data.put("patientSex", useRecord.getPatientSex());//性别 + data.put("reviewer", useRecord.getReviewer());//审核人姓名 + data.put("treatmentNum", useRecord.getTreatmentNum());//诊疗号 + data.put("washHandNurse", useRecord.getWashHandNurse());//洗手护士 + } + return data; + } + + /** + * 将使用记录的包实例集合转换成jsonArray对象 + * @param tousseInstances + * @param useRecordId + * @return + */ + private JSONArray getTousseInstanceListJson(List tousseInstances,Long useRecordId) { + JSONArray tousseInstanceArray = new JSONArray(); + if (tousseInstances != null) { + for (TousseInstance ti : tousseInstances) { +// ti.setTousseMaterialErrorDamageList(ti.getTousseMaterialErrorDamageList(objectDao, TousseMaterialErrorDamage.LINKTYPE_USERECORD, null)); + String validUntilStr = ti.getValidUntilStr(Constants.SIMPLEDATEFORMAT_YYYYMMDD); +// TousseDefinition td = ti.getTousseDefinition(); +// String tousseDefinitionName = ""; +// +// String tousseType = ""; +// String includeImplant = ""; +// String isRecycling = TousseDefinition.STR_NO; +// String isConvertApplyGoods = TousseDefinition.STR_NO; +// if (td != null) { +// tousseType = td.getTousseType(); +// tousseDefinitionName = td.getName(); +// includeImplant = td.getIncludeImplantStr(); +// +// isRecycling = td.getIsRecycling(); +// isConvertApplyGoods = td.getIsConvertApplyGoods(); +// } + JSONObject obj = new JSONObject(); +// obj.put("id", ti.getId()); + obj.put("barcode", ti.getBarcode());//条码 + obj.put("amount", 1);//数量 +// obj.put("tousseDefinitionName", tousseDefinitionName); + obj.put("showTousseName", ti.getShowTousseName());//名称 + obj.put("packageType", ti.getPackageType());//包装类型 + obj.put("validUntil", validUntilStr);//失效日期 +// obj.put("status", ti.getStatus()); +// obj.put("tousseType", tousseType); +// obj.put("foreignTousseApp_id", ti.getForeignTousseApp_id()); +// obj.put("isUrgentForUseRecord", StringTools.defaultString(ti.getIsUrgentForUseRecord())); +// obj.put("includeImplant", includeImplant); +// obj.put("actualUsed", StringTools.defaultIfBlank(ti.getActualUsed(),Constants.STR_YES)); +// obj.put("isRecycling", isRecycling);//是否回收 +// obj.put("isConvertApplyGoods", isConvertApplyGoods);//是否转换申请单 +// obj.put("tousseMaterialErrorDamageJsonData", ti.getTousseMaterialErrorDamageJsonData()); +// obj.put("recyclingStatus", ti.getRecyclingStatus());//回收状态 + tousseInstanceArray.add(obj); + + //需要循环该使用记录的所有器械包,如果发现有聚合包,且配置允许修改子包修改数量时,需要将子包的使用情况也输出给前端 + //如果有启用聚合包的子包修改数量功能则,则需要将子包的信息也显示出来 + // 判断包实例是否为聚合包 +// if(ti.isComboTousse()){ +// //判断有无开启聚合包内的子包修改使用数量的配置项 +// boolean comboTousseRegistUseRecordCanModifySubTousseAmount = +// CssdUtils.getSystemSetConfigByNameBool("comboTousseRegistUseRecordCanModifySubTousseAmount", false); +// //如果开启了此配置项,则除了加载此聚合包实例外还需再加载聚合包内的子包实例 +// if(comboTousseRegistUseRecordCanModifySubTousseAmount){ +// //如果存在使用记录id,则查出每一个子包实例对应已使用数量,否则已使用数量都为0 +// JSONArray result = useRecordManager.loadSubTousseUseRecordOfComboTousse(ti , useRecordId); +// if(result != null && result.size() > 0){ +// tousseInstanceArray.addAll(result); +// } +// } +// } + } + } + return tousseInstanceArray; + }; + @Override public UseRecord getModel() {