Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r25631 -r25651 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 25631) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 25651) @@ -93,6 +93,7 @@ import com.forgon.disinfectsystem.inventorymanagement.service.WriteBackInventoryHelper; import com.forgon.disinfectsystem.stockmanage.departmentstock.vo.TousseInstanceVo; import com.forgon.disinfectsystem.tousse.cssdhandletousses.service.CssdHandleTousseManager; +import com.forgon.disinfectsystem.tousse.toussedefinition.vo.TousseInstanceExportVo; import com.forgon.disinfectsystem.tousse.toussedefinition.vo.TousseOperationVo; import com.forgon.disinfectsystem.vo.ItemDefinitionVO; import com.forgon.disinfectsystem.vo.TousseSimpleVO; @@ -105,6 +106,7 @@ import com.forgon.timeout.model.TimeoutSetting; import com.forgon.timeout.service.TimeoutManager; import com.forgon.tools.MathTools; +import com.forgon.tools.MyCollectionUtils; import com.forgon.tools.SpringBeanManger; import com.forgon.tools.SqlBuilder; import com.forgon.tools.date.DateTools; @@ -1981,7 +1983,6 @@ try { // 打开文件 book = Workbook.createWorkbook(ops); - if(tousseList!=null && !tousseList.isEmpty()){ int length=tousseList.size();//查询结果记录数 int sheetSize=60000; @@ -1991,8 +1992,14 @@ }else{ sheetNum=length/sheetSize; } + //获取器械包实例的其他导出信息 + List exportVoList = getExportVo(tousseList); //需导出的列头定义(与器械包信息页面列表保持一致) - String ss[] = {"器械包名称","条码","标识牌条码","状态","所在位置","所属仓库","清洗人","清洗时间","失效日期","装配人","装配时间","审核人","审核时间","包装类型","灭菌员","灭菌完成时间","灭菌程序","灭菌批号","发货人","发货时间","废弃时间","废弃原因","废弃操作人" }; + String ss[] = {"器械包名称","条码","标识牌条码","状态","所在位置","所属仓库","清洗人","清洗时间", + "失效日期","装配人","装配时间","审核人","审核时间","包装类型","灭菌员","灭菌完成时间", + "灭菌程序","灭菌批号","发货人","发货时间","废弃时间","废弃原因","废弃操作人","生物监测结果", + "化学监测结果","外来器械归还时间" + }; Label label; //循环sheet数量 for(int kk=0;kk tiId.equals(a.getTousseInstanceId())).findFirst().orElse(null); + // + for (int j = 0; j <= 25; j++) { switch(j){ case 0:label=new Label(j, i+1-(kk*sheetSize), tousseInstance.getTousseName());break; case 1:label=new Label(j,i+1-(kk*sheetSize), tousseInstance.getBarcode());break; @@ -2061,10 +2075,30 @@ case 20:label=new Label(j, i+1-(kk*sheetSize), tousseInstance.getWasteDate() != null ? new SimpleDateFormat("yyyy-MM-dd").format(tousseInstance.getWasteDate()) : "");break; case 21:label=new Label(j, i+1-(kk*sheetSize), tousseInstance.getWasteReason());break; case 22:label=new Label(j, i+1-(kk*sheetSize), tousseInstance.getOperateUser());break; + case 23://生物监测结果 + String biologyResult = ""; + if(tIExportVo != null){ + biologyResult = tIExportVo.getBiologyResult(); + } + label=new Label(j, i+1-(kk*sheetSize), biologyResult); + break; + case 24://化学监测结果 + String chemistryResult = ""; + if(tIExportVo != null){ + chemistryResult = tIExportVo.getChemistryResult(); + } + label=new Label(j, i+1-(kk*sheetSize), chemistryResult); + break; + case 25://外来器械归还时间 + String ftRetrnTime = ""; + if(null != tIExportVo){ + ftRetrnTime = tIExportVo.getForeignTousseApplicationReturnTimeStr(); + } + label=new Label(j, i+1-(kk*sheetSize), ftRetrnTime); + break; default:label=new Label(j,i+1-(kk*sheetSize),""); } - ws.addCell(label); } }else{ @@ -2089,6 +2123,41 @@ } } + /** + * 获取器械包实例的其他导出信息 + * @param tousseList + */ + private List getExportVo(List tousseList) { + List tiExportVos = new ArrayList(); + //防止导出数据量过多查询时导致内存不足报错,所以分成多个集合查询 + List> splitList = MyCollectionUtils.split(tousseList, 10000); + for (List sqlInIds : splitList) { + String sqWhere = SqlUtils.getNonStringFieldInLargeCollectionsPredicate("ti.id",sqlInIds.stream().map(TousseInstance::getId).collect(Collectors.toList())); + //根据器械包实例id获取关联信息 + String sql = String.format("select ti.id,sr.biologyResult,sr.chemistryResult,ft.ReturnTime " + + "from TousseInstance ti " + +" left join SterilizationRecord sr on ti.sterilizationRecord_id = sr.id " + +" left join ForeignTousseApplication ft on ft.id = ti.foreignTousseApp_id where %s", sqWhere); +// List> mapVoList = objectDao.findSqlByParam(sql,new Object[]{}); + ResultSet rs = objectDao.executeSql(sql); + try { + while(rs.next()){ + TousseInstanceExportVo tieVo = new TousseInstanceExportVo(); + tieVo.setTousseInstanceId(rs.getLong("id"));//器械包实例id + tieVo.setBiologyResult(rs.getString("biologyResult"));//生物监测结果 + tieVo.setChemistryResult(rs.getString("chemistryResult"));//化学监测结果 + tieVo.setForeignTousseApplicationReturnTimeStr(rs.getString("ReturnTime"));//外来器械归还时间 + tiExportVos.add(tieVo); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally{ + DatabaseUtil.closeResultSetAndStatement(rs); + } + } + return tiExportVos; + } + @Override public List getTousseInstanceBySql(String sql) { if (StringUtils.isNotBlank(sql)) { Index: ssts-web/src/main/webapp/disinfectsystem/useRecord/tabs/tousseInstanceInfoTab.js =================================================================== diff -u -r25579 -r25651 --- ssts-web/src/main/webapp/disinfectsystem/useRecord/tabs/tousseInstanceInfoTab.js (.../tousseInstanceInfoTab.js) (revision 25579) +++ ssts-web/src/main/webapp/disinfectsystem/useRecord/tabs/tousseInstanceInfoTab.js (.../tousseInstanceInfoTab.js) (revision 25651) @@ -1015,6 +1015,32 @@ layout : 'form', columnWidth : .5, cls:'edit-part2-labelwidth', + items : [{ + id : 'biologyResult', + name : 'biologyResult', + xtype : 'textfield', + fieldLabel : '生物监测结果', + anchor : '100%', + readOnly : true, + cls : 'fieldReadOnlyNoRemove' + }] + },{ + layout : 'form', + columnWidth : .5, + cls:'edit-part2-labelwidth', + items : [{ + id : 'chemistryResult', + name : 'chemistryResult', + xtype : 'textfield', + fieldLabel : '化学监测结果', + anchor : '100%', + readOnly : true, + cls : 'fieldReadOnlyNoRemove' + }] + },{ + layout : 'form', + columnWidth : .5, + cls:'edit-part2-labelwidth', bodyStyle : 'padding:0px 0px 0px 50px', items : [{ xtype : 'button', @@ -1084,7 +1110,21 @@ openModalWindow(WWWROOT+'/disinfectsystem/sterilizationmanager/sterilizerRecord/sterilizerLineChart.jsp?sterilizationRecordId='+sterilizationRecordId, '灭菌器参数', '1050', '550'); } }] - }] + },{ + layout : 'form', + columnWidth : 1, + cls:'edit-part2-labelwidth', +// style:'width:120px!important;', + items : [{ + id : 'foreignTousseApplicationReturnTime', + name : 'foreignTousseApplicationReturnTime', + xtype : 'textfield', + fieldLabel : '外来器械归还时间', + anchor : '100%', + readOnly : true, + cls : 'fieldReadOnlyNoRemove' + }] + }] }], buttons : [this.cancelButton] })] @@ -1909,21 +1949,23 @@ //二次清洗记录(外来器械) var secondWashRecordInfoArray = result.secondWashAndDisinfectRecordInfoJSONArray; - for(var j = 0;j < secondWashRecordInfoArray.length ; j++){ - var washRecordInfo = secondWashRecordInfoArray[j]; - var washRecordData = new Ext.data.Record({ - washRecordID : washRecordInfo.washRecordID, //清洗记录_清洗记录id - disinfectIdentification : washRecordInfo.disinfectIdentification, //清洗记录_清洗机名称 - disinfectProgram : washRecordInfo.disinfectProgram, //清洗记录_清洗程序 - washBasket : washRecordInfo.washBasket, //清洗记录_清洗篮筐 - washOperator : washRecordInfo.washOperator, //清洗记录_操作员 - personInCharge : washRecordInfo.personInCharge, //清洗记录_责任人 - position : washRecordInfo.position, //清洗记录_位置 - startDate : washRecordInfo.startDate, //清洗记录_开始时间 - endDate : washRecordInfo.endDate, //清洗记录_结束时间 - washDataAmount : washRecordInfo.washDataAmount //清洗记录_清洗参数 - }); - top.Ext.getCmp('secondWashRecord').getStore().add(washRecordData); + if(secondWashRecordInfoArray){ + for(var j = 0;j < secondWashRecordInfoArray.length ; j++){ + var washRecordInfo = secondWashRecordInfoArray[j]; + var washRecordData = new Ext.data.Record({ + washRecordID : washRecordInfo.washRecordID, //清洗记录_清洗记录id + disinfectIdentification : washRecordInfo.disinfectIdentification, //清洗记录_清洗机名称 + disinfectProgram : washRecordInfo.disinfectProgram, //清洗记录_清洗程序 + washBasket : washRecordInfo.washBasket, //清洗记录_清洗篮筐 + washOperator : washRecordInfo.washOperator, //清洗记录_操作员 + personInCharge : washRecordInfo.personInCharge, //清洗记录_责任人 + position : washRecordInfo.position, //清洗记录_位置 + startDate : washRecordInfo.startDate, //清洗记录_开始时间 + endDate : washRecordInfo.endDate, //清洗记录_结束时间 + washDataAmount : washRecordInfo.washDataAmount //清洗记录_清洗参数 + }); + top.Ext.getCmp('secondWashRecord').getStore().add(washRecordData); + } } }else{ var recyclingItemJSON = result.recyclingItemJSON; @@ -2118,6 +2160,13 @@ top.Ext.getCmp('sterilizationBasket').setValue(instance.sterilizationBasket); //灭菌记录_灭菌确认人灭菌篮筐 top.Ext.getCmp('sterilizationPosition').setValue(result.sterilizationPosition); //灭菌记录_灭菌位置 top.Ext.getCmp('cycleCounter').setValue(result.cycleCounter); //灭菌记录_循环次数 + top.Ext.getCmp('biologyResult').setValue(result.biologyResult); //灭菌记录_生物监测结果 + top.Ext.getCmp('chemistryResult').setValue(result.chemistryResult); //灭菌记录_化学监测结果 + //外来器械申请单 + var foreignTousseApplicationJSON = result.foreignTousseApplicationJSON; + if(foreignTousseApplicationJSON){ + top.Ext.getCmp('foreignTousseApplicationReturnTime').setValue(foreignTousseApplicationJSON.returnTime);//灭菌记录_外来器械归还时间 + } } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/vo/TousseInstanceExportVo.java =================================================================== diff -u --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/vo/TousseInstanceExportVo.java (revision 0) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/vo/TousseInstanceExportVo.java (revision 25651) @@ -0,0 +1,63 @@ +package com.forgon.disinfectsystem.tousse.toussedefinition.vo; + + +/** + * 器械包实例导出的附加信息vo + * @author YanWeiNing 2019/02/14 + */ +public class TousseInstanceExportVo { + + /** + * 器械包实例id + */ + private Long tousseInstanceId; + + /** + * 生物监测结果 + */ + private String biologyResult; + + /** + * 化学监测结果 + */ + private String chemistryResult; + + /** + * 外来器械归还时间 + */ + private String foreignTousseApplicationReturnTimeStr; + + public String getBiologyResult() { + return biologyResult; + } + + public void setBiologyResult(String biologyResult) { + this.biologyResult = biologyResult; + } + + public String getChemistryResult() { + return chemistryResult; + } + + public void setChemistryResult(String chemistryResult) { + this.chemistryResult = chemistryResult; + } + + + public Long getTousseInstanceId() { + return tousseInstanceId; + } + + public void setTousseInstanceId(Long tousseInstanceId) { + this.tousseInstanceId = tousseInstanceId; + } + + public String getForeignTousseApplicationReturnTimeStr() { + return foreignTousseApplicationReturnTimeStr; + } + + public void setForeignTousseApplicationReturnTimeStr( + String foreignTousseApplicationReturnTimeStr) { + this.foreignTousseApplicationReturnTimeStr = foreignTousseApplicationReturnTimeStr; + } +} Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java =================================================================== diff -u -r25603 -r25651 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java (.../InvoiceAction.java) (revision 25603) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java (.../InvoiceAction.java) (revision 25651) @@ -66,6 +66,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.becleanitem.ClassifyBasket; +import com.forgon.disinfectsystem.entity.foreigntousseapplication.ForeignTousseApplication; import com.forgon.disinfectsystem.entity.invoicemanager.DiposableGoodsItem; import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceGoodsVo; @@ -1059,6 +1060,21 @@ } } + //外来器械申请单 + JSONObject foreignTousseApplicationJSON = new JSONObject(); + if(ti.getTousseDefinition().isForeignTousse()){ + Long ftApplicationId = ti.getForeignTousseApp_id();//外来器械申请单id + if (DatabaseUtil.isPoIdValid(ftApplicationId)) { + //外来器械申请单 + ForeignTousseApplication foreignTousseApplication = (ForeignTousseApplication) objectDao + .getByProperty(ForeignTousseApplication.class.getSimpleName(), "id", ftApplicationId); + if(null != foreignTousseApplication){ + //外来器械归还时间 + foreignTousseApplicationJSON.put("returnTime",ForgonDateUtils.safelyFormatDate( + foreignTousseApplication.getReturnTime(), ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDDHHMM, "")); + } + } + } Map map = new HashMap(); map.put("success", true); @@ -1071,6 +1087,7 @@ map.put("tousseInstance", ti); map.put("invoicePlanJSON", invoicePlanJSON); map.put("recyclingItemJSON", recyclingItemJSON); + map.put("foreignTousseApplicationJSON", foreignTousseApplicationJSON); //外来器械二次回收与二次清洗 if(ti.getTousseDefinition().isForeignOrSplitTousse()){ @@ -1130,15 +1147,15 @@ map.put("sterilizationRecordID", sterilizationRecord.getId()); map.put("sterilizerRecordAmounts", sterilizationRecord.getSterilizerRecordAmount()); map.put("sterilizationFinishConfirm", sterilizationRecord.getSrSituationComfirmer()); - map.put("cycleCounter", sterilizationRecord.getCycleCounter()); + map.put("biologyResult", sterilizationRecord.getBiologyResult());//灭菌记录_生物监测结果 + map.put("chemistryResult", sterilizationRecord.getChemistryResult());//灭菌记录_化学监测结果 }else{ map.put("sterilizationRecordID", 0); map.put("sterilizerRecordAmounts", 0); map.put("sterilizationFinishConfirm", ""); map.put("cycleCounter", 0); } - // 定期监测、质量监测信息 QualityMonitoringInstance qmi = null; if(StringUtils.isNotBlank(ti.getBarcode())){