Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r14576 -r14727 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 14576) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 14727) @@ -182,7 +182,7 @@ if(bd != null && bd instanceof ExpensiveDisposablegoods){ ExpensiveDisposablegoods edg = (ExpensiveDisposablegoods)bd; edg.setStatus(ExpensiveDisposablegoods.STATUS_USED); - edg.setUserecordId(useRecord.getId()); + edg.setUseRecord(useRecord); objectDao.saveOrUpdate(edg); } } @@ -431,7 +431,8 @@ BarcodeDevice bd = barcodeManager.getBarcodeByBarcode(ugi.getBarcode()); if(bd != null && bd instanceof ExpensiveDisposablegoods){ ExpensiveDisposablegoods ed = (ExpensiveDisposablegoods)bd; - if(ed.getUserecordId() != null && ed.getUserecordId().longValue() != modified.getId().intValue()){ + UseRecord useRecord = ed.getUseRecord(); + if(useRecord != null && useRecord.getId().longValue() != modified.getId().intValue()){ throw new RuntimeException(String.format("条码为[%s]的高值耗材已被使用,不能重复录入使用记录", ugi.getBarcode())); } modifiedExpensiveDisposablegoodsBarcode.add(bd.getBarcode()); @@ -460,7 +461,7 @@ BarcodeDevice bd = barcodeManager.getBarcodeByBarcode(barcode); if(bd != null && bd instanceof ExpensiveDisposablegoods){ ExpensiveDisposablegoods ed = (ExpensiveDisposablegoods)bd; - ed.setUserecordId(modified.getId()); + ed.setUseRecord(curUseRecord); ed.setStatus(ExpensiveDisposablegoods.STATUS_USED); objectDao.saveOrUpdate(ed); } @@ -472,7 +473,7 @@ BarcodeDevice bd = barcodeManager.getBarcodeByBarcode(barcode); if(bd != null && bd instanceof ExpensiveDisposablegoods){ ExpensiveDisposablegoods ed = (ExpensiveDisposablegoods)bd; - ed.setUserecordId(null); + ed.setUseRecord(null); ed.setStatus(ExpensiveDisposablegoods.STATUS_DELIVERED); objectDao.saveOrUpdate(ed); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/ExpensiveDisposablegoods.java =================================================================== diff -u -r13947 -r14727 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/ExpensiveDisposablegoods.java (.../ExpensiveDisposablegoods.java) (revision 13947) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/ExpensiveDisposablegoods.java (.../ExpensiveDisposablegoods.java) (revision 14727) @@ -6,13 +6,15 @@ import java.util.Date; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Transient; import com.forgon.Constants; import com.forgon.directory.model.BarcodeDevice; import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.entity.useRecord.UseRecord; import com.forgon.tools.db.DatabaseUtil; /** @@ -31,7 +33,7 @@ private String identification; // 标识号 private Date entryDate; // 入库时间 - + private Date printTime; // 打印时间 private Double price; // 价格 @@ -49,17 +51,19 @@ private Long invoiceItemId;// 明细汇总的Id private Long invoiceId;// 发货单Id - + private Long receiveRecordItemId;// 领用记录item的ID private Long receiveRecordId;// 领用记录的ID - - private Long godownEntryId;// - private Long godownEntryItemId;// - - private Long userecordId;//使用记录id - + + private Long godownEntryId;// + private Long godownEntryItemId;// + + // private Long userecordId;//使用记录id + + private UseRecord useRecord; + private String status = STATUS_IN_WAREHOUSE; - + private String location; // 位置(组织机构code) private String locationForDisplay; // 位置(组织机构名称) @@ -85,14 +89,15 @@ this.entryDate = entryDate; } - @Transient // 用于页面显示 + @Transient + // 用于页面显示 public String getPrintTimeStr() { - if(printTime == null){ + if (printTime == null) { return ""; } return Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(printTime); } - + public Date getPrintTime() { return printTime; } @@ -216,22 +221,32 @@ this.godownEntryItemId = godownEntryItemId; } - public Long getUserecordId() { - return userecordId; - } + // public Long getUserecordId() { + // return userecordId; + // } + // + // public void setUserecordId(Long userecordId) { + // this.userecordId = userecordId; + // } - public void setUserecordId(Long userecordId) { - this.userecordId = userecordId; - } - public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } - + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "userecordId") + public UseRecord getUseRecord() { + return useRecord; + } + + public void setUseRecord(UseRecord useRecord) { + this.useRecord = useRecord; + } + public String getLocation() { return location; } @@ -247,12 +262,14 @@ public void setLocationForDisplay(String locationForDisplay) { this.locationForDisplay = locationForDisplay; } - + @Transient - public String getName(){ + public String getName() { String name = ""; - if(disposableGoodsBatchStock != null && disposableGoodsBatchStock.getDiposableGoods() != null){ - name = CssdUtils.getDiposableGoodsName(disposableGoodsBatchStock.getDiposableGoods()); + if (disposableGoodsBatchStock != null + && disposableGoodsBatchStock.getDiposableGoods() != null) { + name = CssdUtils.getDiposableGoodsName(disposableGoodsBatchStock + .getDiposableGoods()); } return name; } @@ -267,6 +284,7 @@ } return true; } + @Transient public boolean isAssociatedInfoValidForReceive() { if (!DatabaseUtil.isPoIdValid(receiveRecordId)) { @@ -288,13 +306,14 @@ } return true; } + public boolean inWarehouse() { if (STATUS_IN_WAREHOUSE.equals(status)) { return true; } return false; } - + public boolean outWarehouse() { if (STATUS_OUT_WAREHOUSE.equals(status)) { return true; Index: ssts-web/src/main/webapp/disinfectsystem/assestManagement/disposableGoods/expensiveDisposableGoodsUseRecordView.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/assestManagement/disposableGoods/expensiveDisposableGoodsUseRecordView.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/assestManagement/disposableGoods/expensiveDisposableGoodsUseRecordView.js (revision 14727) @@ -0,0 +1,64 @@ +var grid; + + +Ext.onReady(function() { + var columns = new Array(); + columns.push( + {header : "科室",width : 300,dataIndex : 'useRecord.depart'}, + {header : "物品名称",width : 350,dataIndex : 'disposableGoodsBatchStock.diposableGoods.showName'}, + {header : "条码",width : 70,dataIndex : 'barcode'}, + {header : "状态",width : 80,dataIndex : 'status'}, + {header : "使用时间",width : 125,dataIndex : 'useRecord.enteringDate',renderer : myDateFormatBySecond}, + {header : "住院号",width : 100,dataIndex : 'useRecord.hospitalNum'} + ); + + var readerDetail = [ + {name : 'id'}, + {name : 'useRecord.depart'}, + {name : 'disposableGoodsBatchStock.diposableGoods.showName'}, + {name : 'barcode'}, + {name : 'status'}, + {name : 'useRecord.enteringDate'}, + {name : 'useRecord.hospitalNum'} + ]; + + var filters = new Ext.grid.GridFilters({ + filters : [ +// {type : 'string',dataIndex : 'disposableGoodsBatchStock.diposableGoods.showName'}, + {type : 'string',dataIndex : 'useRecord.depart'}, + {type : 'string',dataIndex : 'barcode'}, +// {type : 'string',dataIndex : 'status'}, + {type : 'date',dataIndex : 'useRecord.enteringDate'}, + {type : 'string',dataIndex : 'useRecord.hospitalNum'} + ] + }); + + grid = new Ext.ux.ForgonPageGrid({ + id : 'tousseInstanceGrid', + pageSize : 20, + renderTo : 'gridDiv', + defaultSortField : 'useRecord.enteringDate', + defaultSortDirection : 'DESC', + isCheckboxSelectionModel : true, + rememberSelected : false, + isShowSearchField : false, + columns : columns, + plugins : filters, + frame : false, + border : false + }, + readerDetail, + DiposableGoodsTableManager.findExpensiveDisposableGoodsUseRecordList, + null + ); + + new Ext.Viewport({ + layout : 'border', + items : [ { + region : 'center', + margins : '0 0 0 0', + layout : 'fit', + items : grid + }] + }); +}); Index: ssts-web/src/main/webapp/disinfectsystem/assestManagement/disposableGoods/expensiveDisposableGoodsUseRecordView.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/assestManagement/disposableGoods/expensiveDisposableGoodsUseRecordView.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/assestManagement/disposableGoods/expensiveDisposableGoodsUseRecordView.jsp (revision 14727) @@ -0,0 +1,61 @@ +<%@ page contentType="text/html; charset=UTF-8"%> +<%@ include file="/common/taglibs.jsp"%> +<%@page import="com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods,com.forgon.Constants"%> + + + + +一次性物品信息 + + +<%@ include file="/common/includeExtJsAndCss.jsp"%> + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+ + \ No newline at end of file Index: ssts-web/src/main/webapp/homepage/menuconfigure.js =================================================================== diff -u -r14698 -r14727 --- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 14698) +++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 14727) @@ -262,6 +262,7 @@ children:[ {hidden :SSTS_DiposableGoodsNode_Menu,text:"一次性物品管理",href:WWWROOT+'/disinfectsystem/assestManagement/diposableGoods/diposableGoodsView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_DiposableGoodsNode_Menu,text:"一次性物品库存",href:WWWROOT+'/disinfectsystem/assestManagement/disposableGoods/disposableGoodsStockView.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_DiposableGoodsNode_Menu,text:"高值耗材使用记录",href:WWWROOT+'/disinfectsystem/assestManagement/disposableGoods/expensiveDisposableGoodsUseRecordView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_DiposableGoodsNode_Menu,text:"一次性物品出入库记录",href:WWWROOT+'/disinfectsystem/assestManagement/disposableGoods/storageRecordView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_godownEntryNode_Menu,text:"入库单管理",href:WWWROOT+'/disinfectsystem/assestManagement/godownEntry/godownEntryView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_WarehouseEntryOut_Menu,text:"退库单管理",href:WWWROOT+'/disinfectsystem/assestManagement/godownEntry/godownOutView.jsp',hrefTarget:linkTarget,leaf:true}, Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java =================================================================== diff -u -r14674 -r14727 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java (.../TousseInstanceAction.java) (revision 14674) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java (.../TousseInstanceAction.java) (revision 14727) @@ -50,6 +50,7 @@ import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; import com.forgon.disinfectsystem.entity.systemwarning.SystemWarningItemVO; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.disinfectsystem.entity.useRecord.UseRecord; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; import com.forgon.disinfectsystem.packing.service.PackingManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; @@ -373,8 +374,8 @@ BarcodeDevice bd = barcodeManager.getBarcodeByBarcode(barcode); if(bd != null && bd instanceof ExpensiveDisposablegoods){ ExpensiveDisposablegoods ed = (ExpensiveDisposablegoods)bd; - if (useRecordID.equals(String - .valueOf(ed.getUserecordId()))) { + UseRecord useRecord = ed.getUseRecord(); + if (useRecord != null && useRecordID.equals(useRecord.getId())) { continue; } if( !ed.delivered()){ Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/DiposableGoodsTableManager.java =================================================================== diff -u -r13519 -r14727 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/DiposableGoodsTableManager.java (.../DiposableGoodsTableManager.java) (revision 13519) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/dwr/table/DiposableGoodsTableManager.java (.../DiposableGoodsTableManager.java) (revision 14727) @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.Date; +import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -23,8 +24,10 @@ import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatch; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock; +import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveDisposablegoods; import com.forgon.disinfectsystem.entity.basedatamanager.datasynchronization.HisMaterialDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.datasynchronization.HisMaterialType; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.systemwarning.SystemWarningItemVO; import com.forgon.systemsetting.model.HttpOption; import com.forgon.systemsetting.service.HttpOptionManager; @@ -143,7 +146,84 @@ new String[] { "goodsBatchs" }); } + // 高值耗材使用记录 + public String findExpensiveDisposableGoodsUseRecordList( + Map> parameterMap) { + Map sqlWhereParamMap = gridManager + .getParamFromView(parameterMap); + StringBuilder sqlBuilder = new StringBuilder(" WHERE 1=1 "); + + int start = 0; + int pageSize = 20; + String orderStr = ""; + String filterSqlStr = ""; + String searchSql = ""; + if (parameterMap != null) { + Map paramSqlMap = gridManager + .parserMapToSQL(parameterMap); + orderStr = paramSqlMap.get(GridManager.GRID_MAPPARAM_SORT_KEY); + + filterSqlStr = paramSqlMap + .get(GridManager.GRID_MAPPARAM_FILTER_KEY); + + List pageStart = parameterMap + .get(GridManager.GRID_PAGE_START); + if (pageStart != null && pageStart.size() > 0 + && StringUtils.isNotBlank(pageStart.get(0)) + && StringUtils.isNumeric(pageStart.get(0))) { + start = Integer.valueOf(pageStart.get(0)); + } + + List pageSizeStr = parameterMap + .get(GridManager.GRID_PAGE_SIZE); + if (pageSizeStr != null && pageSizeStr.size() > 0 + && StringUtils.isNotBlank(pageSizeStr.get(0)) + && StringUtils.isNumeric(pageSizeStr.get(0))) { + pageSize = Integer.valueOf(pageSizeStr.get(0)); + } + + // 处理GridSearch的参数 + searchSql = gridManager.getSearchFieldSql(parameterMap); + } + // 合并用户自定义的sql + if (StringUtils.isNotBlank(filterSqlStr)) { + sqlBuilder.append(" AND "); + sqlBuilder.append(filterSqlStr); + } + + if (StringUtils.isNotBlank(searchSql)) { + sqlBuilder.append(" AND "); + sqlBuilder.append(searchSql); + } + + String sql = sqlBuilder.toString(); + + // 替换排序字段 + if(StringUtils.isNotBlank(orderStr)){ + orderStr = orderStr.replaceAll("disposableGoodsBatchStock.diposableGoods.showName", "po.disposableGoodsBatchStock.diposableGoods.name"); + orderStr = orderStr.replaceAll("status", "po.status"); + } + if (StringUtils.isNotBlank(orderStr)) { + orderStr += ", po.id desc "; + } + int totalResults = objectDao.countObjectBySql( + ExpensiveDisposablegoods.class.getSimpleName(), sql); + String fullSql = String.format(" select po from %s po left join fetch po.useRecord useRecord %s order by %s ",ExpensiveDisposablegoods.class.getSimpleName(),sql,orderStr); + List list = objectDao.findByHql( + fullSql, start, + pageSize); + + Map map = new HashMap(); + map.put("totalResults", totalResults); + map.put("list", list); + map.put("selectSqlWhereCondition", sql); + String[] filterProperties = { "identifications","goodsBatchs","tousseInstanceList","diposableGoodsItems","materialGoodsItems"}; + String json = gridManager.converJsonString(totalResults, list, sql, + filterProperties); + return json; + } + /** * 一次性物品告警grid *