Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r17712 -r17718 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 17712) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 17718) @@ -4,8 +4,10 @@ import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -19,6 +21,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.collections4.Predicate; +import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.jfree.chart.axis.DateAxis; @@ -1121,8 +1124,14 @@ hospitalNumber = useRecord.getHospitalNum(); useRecordId = useRecord.getId(); } + //是否仅统计需要转换的物品数量 + boolean tousseAmountOnlyCountNeedConvertGoods = CssdUtils.getSystemSetConfigByNameBool("useRecordToRecycAppTousseAmountOfRemarkOnlyCountNeedConvertGoods"); + //是否仅统计需要回收的物品数量 + boolean tousseAmountOnlyCountNeedRecyclingGoods = CssdUtils.getSystemSetConfigByNameBool("useRecordToRecycAppTousseAmountOfRemarkOnlyCountNeedRecyclingGoods"); //针对当前使用记录生成申请单的备注 - String remark = getRemarkByUseRecordAndProjectConfig(useRecord); + String remark = getRemarkByUseRecordAndProjectConfig(useRecord , + Collections.singletonList(TousseDefinition.PACKAGE_TYPE_INSIDE) , + tousseAmountOnlyCountNeedConvertGoods , tousseAmountOnlyCountNeedRecyclingGoods); //器械包map,不区分处理科室为一级或二级供应室 Map applyTousseMap = (Map) useRecordsMap .get("applyTousseMap"); @@ -1180,7 +1189,7 @@ //当前登录用户 LoginUserData loginUserData = AcegiHelper.getLoginUser(); //申请单类型(2表示分开的申请单,1为通用申请单) - if("2".equals(applicationFormType)){ + if(InvoicePlan.APPLICATION_FORM_TYPE_SPLIT.equals(applicationFormType)){ if(applyTousseMap.size() > 0){ if(UseRecord.CONVERT_RECYCLINGMANAGER_MERGE_REGULAR_OPERATIONROOM.equals(useRecordConvertRecyclingApplicationMergeRegular) && StringUtils.isNotBlank(useRecord.getOperationRoom())){ @@ -1569,6 +1578,10 @@ applyTousseOfSecondSupplyRoomMap, applicant, depart, departCoding, remark,operationRoom,patientName,applicationCreateDate);*/ } + + remark = getRemarkByUseRecordAndProjectConfig(useRecord , + Collections.singletonList(TousseDefinition.PACKAGE_TYPE_CUSTOM) , + tousseAmountOnlyCountNeedConvertGoods , tousseAmountOnlyCountNeedRecyclingGoods); //自定义器械包生成申请单 recyclingApplicationManager.createRecyclingApplicationByCustomTousse( applyCustomTousseMap, applicant, depart, departCoding, @@ -1584,9 +1597,13 @@ * 3.其它项目:洗手护士:[护士名字];巡回护士:[护士名字];病人:[病人名字] * 通常一条使用记录也只有一个巡回护士、一个洗手护士、一个病人名称 * @param useRecord + * @param includeTousseTypeList 包含的器械包类型(统计备注中的器械包数量用) + * @param onlyCountNeedConvertGoods 是否仅统计需要转换的物品数量(用于备注中的统计器械包数量用) + * @param onlyCountNeedRecyclingGoods 是否仅统计需要回收的物品数量(用于备注中的统计器械包数量用) * @return */ - private String getRemarkByUseRecordAndProjectConfig(UseRecord useRecord){ + private String getRemarkByUseRecordAndProjectConfig(UseRecord useRecord , List includeTousseTypeList , + boolean onlyCountNeedConvertGoods , boolean onlyCountNeedRecyclingGoods){ String useRecordConvertRecyclingApplicationRemark = CssdUtils.getSystemSetConfigByName("useRecordConvertRecyclingApplicationRemark"); if(StringUtils.isNotBlank(useRecordConvertRecyclingApplicationRemark)){ //目前的变量有以下:@circuitNurseLabelName @circuitNurse @patientName @useRecordRemark @hospitalNumber @operationAmount @tousseAmount @@ -1618,7 +1635,8 @@ //手术台数(一条使用记录默认就是一台手术) useRecordConvertRecyclingApplicationRemark = useRecordConvertRecyclingApplicationRemark.replace("@operationAmount", "1"); //器械件数(仅计算能被转换到申请单的器械包总件数) - useRecordConvertRecyclingApplicationRemark = useRecordConvertRecyclingApplicationRemark.replace("@tousseAmount", String.valueOf(useRecord.getTousseInstanceWillBeConvertedTousseItemList(objectDao).size())); + useRecordConvertRecyclingApplicationRemark = useRecordConvertRecyclingApplicationRemark.replace("@tousseAmount", + String.valueOf(useRecord.countTousseAmount(objectDao, includeTousseTypeList, onlyCountNeedConvertGoods, onlyCountNeedRecyclingGoods))); }else{ useRecordConvertRecyclingApplicationRemark = ""; if(StringUtils.isNotBlank(useRecord.getWashHandNurse())){ @@ -1630,7 +1648,8 @@ if(StringUtils.isNotBlank(useRecord.getPatientName())){ useRecordConvertRecyclingApplicationRemark += "病人:" + useRecord.getPatientName() + ";"; } - useRecordConvertRecyclingApplicationRemark += "器械包数量:" + String.valueOf(useRecord.getTousseInstanceOnlyInsideTousseList(objectDao).size()); + useRecordConvertRecyclingApplicationRemark += "器械包数量:" + + String.valueOf(useRecord.countTousseAmount(objectDao, includeTousseTypeList, onlyCountNeedConvertGoods, onlyCountNeedRecyclingGoods)); } return useRecordConvertRecyclingApplicationRemark; } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/useRecord/UseRecord.java =================================================================== diff -u -r17675 -r17718 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/useRecord/UseRecord.java (.../UseRecord.java) (revision 17675) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/useRecord/UseRecord.java (.../UseRecord.java) (revision 17718) @@ -14,13 +14,15 @@ import javax.persistence.Table; import javax.persistence.Transient; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; import com.forgon.Constants; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.vo.UseMaterialGoodsItem; @@ -259,6 +261,51 @@ + " order by useRecordSortNumber"); return tousseInstanceList; } + + /** + * 统计该使用记录该转换为申请单后的备注的器械包数量计算 + * (只限类型为器械包,不限是否回收、是否转换申请单等条件) + * @param includeTousseTypeList 包含的器械包类型(用于备注中的统计器械包数量用) + * @param onlyCountNeedConvertGoods 是否仅统计需要转换的物品数量(用于备注中的统计器械包数量用) + * @param onlyCountNeedRecyclingGoods 是否仅统计需要回收的物品数量(用于备注中的统计器械包数量用) + * @return + */ + public int countTousseAmount(ObjectDao dao , List includeTousseTypeList , boolean onlyCountNeedConvertGoods , boolean onlyCountNeedRecyclingGoods) { + int tousseAmount = 0; + if(CollectionUtils.isNotEmpty(includeTousseTypeList)){ + List tousseInstanceList = getTousseInstanceList(dao); + if(CollectionUtils.isNotEmpty(tousseInstanceList)){ + if(tousseInstanceList.contains(DisposableGoods.TYPE_NAME)){ + tousseAmount += getDiposableGoodsItems().size(); + includeTousseTypeList.remove(DisposableGoods.TYPE_NAME); + } + + for(TousseInstance ti : tousseInstanceList){ + TousseDefinition td = ti.getTousseDefinition(); + if(includeTousseTypeList.contains(td.getTousseType())){ + if(onlyCountNeedConvertGoods && onlyCountNeedRecyclingGoods){ + if(StringUtils.equals(Constants.STR_YES, td.getIsConvertApplyGoods()) && StringUtils.equals(Constants.STR_YES, td.getIsRecycling())){ + tousseAmount += 1; + } + }else if(onlyCountNeedConvertGoods){ + if(StringUtils.equals(Constants.STR_YES, td.getIsConvertApplyGoods())){ + tousseAmount += 1; + } + }else if(onlyCountNeedRecyclingGoods){ + if(StringUtils.equals(Constants.STR_YES, td.getIsRecycling())){ + tousseAmount += 1; + } + }else{ + tousseAmount += 1; + } + } + } + } + }else{ + tousseAmount = getTousseInstanceOnlyInsideTousseList(dao).size(); + } + return tousseAmount; + } public String getRemark() { return remark; Index: ssts-web/src/main/webapp/disinfectsystem/config/zsyy/config.js =================================================================== diff -u -r17670 -r17718 --- ssts-web/src/main/webapp/disinfectsystem/config/zsyy/config.js (.../config.js) (revision 17670) +++ ssts-web/src/main/webapp/disinfectsystem/config/zsyy/config.js (.../config.js) (revision 17718) @@ -1,4 +1,4 @@ -var sstsConfig = { +var sstsConfig = { // 禁用标识牌功能 disableIdCard : false, // 审核器械包必须入篮筐(一级供应室) @@ -94,6 +94,10 @@ //器械交接的版本.1为有已扫和未扫两列的格式,2则没有此两列,只有回收数量一列.中山一院提出只有一列,3为预回收模式,只修改数量,没有扫描功能 //如果没有配置,则为1 tousseTransitionVersion:2, + //使用记录转换申请生成的备注内容的器械包数量计算是否仅统计要转换的物品(器械包),默认为false + useRecordToRecycAppTousseAmountOfRemarkOnlyCountNeedConvertGoods:true, + //使用记录转换申请生成的备注内容的器械包数量计算是否仅统计要回收的物品(器械包),默认为false + useRecordToRecycAppTousseAmountOfRemarkOnlyCountNeedRecyclingGoods:true, //使用记录合并转换申请单规则(根据手术间号),默认为不合并.可以为depart,operationRoom等 useRecordConvertRecyclingApplicationMergeRegular : 'operationRoom', //使用记录转申请单合并后的备注信息(如手术台数:** 器械数量:**)