Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r26368 -r26389 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 26368) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 26389) @@ -1356,14 +1356,36 @@ .equals(re.getType()); boolean isBorrowingApplicationForm = InvoicePlan.TYPE_BORROWINGSINGLE .equals(re.getType()); + // 是否为外部代理灭菌申请单 + boolean isForeignProxyApplicationForm = InvoicePlan.TYPE_FOREIGNPROXYDISINFECTION + .equals(re.getType()); // “科室申请”页面"鼠标悬浮DIV"发货数量,是否减去退货数量 boolean subtractReturnedGoodsAmounts = CssdUtils.getSystemSetConfigByNameBool("applicationView_sendOutAmounts_subtractReturnedGoodsAmounts"); - List applicationItems = re.getApplicationItems(); + + List applicationItems = re.getApplicationItems(); + if (CollectionUtils.isEmpty(applicationItems) && isForeignProxyApplicationForm) { + // 刚提交的外部代理灭菌申请单(未装配),需要从ForeignProxyItem中查找申请物品列表 + applicationItems = objectDao.findBySql(ForeignProxyItem.class.getSimpleName(), String.format("where po.invoicePlanID=%s ", re.getId())); + } DeliverManager deliverManager = DeliverManagerFactory.createDeliverManager(re); if (CollectionUtils.isNotEmpty(applicationItems)) { - for (TousseItem item : applicationItems) { + for (Object obj : applicationItems) { + TousseItem item = new TousseItem(); + if (obj instanceof ForeignProxyItem) { + ForeignProxyItem foreignProxyItem = (ForeignProxyItem) obj; + item.setBasketName(foreignProxyItem.getBasketName()); + item.setAmount(foreignProxyItem.getCount()); + item.setInvoicePlanID(foreignProxyItem.getInvoicePlanID()); + item.setIsTerminated(foreignProxyItem.getIsTerminated()); + item.setTousseDefinitionId(foreignProxyItem.getTousseDefinitionId()); + item.setTousseName(foreignProxyItem.getTousseName()); + item.setTousseType(foreignProxyItem.getTousseType()); + } else { + item = (TousseItem) obj; + } + ApplicationItemVO vo = new ApplicationItemVO(); Integer sendAmount = item.getSendOutAmount(); // “已发货数量”-“已退货数量” Index: ssts-web/src/main/webapp/disinfectsystem/config/fjzrxyy/print/printConfig.js =================================================================== diff -u -r26039 -r26389 --- ssts-web/src/main/webapp/disinfectsystem/config/fjzrxyy/print/printConfig.js (.../printConfig.js) (revision 26039) +++ ssts-web/src/main/webapp/disinfectsystem/config/fjzrxyy/print/printConfig.js (.../printConfig.js) (revision 26389) @@ -1,4 +1,4 @@ -var appropriationInListConfig = { +var appropriationInListConfig = { headerFooter : [ // 页眉名称 {label : "福建柘荣县医院调拨入库单", dataIndex : '', fontSize : 15, position : ["0.3cm","37%","99%",5]}, @@ -1111,6 +1111,54 @@ LODOP.ADD_PRINT_HTM(0,0,"95%","100%",""+tableHtml+""); } + +//打印外部代理灭菌单 +var foreignProxyDisinfectionApplicationPrintConfig = { + headerFooter : [ + // 页眉名称 + {label : "福建柘荣县医院", dataIndex : '', fontSize : 10, position : ["5","1%","90%",5]}, + // 标题 + {label : "外部代理灭菌单", dataIndex : '', fontSize : 15, position : ["20","40%","99%",5]}, + {label : "申请科室:", dataIndex : 'depart', fontSize : 11, position : ["55","2%","90%",5]}, + {label : "录入部门:", dataIndex : 'currentOrgUnitName', fontSize : 11, position : ["55","35%","90%",5]}, + {label : "流水号:", dataIndex : 'serialNumber', fontSize : 11, position : ["55","70%","90%",5]}, + {label : "申请时间:", dataIndex : 'applicationTime', fontSize : 11, position : ["80","70%","90%",5]}, + {label : "送来时间:", dataIndex : 'arrivedTime', fontSize : 11, position : ["80","2%","90%",5]}, + {label : "预约时间:", dataIndex : 'scheduleTime', fontSize : 11, position : ["80","35%","90%",5]}, + + {label : "制表者:", dataIndex : 'printUser', fontSize : 11, position : ["415","5%","90%",5]}, + {label : "发物者:", dataIndex : '', fontSize : 11, position : ["415","40%","90%",5]}, + {label : "领物者:", dataIndex : '', fontSize : 11, position : ["415","75%","90%",5]}, + {label : "送物者:", dataIndex : '', fontSize : 11, position : ["445","5%","90%",5]}, + {label : "接收员工:", dataIndex : '', fontSize : 11, position : ["445","40%","90%",5]}, + {label : "打印时间:", dataIndex : 'printTime', fontSize : 11, position : ["445","70%","90%",5]}, + {barcodes : [ + {codeType : "128Auto", dataIndex : 'departBarcode', position : ["3mm","74%","40mm","8mm"], + styles : [{itemNameID: 0, styleName: 'ShowBarText', styleValue: true}, + {itemNameID: 0, styleName: 'FontSize', styleValue: 6}, + {itemNameID: 0, styleName: 'NotOnlyHighPrecision', styleValue: true} + ] + } + ]} + ], + currentPageNumber : {label : "第#页", fontSize : 11, position : ["475","75%","90%",5]}, + totalPageAmount : {label : "共&页", fontSize : 11, position : ["475","81%","90%",5]}, + goodsTable :{ + rowHeight : 25, + position : ["100","1%","97%","7cm"], + headRepeat : true, + columns : [ + {header : "序号", dataIndex : 'serialNumber', width : 60, align : 'center', fontSize : 11}, + {header : "名称", dataIndex : 'name', width : 220, align : 'left', fontSize : 11}, + {header : "数量", dataIndex : 'amount', width : 40, align : 'right', fontSize : 11}, + {header : "单位", dataIndex : 'unit', width : 40, align : 'center', fontSize : 11}, + {header : "灭菌日期", dataIndex : 'sterilizationdate', width : 105, align : 'center', fontSize : 11}, + {header : "失效日期", dataIndex : 'expireDate', width : 85, align : 'center', fontSize : 11}, + {header : "单价", dataIndex : 'price', width : 60, align : 'right', fontSize : 11}, + {header : "金额", dataIndex : 'rowPrice', width : 75, align : 'right', fontSize : 11} + ] + } +}; var printConfig = { //发货计划单 invoicePlan : invoicePlanPrintConfig, @@ -1167,6 +1215,8 @@ appropriationInList : appropriationInListConfig, //调拨出库单 appropriationOutList : appropriationOutListConfig, + //外部代理灭菌申请单 + foreignProxyDisinfectionApplication: foreignProxyDisinfectionApplicationPrintConfig,// 外部代理灭菌单 //打印器械包明细单 tousseDefinitionMaterials:tousseDefinitionMaterialsConfig_qifuyy }; \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.js =================================================================== diff -u -r26370 -r26389 --- ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.js (.../goodsApplicationView.js) (revision 26370) +++ ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsApplicationView.js (.../goodsApplicationView.js) (revision 26389) @@ -2433,17 +2433,54 @@ top.Ext.MessageBox.confirm("请确认", "要打印所选申请单的全部物品吗?", function (btn) { if (btn == 'yes') { - //通过json stringify和parse克隆js对象 - var config = JSON.parse(JSON.stringify(printConfig.invoicePlan)); - config.isPrintTousse = true; - config.isPrintDisinfectGoods = true; - config.isPrintDressing = true; - config.isPrintDisposableGoods = true; - config.printApplyInfo = false; - - var printParams = getPrintJsonParams("print", ids, config); - formTypeOfPrinted = "invoicePlan"; - printApplyGoods(printParams, 0, SSTS_PrintApplicationGoods, null); + var records = grid.getSelectionModel().getSelections(); + var invoicePlanIds = null; + var foreignProxyIdsMap = {}; + var foreignTousseMap = {}; + // 申请单ID根据类型分组 + for (var i = 0; i < records.length; i++) { + if (records[i].json['type'] == '外部器械包代理灭菌申请单') { + var depart = records[i].data['depart']; + if (foreignProxyIdsMap[depart] == null) { + foreignProxyIdsMap[depart] = records[i].data['id']; + } else { + foreignProxyIdsMap[depart] = foreignProxyIdsMap[depart] + ',' + records[i].data['id']; + } + } else if (records[i].json['type'] == '外来器械包申请单') { + foreignTousseMap[i] = records[i]; + } else { + if (invoicePlanIds == null) { + invoicePlanIds = records[i].data['id']; + } else { + invoicePlanIds = invoicePlanIds + ';' + records[i].data['id']; + } + } + } + + for (var prop in foreignTousseMap) { + formTypeOfPrinted = "foreignTousseAppliation"; + printForeignTousseApplication(foreignTousseMap[prop], 0); + } + + for (var prop in foreignProxyIdsMap) { + formTypeOfPrinted = "foreignProxyDisinfectionApplication"; + batchPrintForeignProxyDisinfectionApplications(foreignProxyIdsMap[prop], prop, 0); + } + + if (invoicePlanIds != null) { + //通过json stringify和parse克隆js对象 + var config = JSON.parse(JSON.stringify(printConfig.invoicePlan)); + config.isPrintTousse = true; + config.isPrintDisinfectGoods = true; + config.isPrintDressing = true; + config.isPrintDisposableGoods = true; + config.printApplyInfo = false; + + var printParams = getPrintJsonParams("print", invoicePlanIds, config); + formTypeOfPrinted = "invoicePlan"; + printApplyGoods(printParams, 0, SSTS_PrintApplicationGoods, null); + } + } }); } @@ -3036,6 +3073,114 @@ } } +function printForeignTousseApplication(record, printType){ + DWREngine.setAsync(false); + SupplyRoomConfigTableManager.getStartTimeObject(function(config){ + if(config != null){ + title = config.unitName; + } + }); + var applicationId = record.json['id']; + var applicant = record.json['applicant']; + var applicationTime = record.json['applicationTime']; + var depart = record.json['depart']; + var remark = record.json['remark']; + var roomNumber = record.json['roomNumber']; + var bedNumber = record.json['bedNumber']; + var patient = record.json['patient']; + var patientAge = record.json['patientAge']; + var patientSex = record.json['patientSex']; + var hospitalNumber = record.json['hospitalNumber']; + var clinicNumber = record.json['clinicNumber']; + var patientArea = record.json['patientArea']; + var doctor = record.json['doctor']; + var surgery = record.json['surgery']; + var recyclingTime = record.json['recyclingTime']; + var operationTimeStr = record.json['operationTimeString']; + var operationTime; + if(operationTimeStr==null || operationTimeStr==''){ + operationTime=''; + }else{ + operationTime = new Date(operationTimeStr).Format("yyyy-MM-dd hh:mm"); + } + + var supplierContactName = record.json['supplierContactName']; + var supplierPhoneNumber = record.json['supplierPhoneNumber']; + + var supplierName = record.json['supplierName']; + /* var goodsDetail = getPrintGoodsInfo(); + if(goodsDetail == null || goodsDetail.length <= 0){ + showResult("请填写申请的物品!"); + return; + } + var tousses = buildTousses();*/ + + formTypeOfPrinted = "foreignTousseAppliation"; + + var config = printConfig.foreignTousseAppliation; + var printParams = getPrintJsonParams("print", applicationId , config); + printParams.printScope.rowsPerPage = printConfig.foreignTousseAppliation.rowsPerPage; + RecyclingApplicationTableManager.findPrintRecyclingGoods(JSON.stringify(printParams) , function(result){ + var obj = JSON.parse(result); + if (obj.success){ + var summary = obj.data[0]; + summary.pageIndex = 0; + summary.title = title; + summary.applicant = applicant; + summary.applicationTime = applicationTime; + summary.depart = depart; + summary.remark = remark; + summary.roomNumber = roomNumber; + summary.bedNumber = bedNumber; + summary.patient = patient; + summary.patientAge = patientAge; + summary.patientSex = patientSex; + summary.hospitalNumber = hospitalNumber; + summary.clinicNumber = clinicNumber; + summary.patientArea = patientArea; + summary.surgery = surgery; + summary.operationTime = operationTime; + summary.doctor = doctor; + summary.supplierName = supplierName; + //供应商联系人 + summary.supplierContactName = supplierContactName; + //供应商联系电话 + summary.supplierPhoneNumber = supplierPhoneNumber; + //summary.goodsDetail = goodsDetail; + //summary.tousses = tousses; + //第一次回收时间 + summary.recyclingTime = recyclingTime; + summary.printType = printType; + var myObj = printConfig[formTypeOfPrinted]; + if(isUndefinedOrNullOrEmpty(myObj)){ + var msg = '未找到('+formTypeOfPrinted+')的打印配置'; + alert(msg); + return; + } + // 自定义打印 + if (!isUndefinedOrNullOrEmpty(myObj.customPrint)) { + myObj.customPrint(summary); + return; + } + doPrintForeignTousseApplication(printType, summary); + + var isSupplyRoomUser = validateIsSupplyRoomUser(); + + if (isSupplyRoomUser && printType == 0){ + RecyclingApplicationTableManager.updatePrintStatus(applicationId,function(result){ + //更新完打印状态之后,及时刷新页面 + grid.dwrReload(); + }); + } + }else{ + showResult(obj.message); + } + DWREngine.setAsync(true); + }); +} + + + Ext.onReady(function() { Ext.QuickTips.init(); Ext.apply(Ext.QuickTips.getQuickTip(), {