Index: ssts-web/src/main/webapp/disinfectsystem/print/print.js =================================================================== diff -u -r19056 -r19166 --- ssts-web/src/main/webapp/disinfectsystem/print/print.js (.../print.js) (revision 19056) +++ ssts-web/src/main/webapp/disinfectsystem/print/print.js (.../print.js) (revision 19166) @@ -545,9 +545,11 @@ } // 自定义打印 if (!isUndefinedOrNullOrEmpty(myObj.customPrint)) { + logPrintTousse(printSummaryObj,printSummaryObj.barcode); myObj.customPrint(printSummaryObj); return; } + logPrintTousse(printSummaryObj,printSummaryObj.barcode); // 根据配置过滤掉材料列表里面的一次性物品(后台会返回所有材料和一次性物品) if(!isUndefinedOrNull(printSummaryObj.materials)){ if(isUndefinedOrNull(myObj.printDiposableGoods) || !myObj.printDiposableGoods){ @@ -1074,6 +1076,8 @@ printBarcodeStr = fixedBarcode; } if (printBarcodeStr != null && printBarcodeStr != '') { + + logPrintTousse(tousseObj,printBarcodeStr); LODOP.PRINT_INIT(""); LODOP.SET_PRINTER_INDEX(-1); var position = tousseName.indexOf("_"); @@ -1269,6 +1273,7 @@ return; } } + logPrintTousse(printSummaryObj,barcode); doGetLodop(); if(labelType == "大标签"){ @@ -3061,6 +3066,8 @@ function invokeTemplatePrintFunction(pageType,obj){ var funName = getTemplatePrintFunName(pageType); if(funName != null && !isUndefinedOrNull(window[funName])){ + + logPrintTousse(obj,obj.barcode); doGetLodop(); // alert(window[funName]) window[funName](obj); Index: forgon-core/src/main/java/com/forgon/log/model/Log.java =================================================================== diff -u -r18187 -r19166 --- forgon-core/src/main/java/com/forgon/log/model/Log.java (.../Log.java) (revision 18187) +++ forgon-core/src/main/java/com/forgon/log/model/Log.java (.../Log.java) (revision 19166) @@ -50,13 +50,16 @@ public static final String MODEL_DEVICE_INTERFACE = "设备接口模块"; public static final String MODEL_OPERATION_RESERVATION = "手术预约"; public static final String MODEL_SYNC = "接口同步"; + public static final String MODEL_PRINT = "打印"; public static final String TYPE_ADD = "A";//添加 public static final String TYPE_UPDATE = "U";//修改 public static final String TYPE_DELETE = "D";//删除 public static final String TYPE_QUERY = "Q";//查询 + public static final String TYPE_PRINT_TOUSSE = "器械包打印"; + public static final String CLIENT_TYPE_WIN_MOBILE = "clientForWindowsMobile"; public static final String CLIENT_TYPE_ANDROID = "clientForAndroid"; public static final String CLIENT_TYPE_PC = "clientForWebBrowser"; Index: ssts-web/src/main/webapp/disinfectsystem/packing/rePrintBarcodeWin.js =================================================================== diff -u -r18265 -r19166 --- ssts-web/src/main/webapp/disinfectsystem/packing/rePrintBarcodeWin.js (.../rePrintBarcodeWin.js) (revision 18265) +++ ssts-web/src/main/webapp/disinfectsystem/packing/rePrintBarcodeWin.js (.../rePrintBarcodeWin.js) (revision 19166) @@ -438,7 +438,8 @@ tousseObj.isPrint = records[i].data['isPrint']; tousseObj.isTraceable = records[i].data['isTraceable']; - + tousseObj.printCause = '历史装配记录重新打印'; + tousseObj.logPrintTousse = true; // 外部代理灭菌单上的器械包的打印 if('外部代理灭菌' == tousseObj.tousseType){ var hospitalName = ""; Index: ssts-web/src/main/webapp/disinfectsystem/common/cssdUtils.js =================================================================== diff -u -r18261 -r19166 --- ssts-web/src/main/webapp/disinfectsystem/common/cssdUtils.js (.../cssdUtils.js) (revision 18261) +++ ssts-web/src/main/webapp/disinfectsystem/common/cssdUtils.js (.../cssdUtils.js) (revision 19166) @@ -118,6 +118,28 @@ DWREngine.setAsync(true); tousseObj.sterilisationAbbreviation = sterilisationAbbreviation; } +// 记录打印日志 +function logPrintTousse(tousseObj,barcode){ + if(isUndefinedOrNull(tousseObj)){ + return; + } + if(isUndefinedOrNullOrEmpty(barcode)){ + return; + } + if(!tousseObj.logPrintTousse){// 防止重复调用 + return; + } + if(isUndefinedOrNullOrEmpty(tousseObj.printCause)){ + return; + } + var str = JSON.stringify(tousseObj); + DWREngine.setAsync(false); + PackingTableManager.logPrintTousse(str,barcode,function(){ + tousseObj.logPrintTousse = false; + }); + DWREngine.setAsync(true); + +} function printLabel(tousseObj){ var barcodes = tousseObj.barcodes; Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/PackingTableManager.java =================================================================== diff -u -r18575 -r19166 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/PackingTableManager.java (.../PackingTableManager.java) (revision 18575) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/PackingTableManager.java (.../PackingTableManager.java) (revision 19166) @@ -45,6 +45,8 @@ import com.forgon.disinfectsystem.packing.vo.PackingTaskValidationVo; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; +import com.forgon.log.model.Log; +import com.forgon.log.service.LogManager; import com.forgon.security.model.User; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; @@ -87,6 +89,8 @@ private SterilisationManager sterilisationManager; + private LogManager appLogManager; + public void setObjectDao(ObjectDao objectDao) { this.objectDao = objectDao; } @@ -143,6 +147,10 @@ this.expirationDateInfoManager = expirationDateInfoManager; } + public void setAppLogManager(LogManager appLogManager) { + this.appLogManager = appLogManager; + } + public List getAllTaskGroup() { String departCode = AcegiHelper.getLoginUser() .getOrgUnitCodingFromSupplyRoomConfig(); @@ -467,6 +475,20 @@ } return sterilisationAbbreviation; } + + /** + * 记录打印日志 + * @param 器械包信息 + * @param barcode + */ + public void logPrintTousse(String tousse,String barcode) { + JSONObject tousseObj = JSONObject.fromObject(tousse); + JSONObject logObj = new JSONObject(); + logObj.put("barcode", barcode); + logObj.put("tousseName", JSONUtil.optString(tousseObj, "tousseNameWithoutDepart", null)); + logObj.put("cause", JSONUtil.optString(tousseObj, "printCause", null)); + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_PRINT, Log.TYPE_PRINT_TOUSSE, logObj); + } public synchronized String packingTousse2(String params,HttpSession session) { JsonObject json = new JsonObject(); Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r19161 -r19166 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 19161) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 19166) @@ -3659,6 +3659,7 @@ td.getPrintOrgSource(),0L,objectDao,td.getBarcodePaperType(),tousse.optString("washOperator"),tousse.optString("washOperatorCode"), tousse.optString("weight"),tousse.optString("remark"),tousse.optInt("printAmount"),false,tousse.optString("isUrgentTousse")); + setPrintCause(currentPackingTask,obj); toussesArray.add(obj); } @@ -3715,6 +3716,7 @@ toolAndImplantAmount.optInt("implantAmount"),TousseInstanceUtils.getTousseInstanceDepartForPrint(tousse), td.getPrintOrgSource(),idCardDefinitionUseAmount,objectDao,td.getBarcodePaperType(),tousse.getWashOperator(),tousse.getWashOperatorCode(), tousse.getWeight(),tousse.getRemark(),td.getPrintAmount(),BooleanUtils.toBooleanDefaultIfNull(tousse.getHaveUnSupplementMaterials(), false),tousse.getIsUrgentTousse()); + setPrintCause(currentPackingTask,obj); toussesArray.add(obj); } @@ -3786,6 +3788,18 @@ return json.toString(); } + private void setPrintCause(PackingTask packingTask,JSONObject obj){ + if(PackingTask.TASK_RETURNGOODS.equals(packingTask.getTaskType())){ + obj.put("logPrintTousse", true); + obj.put("printCause", "退货重装"); + }else if(PackingTask.TASK_QUALITY_MONITOR.equals(packingTask.getTaskType())){ + obj.put("logPrintTousse", true); + obj.put("printCause", "质量监测重新装配"); + }else{ + obj.put("logPrintTousse", true); + obj.put("printCause", "装配打印"); + } + } /** * 根据器械包定义组装出其json串 * @param tousseDefinition