Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java =================================================================== diff -u -r31359 -r31499 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java (.../ImportBasedataManagerImpl.java) (revision 31359) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java (.../ImportBasedataManagerImpl.java) (revision 31499) @@ -99,6 +99,7 @@ import com.forgon.tools.excel.ParerUtils; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.ConfigUtils; import com.forgon.treenode.model.THTreeNode; import com.forgon.treenode.service.THTreeNodeManager; @@ -285,6 +286,8 @@ List packageTypes = null; // 灭菌程序 List sterilingMethods = null; + boolean enableToussePointsStatistics = + ConfigUtils.getSystemSetConfigByNameBool("enableToussePointsStatistics"); for (InputStream is : inputStreams) { try { POIFSFileSystem fs = new POIFSFileSystem(is); @@ -307,7 +310,7 @@ packageTypes,totalCount.intValue())); // 导入"器械包管理"基础数据 totalCount.set(importTousseBasedata(wb.getSheet("器械包管理"), msg, - totalCount.intValue(), packageTypes, sterilingMethods)); + totalCount.intValue(), packageTypes, sterilingMethods, enableToussePointsStatistics)); //导入“手术名称"基础数据 totalCount.set(importOperationNameBaseData( wb.getSheet("手术名称管理"),msg,totalCount.intValue())); @@ -3296,7 +3299,7 @@ */ private int importTousseBasedata(HSSFSheet tousseSheet, Map msg, int totalCount, - List packageTypes, List sterilingMethods) { + List packageTypes, List sterilingMethods, boolean enableToussePointsStatistics) { int successCount = 0, failureCount = 0; StringBuffer sb = new StringBuffer(); try { @@ -3373,6 +3376,7 @@ int limitInvoiceDepartIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "是否限制发货科室"); int noteIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "配包注意事项"); int isConvertApplyGoodsIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "是否转换申请物品"); + int integralIndex = enableToussePointsStatistics ? ExcelUtils.getColumnIndex(nameToIndexMap, "积分系数") : 0; for (int i = 1; i <= lastRowNum; i++) { HSSFRow row = tousseSheet.getRow(i); int currentRowNum = i + 1; @@ -3824,6 +3828,15 @@ isReview = TousseDefinition.STR_YES; } tousseDefinition.setIsReview(isReview); + + //积分系数 + if(enableToussePointsStatistics){ + String integralStr = ParerUtils.getCellFormatValue(row, integralIndex); + if(StringUtils.isNotBlank(integralStr)){ + tousseDefinition.setIntegral(Double.parseDouble(integralStr)); + } + } + } else { if (tousseDefinition == null) { continue; @@ -4541,7 +4554,9 @@ Map msg = new HashMap(); List packageTypes = initPackageTypes(); List sterilingMethods = initSterilingMethods(); - importTousseBasedata(tousseSheet, msg, 0, packageTypes,sterilingMethods); + boolean enableToussePointsStatistics = + ConfigUtils.getSystemSetConfigByNameBool("enableToussePointsStatistics"); + importTousseBasedata(tousseSheet, msg, 0, packageTypes,sterilingMethods,enableToussePointsStatistics); // 格式:成功插入数量#插入失败数量#失败行1,失败行2... // msg.put("器械包管理", successCount + "#" + failureCount + "#" // + sb.toString()); Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r31476 -r31499 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 31476) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 31499) @@ -6771,6 +6771,13 @@ tousseDefinition.calculateMaterialAmount(); tousseDefinition.calculateDisposableGoodsAmount(); tousseDefinition.calculateMaterialSplitAmount(); + // 启用按照回收材料数量计算消毒物品积分XKYY-219 + boolean enableDisinfectionGoodsPointsNumberOfRecyclingMaterials = + ConfigUtils.getSystemSetConfigByNameBool("enableDisinfectionGoodsPointsNumberOfRecyclingMaterials"); + if(enableDisinfectionGoodsPointsNumberOfRecyclingMaterials){ + double integral = tousseDefinition.calculatePointsByMaterials(); + tousseDefinition.setIntegral(integral); + } tousseDefinitionManager.saveOrUpdate(tousseDefinition); } } Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/action/ImportBasedataController.java =================================================================== diff -u -r13416 -r31499 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/action/ImportBasedataController.java (.../ImportBasedataController.java) (revision 13416) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/action/ImportBasedataController.java (.../ImportBasedataController.java) (revision 31499) @@ -16,6 +16,7 @@ import com.forgon.attachfile.service.AttachFileManager; import com.forgon.disinfectsystem.maintain.importbasedata.service.ImportBaseDataFromZipManager; import com.forgon.disinfectsystem.maintain.importbasedata.service.ImportBasedataManager; +import com.forgon.tools.util.ConfigUtils; /** * @@ -137,6 +138,12 @@ "/disinfectsystem/basedatamanager/importbasedata/importBasedata.mhtml"); request.setAttribute("formatFile", "/disinfectsystem/basedatamanager/importbasedata/basedataDemo.xls"); + boolean enableToussePointsStatistics = + ConfigUtils.getSystemSetConfigByNameBool("enableToussePointsStatistics"); + if(enableToussePointsStatistics){ + request.setAttribute("formatFile", + "/disinfectsystem/basedatamanager/importbasedata/basedataDemoToussePoint.xls"); + } return "/disinfectsystem/basedatamanager/importbasedata/importBasedata"; } } Index: ssts-web/src/main/webapp/dataUpdater/sqls/4.9.77_4.9.78.sql =================================================================== diff -u --- ssts-web/src/main/webapp/dataUpdater/sqls/4.9.77_4.9.78.sql (revision 0) +++ ssts-web/src/main/webapp/dataUpdater/sqls/4.9.77_4.9.78.sql (revision 31499) @@ -0,0 +1 @@ +update TousseDefinition set integral = (case when (select sum(count) from MaterialInstance where tousse_id = TousseDefinition.id) is null then 0 else (select sum(count) from MaterialInstance where tousse_id = TousseDefinition.id) end + case when (select sum(amount) from DiposableGoodsInstance where tousseDefinition_id = TousseDefinition.id) is null then 0 else (select sum(amount) from DiposableGoodsInstance where tousseDefinition_id = TousseDefinition.id) end ) where integral is null; \ No newline at end of file Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ExportBasedataManagerImpl.java =================================================================== diff -u -r28583 -r31499 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ExportBasedataManagerImpl.java (.../ExportBasedataManagerImpl.java) (revision 28583) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ExportBasedataManagerImpl.java (.../ExportBasedataManagerImpl.java) (revision 31499) @@ -50,6 +50,7 @@ import com.forgon.tools.excel.ExcelCellStyle; import com.forgon.tools.excel.ExcelHelper; import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.util.ConfigUtils; import com.forgon.tools.util.SqlUtils; import edu.emory.mathcs.backport.java.util.Arrays; @@ -123,8 +124,13 @@ } private void complexObjectExport(HSSFWorkbook wb) { + + // 启用器械包积分统计功能 + boolean enableToussePointsStatistics = + ConfigUtils.getSystemSetConfigByNameBool("enableToussePointsStatistics"); + // 器械包excel导出 - tousseDefinitionExport(wb); + tousseDefinitionExport(wb, enableToussePointsStatistics); // 手术名称导出 operationNameExport(wb); @@ -505,7 +511,7 @@ // 器械包导出 只包含toussetype为器械包、敷料包、消毒物品、外部代理灭菌的器械包 @SuppressWarnings("unchecked") - private void tousseDefinitionExport(HSSFWorkbook wb) { + private void tousseDefinitionExport(HSSFWorkbook wb, boolean enableToussePointsStatistics) { HSSFSheet sheet = wb.getSheet("器械包管理"); HSSFSheet sheetDisable = wb.getSheet("停用器械包导出"); if (sheet != null && sheetDisable != null) { @@ -522,7 +528,7 @@ int ableTousseDefinitionRowNum = 1; int disableTousseDefinitionRowNum = 1; if (tousseDefinitions != null && tousseDefinitions.size() > 0) { - int len = 33; + int len = enableToussePointsStatistics ? 34 : 33; HSSFCellStyle[] contentCellStyleArray = getContentCellStyle(len); HSSFRow row = null; for (TousseDefinition tousseDefinition : tousseDefinitions) { @@ -663,6 +669,13 @@ inertStringValueToCell(row, tempCellNum, contentCellStyleArray[tempCellNum++], tousseDefinition.getIsConvertApplyGoods()); + + //器械包积分 + if(enableToussePointsStatistics){ + inertDoubleValueToCell(row, tempCellNum, + contentCellStyleArray[tempCellNum++], + tousseDefinition.getIntegral()); + } boolean isInsertMaterial = false; // 器械 @@ -1020,6 +1033,14 @@ private FileInputStream getExcelFileInputStream() throws FileNotFoundException { + boolean enableToussePointsStatistics = + ConfigUtils.getSystemSetConfigByNameBool("enableToussePointsStatistics"); + if(enableToussePointsStatistics){ + String fileName = Path.getWebAppRoot() + + "/disinfectsystem/basedatamanager/importbasedata/basedataDemoToussePoint.xls"; + FileInputStream fin = new FileInputStream(fileName); + return fin; + } String fileName = Path.getWebAppRoot() + "/disinfectsystem/basedatamanager/importbasedata/basedataDemo.xls"; FileInputStream fin = new FileInputStream(fileName); Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/importbasedata/basedataDemoToussePoint.xls =================================================================== diff -u Binary files differ Index: forgon-tools/src/main/java/com/forgon/Constants.java =================================================================== diff -u -r31456 -r31499 --- forgon-tools/src/main/java/com/forgon/Constants.java (.../Constants.java) (revision 31456) +++ forgon-tools/src/main/java/com/forgon/Constants.java (.../Constants.java) (revision 31499) @@ -26,7 +26,7 @@ "4.9.7","4.9.8","4.9.9","4.9.10","4.9.11","4.9.12","4.9.13","4.9.14","4.9.15","4.9.16","4.9.17","4.9.18","4.9.19","4.9.20","4.9.21","4.9.22","4.9.23","4.9.24", "4.9.25","4.9.26","4.9.27","4.9.28","4.9.29","4.9.30","4.9.31","4.9.32","4.9.33","4.9.34","4.9.35","4.9.36","4.9.37","4.9.38","4.9.39","4.9.40","4.9.41","4.9.42","4.9.43","4.9.44", "4.9.45","4.9.46","4.9.47","4.9.48","4.9.49","4.9.50","4.9.51","4.9.52","4.9.53","4.9.54","4.9.55","4.9.56","4.9.57","4.9.58","4.9.59","4.9.60","4.9.61","4.9.62", - "4.9.63","4.9.64","4.9.65","4.9.66","4.9.67","4.9.68","4.9.69","4.9.70","4.9.71","4.9.72","4.9.73","4.9.74","4.9.75","4.9.76","4.9.77"}; + "4.9.63","4.9.64","4.9.65","4.9.66","4.9.67","4.9.68","4.9.69","4.9.70","4.9.71","4.9.72","4.9.73","4.9.74","4.9.75","4.9.76","4.9.77","4.9.78"}; // 版本列表(4.0版本升级4.1版需要分两步:先从4.0升到4.1.0、然后从4.1.0升级4.1最新版本) /*public final static String[] SOFTWARE_VERSION_ARRAY = new String[] { Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinition.java =================================================================== diff -u -r31086 -r31499 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinition.java (.../TousseDefinition.java) (revision 31086) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinition.java (.../TousseDefinition.java) (revision 31499) @@ -61,6 +61,7 @@ import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.JSONUtil; import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.ConfigUtils; import com.forgon.tools.util.ForgonStringUtils; /** @@ -2320,4 +2321,25 @@ } this.disposableGoodsAmount = disposableGoodsAmount; } + + /** + * 根据材料和耗材计算积分系数(外来器械包的积分根据材料数量计算,其它类型的包定义以页面的“积分系数”为准)XKYY-219 + * @return + */ + public double calculatePointsByMaterials() { + double integral = 0.0; + List diposableGoodsItems = this.getDiposableGoodsItems(); + if(CollectionUtils.isNotEmpty(diposableGoodsItems)){ + for (DiposableGoodsInstance diposableGoodsInstance : diposableGoodsItems) { + integral += diposableGoodsInstance.getAmount(); + } + } + List materialInstances = this.getMaterialInstances(); + if(CollectionUtils.isNotEmpty(materialInstances)){ + for (MaterialInstance materialInstance : materialInstances) { + integral += materialInstance.getCount(); + } + } + return integral; + } } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java =================================================================== diff -u -r31374 -r31499 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 31374) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 31499) @@ -914,6 +914,13 @@ if(!tousseDefinition.isForeignOrSplitTousse()){ tousseDefinition.setPrintOrgSource(ancestorTD.getPrintOrgSource()); } + //启用按照申请材料数量计算外来器械包积分XKYY-219 + boolean enableForeignToussePointsNumberOfApplicationMaterials = + ConfigUtils.getSystemSetConfigByNameBool("enableForeignToussePointsNumberOfApplicationMaterials"); + if(enableForeignToussePointsNumberOfApplicationMaterials){ + double point = tousseDefinition.calculatePointsByMaterials(); + tousseDefinition.setIntegral(point); + } tousseDefinitionManager.saveOrUpdate(tousseDefinition); //如果图片id不为空,则将图片数据的对象设置为新包定义的id Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r31374 -r31499 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 31374) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 31499) @@ -5014,6 +5014,13 @@ newTousseDefinition.setRecyclingApplicationID(td.getRecyclingApplicationID()); newTousseDefinition.setNote(td.getNote()); newTousseDefinition.setRiskLevel(td.getRiskLevel()); + // 按照回收材料数量计算外来器械拆分小包积分XKYY-219 + boolean enableForeignToussePointsNumberOfApplicationMaterials = + ConfigUtils.getSystemSetConfigByNameBool("enableForeignToussePointsNumberOfApplicationMaterials"); + if(enableForeignToussePointsNumberOfApplicationMaterials){ + double point = newTousseDefinition.calculatePointsByMaterials(); + newTousseDefinition.setIntegral(point); + } tousseDefinitionManager.saveOrUpdate(newTousseDefinition); newTousseDefinition.setAncestorID(newTousseDefinition.getId()); return newTousseDefinition; Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r31497 -r31499 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 31497) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 31499) @@ -112,6 +112,7 @@ import com.forgon.tools.hibernate.BasePoManagerImpl; import com.forgon.tools.json.JSONUtil; import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.ConfigUtils; import com.forgon.tools.util.ForgonNumberUtils; import com.forgon.tools.util.IntegerUtils; import com.forgon.tools.util.SqlUtils; @@ -3310,6 +3311,13 @@ public TousseDefinition newDisinfectGoodsDefinition(TousseDefinition ancestorTD,JSONArray materialItemsJson, Long invoicePlanId) { TousseDefinition td = newDisinfectGoodsDefinitionCommon(ancestorTD, materialItemsJson, invoicePlanId); setTousseDefinitionProperty(ancestorTD, materialItemsJson, td); + boolean enableDisinfectionGoodsPointsNumberOfRecyclingMaterials = + ConfigUtils.getSystemSetConfigByNameBool("enableDisinfectionGoodsPointsNumberOfRecyclingMaterials"); + if(enableDisinfectionGoodsPointsNumberOfRecyclingMaterials){ + double integral = td.calculatePointsByMaterials(); + td.setIntegral(integral); + objectDao.saveOrUpdate(td); + } return td; } @@ -3942,6 +3950,11 @@ // Log.MODEL_TOUSSEDEFINITION, Log.TYPE_UPDATE, String.format("联动修改相关联的业务的器械包名称,id:%s,修改前名称:%s,修改后名称:%s", // tousseDefinition.getId(),tousseDefinition.getOrginalName(),tousseDefinition.getName())); } + // 修改器械包定义的“优先处理科室”后,联动修改标识牌的篮筐的所属科室departCode(NYSY-26) + if(!TousseDefinition.PACKAGE_TYPE_COMBO.equals(tousseDefinition.getTousseType()) && + !StringTools.equals(origineTd.getHandlerDepartCode(), tousseDefinition.getHandlerDepartCode())){ + updateIDCardDefinitionContainerDepart(origineTd, tousseDefinition); + } } @@ -3964,12 +3977,6 @@ tousseDefinition.setHandlerDepartCode(null); } - // 修改器械包定义的“优先处理科室”后,联动修改标识牌的篮筐的所属科室departCode(NYSY-26) - if(!TousseDefinition.PACKAGE_TYPE_COMBO.equals(tousseType) && - !StringTools.equals(origineTd.getHandlerDepartCode(), tousseDefinition.getHandlerDepartCode())){ - updateIDCardDefinitionContainerDepart(origineTd, tousseDefinition); - } - judgeCanUpdate(tousseDefinition); if (tousseDefinition != null) { Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/importbasedata/basedataDemo.xls =================================================================== diff -u -r27865 -r31499 Binary files differ