Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r16274 -r16285 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 16274) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 16285) @@ -652,6 +652,20 @@ } return array.toString(); } + + public String loadTousseByIds(String ids) { + JSONArray array = new JSONArray(); + String sql = String.format(" where po.id in(%s)",ids); + List tousseList = tousseInstanceManager.getTousseInstanceBySql(sql); + if(tousseList != null){ + for (TousseInstance tousseInstance : tousseList) { + JSONObject obj = new JSONObject(); + setToussePrintProperties("", tousseInstance, obj); + array.add(obj); + } + } + return array.toString(); + } /** * @param packingRecord Index: ssts-web/src/main/webapp/disinfectsystem/config/dgszyy/config.js =================================================================== diff -u -r16262 -r16285 --- ssts-web/src/main/webapp/disinfectsystem/config/dgszyy/config.js (.../config.js) (revision 16262) +++ ssts-web/src/main/webapp/disinfectsystem/config/dgszyy/config.js (.../config.js) (revision 16285) @@ -101,5 +101,7 @@ //此选项目前只针对printInvoiceVersion配置为2的有效 batchPrintInvoiceMergeType:'申请单', //发货计划列表,物品类型过滤的数据源 - invoicePlanListTousseTypeArray:[{name:'全部物品类型',value:''},{name:'消毒物品',value:'消毒物品'}] + invoicePlanListTousseTypeArray:[{name:'全部物品类型',value:''},{name:'消毒物品',value:'消毒物品'}], + // 装配物品按钮是否显示 + showPackingGoodsBtn: true } \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/packing/rePrintBarcodeWin.js =================================================================== diff -u -r16086 -r16285 --- ssts-web/src/main/webapp/disinfectsystem/packing/rePrintBarcodeWin.js (.../rePrintBarcodeWin.js) (revision 16086) +++ ssts-web/src/main/webapp/disinfectsystem/packing/rePrintBarcodeWin.js (.../rePrintBarcodeWin.js) (revision 16285) @@ -1,12 +1,18 @@ var viewType = 'historyPacking'; var depart = ''; var tousseStore = null; +var rePrintWin = null; /******** 重打标签窗口start ********/ function rePrintBarcodeWinForPacking(packingRecordId,SSTS_HistoryPacking_Update,SSTS_HistoryPacking_Change_Patient) { var loadTousseURL = WWWROOT + '/disinfectSystem/packingAction!loadPackedTousses.do?packingRecordId='+packingRecordId; viewType = 'historyPacking'; rePrintBarcodeWin(loadTousseURL,SSTS_HistoryPacking_Update,SSTS_HistoryPacking_Change_Patient); } +function rePrintBarcodeWinForScanBasket(ids,SSTS_HistoryPacking_Update,SSTS_HistoryPacking_Change_Patient) { + var loadTousseURL = WWWROOT + '/disinfectSystem/packingAction!loadTousseByIds.do?ids='+ids; + viewType = 'historyPacking'; + rePrintBarcodeWin(loadTousseURL,SSTS_HistoryPacking_Update,SSTS_HistoryPacking_Change_Patient); +} function rePrintBarcodeWinForForeignProxyDisinfection(foreignProxyDisinfectionid,_applicant,_depart) { var loadTousseURL = WWWROOT + '/disinfectSystem/foreignProxyDisinfectionAction!loadTousses.do?foreignProxyDisinfectionid='+foreignProxyDisinfectionid; viewType = 'foreignProxyDisinfection'; @@ -148,6 +154,11 @@ width : 70, sortable : true },{ + header : '审核人', + dataIndex : 'reviewer', + width : 70, + sortable : true + },{ header : '清洗时间', dataIndex : 'washTime', width : 150, @@ -171,7 +182,7 @@ } return v; }, - width : 70, + width : 150, sortable : true },{ header : '使用类型', @@ -235,7 +246,7 @@ var rePrintGrid = new top.Ext.grid.EditorGridPanel({ id : 'tousseGrid', bodyStyle : 'border:1px solid #afd7af', - layout : 'fit', +// layout : 'fit', store : tousseStore, sm : selectModel, columns : tousseColumnModel, @@ -246,9 +257,9 @@ singleSelect : true }), clicksToEdit:1, - viewConfig: { - forceFit:true - }, +// viewConfig: { +// forceFit:true +// }, frame : false, tbar : [{ text : '修改', Index: ssts-web/src/main/webapp/disinfectsystem/packing/packingView.js =================================================================== diff -u -r16276 -r16285 --- ssts-web/src/main/webapp/disinfectsystem/packing/packingView.js (.../packingView.js) (revision 16276) +++ ssts-web/src/main/webapp/disinfectsystem/packing/packingView.js (.../packingView.js) (revision 16285) @@ -1228,222 +1228,20 @@ id :"save_print", text:'' + packingBtnText + '', handler : function() { - - packingToussesArray = []; // 清除所装配的器械包数组 - packedToussesArray = []; - tousseesToPrint = []; - - // 首先处理标识牌的打印 - var scanScanIDCardBarcode = Ext4.getCmp('scanIdCardBarcode'); - if(scanScanIDCardBarcode.isVisible(true)){ - printIDCardTousse(); - return; - } - - if(!validateFormParamsForPack()){ - return; - } - - var basketTree = Ext4.getCmp('basketTreeGrid'); - var waitPackingTreeGrid = Ext4.getCmp('waitPackingTreeGrid'); - var selNodes = basketTree.getView().getChecked(); - var selLength = selNodes.length; - if(selLength > 0){ - //格式[{tousseName:"",amount:1,packed:true,taskItems:[{taskId:11,amount:20},{taskId:12,amount:30}]},{tousseName:"",amount:1,packed:true,taskItems:[{taskId:11,amount:20},{taskId:12,amount:30}]}] - var delBasketItems = new Array(); - //遍历器械包节点 - Ext4.each(selNodes, function(pNode){ - var pTousseName = pNode.get('tousseName'); - var haveIDCard = pNode.get('haveIDCard'); - // 跳过有标识牌的器械包 - if(haveIDCard){ - return; - } - //器械包装配数量 - var packingAmount = pNode.get('amount'); - if(packingAmount <= 0){ - return; - } - - //{tousseName:"",amount:1,packed:true,taskItems:[{taskId:11,amount:20},{taskId:12,amount:30}]} - var basketItem = {}; - basketItem.tousseName = pTousseName; - basketItem.amount = 0; - basketItem.packed = false; - var dl = delBasketItems.length; - delBasketItems[dl] = basketItem; - - var taskItemArray = new Array(); - basketItem.taskItems = taskItemArray; - - var taskIdArray = []; - var basketBarcode; - var tousseName; - var tousseType; - var packageType; - var sterilingType; - var supplierName; - var damages; - var errors; - var department; - var departmentArray = []; - var status; - //遍历器械包下的每条装配任务数据 - Ext4.each(pNode.childNodes,function(cNode){ - tousseName = cNode.get("tousseName"); - status = cNode.get("status"); - basketBarcode = cNode.get("basketBarcode"); - var taskId = cNode.get("taskId"); - - var amount = cNode.get("amount"); - if(amount > packingAmount){ - amount = packingAmount; - } - packageType = cNode.get("packageType"); - if(packageType == "" || selLength == 1){ - packageType = Ext4.getCmp('packageType').getValue(); - } - sterilingType = cNode.get("sterilingMethod"); - if(sterilingType == "" || selLength == 1){ - sterilingType = Ext4.getCmp('sterilingType').getValue(); - } - tousseType = cNode.get("tousseType"); - supplierName = cNode.get("supplierName"); - damages = cNode.get("damages"); - errors = cNode.get("errors"); - department = cNode.get("department"); - departmentArray.push(department); - - if(status == '待确认'){ - showResult(tousseName+",有器械丢失,请确认!"); - return; - } - - if(errors != null && errors.length > 0){ - showResult("材料缺失,不够组成器械包,请补充缺失器械!"); - return; - } - if(damages != null && damages.length > 0){ - showResult("材料已报损,不够组成器械包,请补充报损器械!"); - return; - } - - if(packingAmount > 0){ - taskIdArray.push(taskId); - packingAmount -= amount; - basketItem.amount += amount; - basketItem.packed = true; - var ti = taskItemArray.length; - taskItemArray[ti] = {}; - taskItemArray[ti].taskId = taskId; - taskItemArray[ti].amount = amount; - } - }); - if(packingAmount > 0){ - showResult(tousseName + "需装配数量已超过该器械包所有装配任务数量之和."); - delBasketItems.splice(dl,1);//删除 - return; - } - //请求后台装配方法 - packingTousse(false,basketBarcode,taskIdArray.join(";"),tousseName,tousseType,pNode.get('amount'),packageType,sterilingType,supplierName,departmentArray.join(";"),pNode.get('urgentAmount')); - }); - // 一次打印 - printLabelsAfterPacking(); - //删除篮筐内物品 - deleteBasketItems(delBasketItems); - //打印后去掉选中的钩 - if(selLength > 0){ - Ext4.each(selNodes, function(pNode){ - pNode.set("checked", false); - }); - } - //刷新待装配列表 - waitPackingTreeGrid.getStore().reload(); - }else{ - //不回收的物品 - var isShow = Ext4.getCmp('save_print').isVisible(); - if(isShow){ - //选择统计的敷料包选项全打印 - var selNodes = waitPackingTreeGrid.getView().getChecked(); - var selLength = selNodes.length; - Ext4.each(selNodes, function(pNode) { - if(pNode.get('taskType') == taskType_recyclingRecord){ - return true;//在each(jquery、ext都如此)循环中,return true表示continue,return false表示break - } - var packingAmount = pNode.get('amount'); - var urgentAmount = pNode.get("urgentAmount"); - - var taskIdArray = []; - var tousseName; - var tousseType; - var packageType; - var sterilingType; - var supplierName; - var department; - var departmentArray = []; - var status; - - Ext4.each(pNode.childNodes, function(cNode) { - if(packingAmount <= 0){ - return; - } - tousseName = cNode.get("tousseName"); - var haveIDCard = pNode.get('haveIDCard'); - // 跳过有标识牌的器械包 - if(haveIDCard){ - showResult("【"+tousseName+"】启用了标识牌,需扫描标识牌装配。或者禁用该器械包的标识牌后装配!"); - return; - } - var status = cNode.get("status"); - if(status == '待确认'){ - showResult("【"+tousseName+"】有器械丢失,请先确认!"); - return false; - } - var taskId = cNode.get("taskId"); - var amount = cNode.get("amount"); - if(amount > packingAmount){ - amount = packingAmount; - } - packageType = cNode.get("packageType"); - if(selLength == 1){ - packageType = Ext4.getCmp('packageType').getValue(); - } - sterilingType = cNode.get("sterilingMethod"); - if(selLength == 1){ - sterilingType = Ext4.getCmp('sterilingType').getValue(); - } - tousseType = cNode.get("tousseType"); - supplierName = cNode.get("supplierName"); - department = cNode.get("department"); - departmentArray.push(department); - - if(packingAmount > 0){ - taskIdArray.push(taskId); - packingAmount -= amount; - } - }); - - packingTousse(false,'',taskIdArray.join(";"),tousseName,tousseType,pNode.get('amount'),packageType,sterilingType,supplierName,departmentArray.join(";"),urgentAmount); - - }); - // 一次打印 - printLabelsAfterPacking(); - waitPackingTreeGrid.getStore().reload(); - }else{ - showResult('请选择要打印的行!'); - } - } - Ext4.getCmp('sterilingType').setValue(null); - Ext4.getCmp('packageType').setValue(null); - - //如果装配界面的配包/审核人是否默认为上一次装配的配包/审核人配置为false,则装配完后需要重新清空 - if(packingPageOperatorDefaultLastOperator == false){ - Ext4.getCmp('operator').setValue(''); - } - if(packingPageReviewerDefaultLastReviewer == false){ - Ext4.getCmp('reviewer').setValue(''); - } + packing = true; + packingTousseBtnClick(); } + }, + { + xtype:'button', + id :"packingLableBtn", +// hidden: !sstsConfig.showPackingGoodsBtn || sstsConfig.printLabelWhenReviewing, + hidden: !sstsConfig.showPackingGoodsBtn, + text:'' + '装配物品' + '', + handler : function() { + packing = false; + packingTousseBtnClick(); + } } ] }); @@ -1779,6 +1577,8 @@ function showPackButton(isPrint,isReview,tousseType){ var packButton = Ext4.getCmp('save_print'); packButton.show(); + var packingLableBtn = Ext4.getCmp('packingLableBtn'); + packingLableBtn.show(); if (isPrint == '是'){ packButton.setText('' + packingBtnText + ''); } @@ -2021,7 +1821,229 @@ return true; } +var packing = false; +// 装配按钮调用 +function packingTousseBtnClick(){ + if(packing){ + packingToussesArray = []; // 清除所装配的器械包数组 + packedToussesArray = []; + tousseesToPrint = []; + } + + + // 首先处理标识牌的打印 + var scanScanIDCardBarcode = Ext4.getCmp('scanIdCardBarcode'); + if(scanScanIDCardBarcode.isVisible(true)){ + printIDCardTousse(); + return; + } + + if(!validateFormParamsForPack()){ + return; + } + + var basketTree = Ext4.getCmp('basketTreeGrid'); + var waitPackingTreeGrid = Ext4.getCmp('waitPackingTreeGrid'); + var selNodes = basketTree.getView().getChecked(); + var selLength = selNodes.length; + if(selLength > 0){ + //格式[{tousseName:"",amount:1,packed:true,taskItems:[{taskId:11,amount:20},{taskId:12,amount:30}]},{tousseName:"",amount:1,packed:true,taskItems:[{taskId:11,amount:20},{taskId:12,amount:30}]}] + var delBasketItems = new Array(); + //遍历器械包节点 + Ext4.each(selNodes, function(pNode){ + var pTousseName = pNode.get('tousseName'); + var haveIDCard = pNode.get('haveIDCard'); + // 跳过有标识牌的器械包 + if(haveIDCard){ + return; + } + //器械包装配数量 + var packingAmount = pNode.get('amount'); + if(packingAmount <= 0){ + return; + } + + //{tousseName:"",amount:1,packed:true,taskItems:[{taskId:11,amount:20},{taskId:12,amount:30}]} + var basketItem = {}; + basketItem.tousseName = pTousseName; + basketItem.amount = 0; + basketItem.packed = false; + var dl = delBasketItems.length; + delBasketItems[dl] = basketItem; + + var taskItemArray = new Array(); + basketItem.taskItems = taskItemArray; + + var taskIdArray = []; + var basketBarcode; + var tousseName; + var tousseType; + var packageType; + var sterilingType; + var supplierName; + var damages; + var errors; + var department; + var departmentArray = []; + var status; + //遍历器械包下的每条装配任务数据 + Ext4.each(pNode.childNodes,function(cNode){ + tousseName = cNode.get("tousseName"); + status = cNode.get("status"); + basketBarcode = cNode.get("basketBarcode"); + var taskId = cNode.get("taskId"); + + var amount = cNode.get("amount"); + if(amount > packingAmount){ + amount = packingAmount; + } + packageType = cNode.get("packageType"); + if(packageType == "" || selLength == 1){ + packageType = Ext4.getCmp('packageType').getValue(); + } + sterilingType = cNode.get("sterilingMethod"); + if(sterilingType == "" || selLength == 1){ + sterilingType = Ext4.getCmp('sterilingType').getValue(); + } + tousseType = cNode.get("tousseType"); + supplierName = cNode.get("supplierName"); + damages = cNode.get("damages"); + errors = cNode.get("errors"); + department = cNode.get("department"); + departmentArray.push(department); + + if(status == '待确认'){ + showResult(tousseName+",有器械丢失,请确认!"); + return; + } + + if(errors != null && errors.length > 0){ + showResult("材料缺失,不够组成器械包,请补充缺失器械!"); + return; + } + if(damages != null && damages.length > 0){ + showResult("材料已报损,不够组成器械包,请补充报损器械!"); + return; + } + + if(packingAmount > 0){ + taskIdArray.push(taskId); + packingAmount -= amount; + basketItem.amount += amount; + basketItem.packed = true; + var ti = taskItemArray.length; + taskItemArray[ti] = {}; + taskItemArray[ti].taskId = taskId; + taskItemArray[ti].amount = amount; + } + }); + if(packingAmount > 0){ + showResult(tousseName + "需装配数量已超过该器械包所有装配任务数量之和."); + delBasketItems.splice(dl,1);//删除 + return; + } + //请求后台装配方法 + packingTousse(false,basketBarcode,taskIdArray.join(";"),tousseName,tousseType,pNode.get('amount'),packageType,sterilingType,supplierName,departmentArray.join(";"),pNode.get('urgentAmount')); + }); + // 一次打印 + printLabelsAfterPacking(); + //删除篮筐内物品 + deleteBasketItems(delBasketItems); + //打印后去掉选中的钩 + if(selLength > 0){ + Ext4.each(selNodes, function(pNode){ + pNode.set("checked", false); + }); + } + //刷新待装配列表 + waitPackingTreeGrid.getStore().reload(); + }else{ + //不回收的物品 + var isShow = Ext4.getCmp('save_print').isVisible(); + if(isShow){ + //选择统计的敷料包选项全打印 + var selNodes = waitPackingTreeGrid.getView().getChecked(); + var selLength = selNodes.length; + Ext4.each(selNodes, function(pNode) { + if(pNode.get('taskType') == taskType_recyclingRecord){ + return true;//在each(jquery、ext都如此)循环中,return true表示continue,return false表示break + } + var packingAmount = pNode.get('amount'); + var urgentAmount = pNode.get("urgentAmount"); + + var taskIdArray = []; + var tousseName; + var tousseType; + var packageType; + var sterilingType; + var supplierName; + var department; + var departmentArray = []; + var status; + + Ext4.each(pNode.childNodes, function(cNode) { + if(packingAmount <= 0){ + return; + } + tousseName = cNode.get("tousseName"); + var haveIDCard = pNode.get('haveIDCard'); + // 跳过有标识牌的器械包 + if(haveIDCard){ + showResult("【"+tousseName+"】启用了标识牌,需扫描标识牌装配。或者禁用该器械包的标识牌后装配!"); + return; + } + var status = cNode.get("status"); + if(status == '待确认'){ + showResult("【"+tousseName+"】有器械丢失,请先确认!"); + return false; + } + var taskId = cNode.get("taskId"); + var amount = cNode.get("amount"); + if(amount > packingAmount){ + amount = packingAmount; + } + packageType = cNode.get("packageType"); + if(selLength == 1){ + packageType = Ext4.getCmp('packageType').getValue(); + } + sterilingType = cNode.get("sterilingMethod"); + if(selLength == 1){ + sterilingType = Ext4.getCmp('sterilingType').getValue(); + } + tousseType = cNode.get("tousseType"); + supplierName = cNode.get("supplierName"); + department = cNode.get("department"); + departmentArray.push(department); + + if(packingAmount > 0){ + taskIdArray.push(taskId); + packingAmount -= amount; + } + }); + + packingTousse(false,'',taskIdArray.join(";"),tousseName,tousseType,pNode.get('amount'),packageType,sterilingType,supplierName,departmentArray.join(";"),urgentAmount); + + }); + // 一次打印 + printLabelsAfterPacking(); + waitPackingTreeGrid.getStore().reload(); + }else{ + showResult('请选择要打印的行!'); + } + } + Ext4.getCmp('sterilingType').setValue(null); + Ext4.getCmp('packageType').setValue(null); + + //如果装配界面的配包/审核人是否默认为上一次装配的配包/审核人配置为false,则装配完后需要重新清空 + if(packingPageOperatorDefaultLastOperator == false){ + Ext4.getCmp('operator').setValue(''); + } + if(packingPageReviewerDefaultLastReviewer == false){ + Ext4.getCmp('reviewer').setValue(''); + } + +} // 装配器械包 function packingTousse(printImmediately,basketBarcode,taskIds,tousseName,tousseType,packAmount,packageType,sterilingType,supplierName,department,urgentAmount){ if(!validateFormParamsForPack()){ @@ -2177,7 +2199,7 @@ // tousseesToPrint.push(tousses[i]); // } // 现在不打印标签 - if (isPrintLabelNow == false ){ + if (isPrintLabelNow == false || !packing){ showResult(packAmount + "个" + showName + "装配完成"); } // 现在打印标签 @@ -2197,6 +2219,9 @@ Ext4.getCmp("idCardBarcode").setValue(''); } function printLabelsAfterPacking(){ + if(!packing){ + return; + } var packAmount = packedToussesArray.length; // showResult(packAmount + "个" + showName + "装配完成"); var printGroupType = Ext4.getCmp('printGroupType').getValue(); @@ -2511,6 +2536,7 @@ }else{ Ext4.getCmp('save_print').hide(); + Ext4.getCmp('packingLableBtn').hide(); } var isLeaf = record.get('leaf'); if(!isLeaf){ Index: ssts-web/src/main/webapp/disinfectsystem/packing/historyPackingView.js =================================================================== diff -u -r16098 -r16285 --- ssts-web/src/main/webapp/disinfectsystem/packing/historyPackingView.js (.../historyPackingView.js) (revision 16098) +++ ssts-web/src/main/webapp/disinfectsystem/packing/historyPackingView.js (.../historyPackingView.js) (revision 16285) @@ -192,28 +192,76 @@ format : 'Y-m-d' }] }, { - width : (forPanelWidth - 2 * (220 + 10))/2, + width : 250, layout : 'form', labelWidth : 80, items : [{ xtype : 'textfield', id : 'packer', name : 'packer', fieldLabel : '配包者', - width : (forPanelWidth - 2 * (220 + 10))/2 - 80 -10 + width : 150 }] }, { - width : (forPanelWidth - 2 * (220 + 10))/2, + width : 250, layout : 'form', labelWidth : 80, items : [{ xtype : 'textfield', id : 'packerNumber', name : 'packerNumber', fieldLabel : '工号', - width : (forPanelWidth - 2 * (220 + 10))/2 - 80 -10 + width : 150 }] - }, { + },{ + width : 300, + layout : 'form', + labelWidth : 120, + items : [{ + xtype : 'textfield', + fieldLabel : '灭菌篮筐条码', + allowBlank : true, + name : "inputBarcode", + id : "inputBarcode", + width : 150, +// anchor : '100%', + listeners : { + render : function(p) { + p.getEl().on('keypress',function(e) {//可输入或扫描的类型有灭菌架、灭菌筐、灭菌炉、灭菌程序、器械包;20151102新增加虚拟篮筐 + if (e.getKey() == 13) {//回车键 + var barcode = Ext.getCmp('inputBarcode').getValue(); + Ext.getCmp('inputBarcode').setValue(""); + if(!isUndefinedOrNullOrEmpty(barcode)){ +// sterilizationColumnTree.getEl().mask("数据重新加载中,请稍等!"); + Ext.Ajax.request( { + url : WWWROOT + '/disinfectSystem/sterilization/sterilizationRecordAction!getTousseInstanceIdsByBarcode.do', + params : { + barcode : barcode + }, + success : function(response, options) { +// sterilizationColumnTree.getEl().unmask(); + var result = Ext.decode(response.responseText); + if(result.error){ + showResult(result.message); + return; + } + var ids = result.ids; + rePrintBarcodeWinForScanBasket(ids,SSTS_HistoryPacking_Update,SSTS_HistoryPacking_Change_Patient); + }, + failure : function(response, options) { + showResult("请求超时,请稍后重试!"); + } + }); + } + } + }); + p.getEl().on('focus',function(e) { + Ext.getCmp('inputBarcode').setValue(""); + }); + } + } + }] + },{ width : 470, layout : 'form', labelWidth : 80, Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java =================================================================== diff -u -r16254 -r16285 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java (.../PackingAction.java) (revision 16254) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/PackingAction.java (.../PackingAction.java) (revision 16285) @@ -442,6 +442,16 @@ e.printStackTrace(); } } + + public void loadTousseByIds() { + String ids = StrutsParamUtils.getPraramValue( + "ids", ""); + String jsonStr = packingManager + .loadTousseByIds(ids); + StrutsResponseUtils.output(jsonStr); + } + + public void materialSupplement() { String msg = "器械补充成功!"; Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java =================================================================== diff -u -r16274 -r16285 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 16274) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 16285) @@ -41,13 +41,15 @@ import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; +import org.apache.struts2.impl.StrutsObjectFactory; import com.forgon.Constants; import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.directory.model.BarcodeDevice; import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.barcode.service.BarcodeManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; +import com.forgon.disinfectsystem.basedatamanager.toussedefinition.service.TousseInstanceUtils; import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; import com.forgon.disinfectsystem.entity.basedatamanager.imagefilemanager.ImageFile; import com.forgon.disinfectsystem.entity.basedatamanager.position.Position; @@ -594,7 +596,58 @@ e.printStackTrace(); } } + + public void getTousseInstanceIdsByBarcode() { + JSONObject jsonObj = new JSONObject(); + JSONUtil.addSuccess(jsonObj, true); + try { + String barcodeStr = StrutsParamUtils.getPraramValue("barcode", ""); + String[] barcodeArray = barcodeStr.split(";"); + String barcode = barcodeArray[0]; + BarcodeDevice barcodeDevice = barcodeManager + .getBarcodeByBarcode(barcode); + if (barcodeDevice == null) { + throw new RuntimeException("无效条码!"); + } + if (!(barcodeDevice instanceof Container)) { + throw new RuntimeException("请扫描灭菌篮筐条码!"); + } + Container container = (Container) barcodeDevice; + if (!Container.CONTAINERTYPE_BASKET.equals(container + .getContainerType())) {// 篮筐 + throw new RuntimeException("请扫描灭菌篮筐条码!"); + } + if (!Container.CONTAINER_PURPOSE_DISINFECTION.equals(container + .getPurpose())) { // 如果为灭菌筐,按原有方式查询 + throw new RuntimeException("请扫描灭菌篮筐条码!"); + } + Set toussesInBasket = null; + toussesInBasket = tousseInstanceManager + .getReviewedTousseInstanceByBasket(barcode); + if (toussesInBasket == null || toussesInBasket.size() == 0) { + throw new RuntimeException("篮筐中没有包实例!"); + } + StringBuilder sb = new StringBuilder(); + Set idSet = TousseInstanceUtils + .getTousseInstanceIds(toussesInBasket); + for (Long id : idSet) { + if (sb.length() == 0) { + sb.append(id.toString()); + } else { + sb.append(","); + sb.append(id.toString()); + } + } + jsonObj.put("ids", sb.toString()); + } catch (Exception e1) { + e1.printStackTrace(); + jsonObj.put("error", true); + JSONUtil.addMessage(jsonObj, e1.getMessage()); + } + StrutsResponseUtils.output(jsonObj); + } + /** * 扫描灭菌物品条码 * params:barcode 器械包或灭菌篮筐条码或虚拟篮筐,或器械包条码段、虚拟篮筐编号段,用分号分隔 Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java =================================================================== diff -u -r16245 -r16285 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java (.../PackingManager.java) (revision 16245) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManager.java (.../PackingManager.java) (revision 16285) @@ -63,6 +63,7 @@ throws SQLException; public String loadTousseByPackingRecord(String packingRecordId); + public String loadTousseByIds(String ids); /** *