Index: ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordForm.js =================================================================== diff -u -r14300 -r14324 --- ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordForm.js (.../useRecordForm.js) (revision 14300) +++ ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordForm.js (.../useRecordForm.js) (revision 14324) @@ -799,6 +799,11 @@ id : 'tousseInstanceBarcodes' }, { xtype : 'hidden', + name : 'applicationFormType', + id : 'applicationFormType', + value : sstsConfig.applicationFormType + }, { + xtype : 'hidden', name : 'audited', id : 'audited' },{ Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/action/UseRecordAction.java =================================================================== diff -u -r14247 -r14324 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/action/UseRecordAction.java (.../UseRecordAction.java) (revision 14247) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/action/UseRecordAction.java (.../UseRecordAction.java) (revision 14324) @@ -406,6 +406,8 @@ * 已改为一条使用记录生成一条申请,不再合并,且页面上允许选择不同科室的使用记录进行转换申请单 @author ShuYongFu @since 2016-01-13 */ public void createRecyclingApplicationByUseRecords() { + // 申请表单的类型:1 : 通用申请单(组合申请单),2:分开的申请单 + String applicationFormType = StrutsParamUtils.getPraramValue("applicationFormType", ""); String idsStr = StrutsParamUtils.getPraramValue("ids", ""); String operator = StrutsParamUtils.getPraramValue("operator", ""); String depart = StrutsParamUtils.getPraramValue("depart", ""); @@ -425,7 +427,7 @@ useRecordManager .createRecyclingApplicationByUseRecords(ids, operator, depart, departCoding, - applicationCreateDate); + applicationCreateDate,applicationFormType); } catch (Exception e) { logger.warn(e.getMessage()); e.printStackTrace(); @@ -446,6 +448,8 @@ // 保存并审核生成申请单 public void saveAndReviewAndConvertUseRecordForm() { + // 申请表单的类型:1 : 通用申请单(组合申请单),2:分开的申请单 + String applicationFormType = StrutsParamUtils.getPraramValue("applicationFormType", ""); String operator = StrutsParamUtils.getPraramValue("operator", ""); String depart = StrutsParamUtils.getPraramValue("depart", ""); String departCoding = StrutsParamUtils.getPraramValue("departCoding", @@ -461,7 +465,7 @@ useRecordManager .saveAndReviewAndConvertUseRecordForm_TRANS_REQUIRED( modified, operator, depart, departCoding, - applicationCreateDate); + applicationCreateDate,applicationFormType); } catch (Exception e) { logger.warn(e.getMessage()); e.printStackTrace(); Index: ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordView.js =================================================================== diff -u -r12331 -r14324 --- ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordView.js (.../useRecordView.js) (revision 12331) +++ ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordView.js (.../useRecordView.js) (revision 14324) @@ -189,7 +189,8 @@ ids : ids, operator : operatorStr, depart : departStr, - departCoding : departCodingStr + departCoding : departCodingStr, + applicationFormType : sstsConfig.applicationFormType }, success : function(response, options) { mask.hide(); Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java =================================================================== diff -u -r14163 -r14324 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java (.../UseRecordManager.java) (revision 14163) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java (.../UseRecordManager.java) (revision 14324) @@ -84,6 +84,8 @@ public void saveUseRecord_TRANS_REQUIRED(UseRecord modified); public String createRecyclingApplicationByUseRecords(Collection ids,String applicant, String depart, String departCodeing,Date applicationCreateDate); + public String createRecyclingApplicationByUseRecords(Collection ids,String applicant, String depart, String departCodeing,Date applicationCreateDate,String applicationFormType); + /** * 根据使用记录创建申请单(原中六的方法) * @param ids @@ -101,7 +103,7 @@ // 审核 public void auditUseRecords_TRANS_REQUIRED(List ids); // 保存并审核生成申请单 - public void saveAndReviewAndConvertUseRecordForm_TRANS_REQUIRED(UseRecord modified,String applicant, String depart, String departCodeing,Date applicationCreateDate)throws Exception; + public void saveAndReviewAndConvertUseRecordForm_TRANS_REQUIRED(UseRecord modified,String applicant, String depart, String departCodeing,Date applicationCreateDate,String applicationFormType)throws Exception; /** * 根据病历号及申请人提交回调(中山六院以外的医院通用) * @param patientNumber 病历号 Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r14163 -r14324 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 14163) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 14324) @@ -832,7 +832,7 @@ boolean isAutomaticlyMergeApplications, boolean isSecondSupplyRoomNeedRecycle,Boolean isDgConvertApplication,Boolean isTousseDgMergeConvert, Map useRecordsMap, String applicant, String depart, - String departCoding, String remark,String operationRoom,String patientName,Date applicationCreateDate,double dpf) { + String departCoding, String remark,String operationRoom,String patientName,Date applicationCreateDate,double dpf,String applicationFormType) { //器械包map,不区分处理科室为一级或二级供应室 Map applyTousseMap = (Map) useRecordsMap .get("applyTousseMap"); @@ -894,17 +894,32 @@ if(isTousseDgMergeConvert == null){ isTousseDgMergeConvert = false; } + + //申请单类型(2表示分开的申请单,1为通用申请单) + if("2".equals(applicationFormType)){ + if(applyTousseMap.size() > 0){ + //创建器械包申请单 + recyclingApplicationManager.createRecyclingApplicationByTousse( + applyTousseMap,new HashMap(), applicant, depart, departCoding, remark, + tousseInstanceCodes,applicationCreateDate,operationRoom,dpf,InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM); + } + if(isDgConvertApplication && applyDiposableGoodsMap.size() > 0){ + //创建一次性物品申请单 + recyclingApplicationManager.createRecyclingApplicationByTousse( + new HashMap(),applyDiposableGoodsMap, applicant, depart, departCoding, remark, + tousseInstanceCodes,applicationCreateDate,operationRoom,dpf,InvoicePlan.TYPE_DIPOSABLE_GOODS_APPLICATION_FORM); + } //如果一次性物品是否转换申请单为是,并且器械包一次性物品转换成申请单是否合并成一张单为否时 - if(isDgConvertApplication && !isTousseDgMergeConvert){ + }else if(isDgConvertApplication && !isTousseDgMergeConvert){ if(applyTousseMap.size() > 0){ recyclingApplicationManager.createRecyclingApplicationByTousse( applyTousseMap,new HashMap(), applicant, depart, departCoding, remark, - tousseInstanceCodes,applicationCreateDate,operationRoom,dpf); + tousseInstanceCodes,applicationCreateDate,operationRoom,dpf,InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM); } if(applyDiposableGoodsMap.size() > 0){ recyclingApplicationManager.createRecyclingApplicationByTousse( new HashMap(),applyDiposableGoodsMap, applicant, depart, departCoding, remark, - tousseInstanceCodes,applicationCreateDate,operationRoom,dpf); + tousseInstanceCodes,applicationCreateDate,operationRoom,dpf,InvoicePlan.TYPE_DIPOSABLE_GOODS_APPLICATION_FORM); } }else{ //否则一次性物品是否转换申请单为否 @@ -914,7 +929,7 @@ //改为不管科室供应室配置定义是否自动合并,都将重新创建新的申请单 recyclingApplicationManager.createRecyclingApplicationByTousse( applyTousseMap,applyDiposableGoodsMap, applicant, depart, departCoding, remark, - tousseInstanceCodes,applicationCreateDate,operationRoom,dpf); + tousseInstanceCodes,applicationCreateDate,operationRoom,dpf,InvoicePlan.TYPE_COMBO_FORM); } //二级供应室是否需要回收(处理所属手术室的包) @@ -1112,11 +1127,165 @@ config.getIsTousseDgMergeConvert(), //是否器械包一次性物品合并转换申请单 useRecordsMap, applicant, depart, departCoding, remark.toString(), operationRoom, - patientName, applicationCreateDate,config.getDiposablePriceFluctuation()); + patientName, applicationCreateDate,config.getDiposablePriceFluctuation(),null); return returnMsg; } /** + * 根据使用记录的id转换生成申请单 + * @param ids + * @param applicant + * @param depart + * @param departCodeing + * @param applicationCreateDate + * @param applicationFormType + * @return + * @since 2016-07-27 + */ + public String createRecyclingApplicationByUseRecords(Collection ids,String applicant, + String depart, String departCoding,Date applicationCreateDate,String applicationFormType){ + SupplyRoomConfig config = supplyRoomConfigManager + .getSystemParamsObj(); + String returnMsg = "保存成功"; + // 获取使用记录参数 + Map useRecordsMap = checkedUseRecords(ids); + StringBuffer remark = new StringBuffer(); + String operationRoom = ""; + String patientName = ""; + List configList = supplyRoomConfigManager + .getSecondSupplyRoomList(); + List useRecordList = (List) useRecordsMap + .get("useRecordList"); + + Set washHandNurseSet = new HashSet(); + Set circuitNurseSet = new HashSet(); + Set patientNameSet = new HashSet(); + String reviewer = ""; + String reviewerCode = ""; + LoginUserData loginUserData = AcegiHelper.getLoginUser(); + if(loginUserData != null){ + reviewer = loginUserData.getUserFullName(); + reviewerCode = loginUserData.getUserName(); + } + String msg = null; + String projectName = CssdUtils.getConfigProperty("project"); + String hospitalNum = ""; + for (UseRecord useRecord : useRecordList) { + + if(useRecord.getStatus().equals(UseRecord.STATUS_APPLIED)){ + msg = String.format("病人为%s的记录为已申请状态", useRecord.getPatientName()); + throw new RuntimeException(msg); + } + + useRecord.setApplicationTime(applicationCreateDate); + useRecord.setReviewer(reviewer); + useRecord.setReviewerCode(reviewerCode); + useRecord.setReviewTime(applicationCreateDate); + + applicant = useRecord.getOperator(); + depart = useRecord.getDepart(); + departCoding = useRecord.getDepartCoding(); + operationRoom = useRecord.getOperationRoom(); + patientName = useRecord.getPatientName(); + boolean isSencondSupplyRoom = false; + if (configList != null && configList.size() > 0) { + if (configList.get(0).getOrgUnitCoding() + .equals(useRecord.getDepartCoding())) { + isSencondSupplyRoom = true; + } + } + + useRecord.setStatus(UseRecord.STATUS_APPLIED); + useRecord.setStatusSequence(UseRecord.STATUS_SEQ_APPLIED); + + if(!"gzfdzl".equals(projectName)){ + String remarkTemp = useRecord.getRemark(); + if (remarkTemp != null && !"".equals(remarkTemp)) { + remark.append(remarkTemp).append(";"); + } else { + remark.append(""); + } + } + + String washHandNurse = useRecord.getWashHandNurse(); + String circuitNurse = useRecord.getCircuitNurse(); + if(washHandNurse == null){ + washHandNurse = ""; + } + if(circuitNurse == null){ + circuitNurse = ""; + } + if(StringUtils.isNotBlank(washHandNurse)){ + washHandNurseSet.add(washHandNurse); + } + if(StringUtils.isNotBlank(circuitNurse)){ + circuitNurseSet.add(circuitNurse); + } + if(StringUtils.isNotBlank(useRecord.getPatientName())){ + patientNameSet.add(useRecord.getPatientName()); + } + hospitalNum = useRecord.getHospitalNum(); + saveOrUpdate(useRecord); + // 二级供应室库存处理 + if (isSencondSupplyRoom) { + // 二级供应室是否回收器械包 + if (!config.isSecondSupplyRoomNeedRecycle()) { + // 只处理回收的包 + String sql = "where po.useRecord_id = " + useRecord.getId(); + List list = tousseInstanceManager + .getTousseInstanceBySql(sql); + for (TousseInstance tousseInstance : list) { + // 器械包是否需要回收 + if (TousseDefinition.STR_YES + .equals(tousseInstance.getTousseDefinition() + .getIsRecycling())) { + DepartmentStock departmentStock = departmentStockManager + .getByDepartCodingAndTousseName( + useRecord.getDepartCoding(), + tousseInstance.getTousseName()); + if (departmentStock != null) { + if (departmentStock.getAmount() == null + || departmentStock.getAmount() <= 0) { + departmentStock.setAmount(0); + } else { + departmentStock.setAmount(departmentStock + .getAmount() - 1); + } + } + } + } + } + } + } + + if("gzfdzl".equals(projectName)){ + remark.append(hospitalNum); + }else{ + if(washHandNurseSet.size() > 0){ + remark.append("洗手护士:"); + remark.append(StringUtils.join(washHandNurseSet, ",")).append(";"); + } + if(circuitNurseSet.size() > 0){ + remark.append("巡回护士:"); + remark.append(StringUtils.join(circuitNurseSet, ",")); + } + if(patientNameSet.size() > 0){ + remark.append("病人:"); + remark.append(StringUtils.join(patientNameSet, ",")); + } + } + // 新建申请单 + mintRecyclingApplication(config.getAutoMergeApplication(), + config.isSecondSupplyRoomNeedRecycle(),// 二级供应室是否需要回收 + config.getIsDgConvertApplication(),//使用记录登记的一次性物品是否转换申请单 + config.getIsTousseDgMergeConvert(), //是否器械包一次性物品合并转换申请单 + useRecordsMap, applicant, + depart, departCoding, remark.toString(), operationRoom, + patientName, applicationCreateDate,config.getDiposablePriceFluctuation(), applicationFormType); + return returnMsg; + } + + /** * 使用记录合成申请单(原中六的方法直接移植) * */ @@ -1270,14 +1439,14 @@ } // 保存并审核生成申请单 - public void saveAndReviewAndConvertUseRecordForm_TRANS_REQUIRED(UseRecord modified,String operator, String depart, String departCoding,Date applicationCreateDate) throws Exception{ + public void saveAndReviewAndConvertUseRecordForm_TRANS_REQUIRED(UseRecord modified,String operator, String depart, String departCoding,Date applicationCreateDate,String applicationFormType) throws Exception{ // 首先保存 saveUseRecord_internal(modified); // 审核并生成申请单 List ids = new ArrayList(1); ids.add(modified.getId()); createRecyclingApplicationByUseRecords(ids, operator, depart, - departCoding, applicationCreateDate); + departCoding, applicationCreateDate,applicationFormType); } private void auditUseRecords_internal(List ids) {