Index: ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js =================================================================== diff -u -r26966 -r26995 --- ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js (.../sterilizationRecordForm.js) (revision 26966) +++ ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js (.../sterilizationRecordForm.js) (revision 26995) @@ -217,7 +217,7 @@ * @param reviewTime 审核时间 * @param sterilingMode 灭菌方式 */ -function createNode(isParentNode,barcode,name,typeForSterilizationStatistics,depart,type,position,amount,reviewTime,stockAmount,todayAmount , sterilingMode){ +function createNode(isParentNode,barcode,name,typeForSterilizationStatistics,depart,type,position,amount,reviewTime,stockAmount,sterilingMode){ var node; if(isParentNode==true){ //创建父节点(灭菌筐节点或者没有入灭菌筐的器械包节点) @@ -250,11 +250,10 @@ node.attributes.reviewTime = reviewTime; node.attributes.sterilingMode = sterilingMode; node.attributes.stockAmount = stockAmount; - node.attributes.todayAmount = todayAmount; return node; } //加急--创建节点 -function createNodeForUrgent(isParentNode,barcode,name,typeForSterilizationStatistics,depart,type,position,amount,reviewTime,stockAmount,todayAmount , sterilingMode,isUrgentTousse,urgentLevel){ +function createNodeForUrgent(isParentNode,barcode,name,typeForSterilizationStatistics,depart,type,position,amount,reviewTime,stockAmount, sterilingMode,isUrgentTousse,urgentLevel){ var node; if(isParentNode==true){ //创建父节点(灭菌筐节点或者没有入灭菌筐的器械包节点) @@ -287,7 +286,6 @@ node.attributes.reviewTime = reviewTime; node.attributes.sterilingMode = sterilingMode; node.attributes.stockAmount = stockAmount; - node.attributes.todayAmount = todayAmount; node.attributes.isUrgentTousse = isUrgentTousse; node.attributes.urgentLevel = urgentLevel; return node; @@ -644,10 +642,10 @@ // 没入篮筐的器械包或者篮筐 if(node.attributes.isParentNode){ if(type == '器械包'){ - var cloneNode = createNode(true,barcode,name,typeForSterilizationStatistics,depart,type,position,amount,reviewTime,0,0); + var cloneNode = createNode(true,barcode,name,typeForSterilizationStatistics,depart,type,position,amount,reviewTime,0,null); return cloneNode; }else{ - var cloneNode = createNode(true,barcode,name,typeForSterilizationStatistics,depart,type,position,amount,reviewTime,0,0); + var cloneNode = createNode(true,barcode,name,typeForSterilizationStatistics,depart,type,position,amount,reviewTime,0,null); var childNodes = node.attributes.children; if(childNodes != null){ for(var i=0;i 0){ for(var k = 0; k < tousseInstanceArr.length; k++){ var ti = tousseInstanceArr[k]; - var childNode = createNode(false,ti.barcode,ti.name,ti.typeForSterilizationStatistics,ti.depart,'器械包',position,ti.amount,ti.reviewTime,0,0,data.sterilingMode); + var childNode = createNode(false,ti.barcode,ti.name,ti.typeForSterilizationStatistics,ti.depart,'器械包',position,ti.amount,ti.reviewTime,0,data.sterilingMode); parentNode.appendChild(childNode); } } @@ -1872,7 +1867,7 @@ var newAmount = parseInt(newValue) var oldAmount = parseInt(oldValue) var reg = new RegExp("^[0-9]*$"); - var stockAmount = parseInt(editNode.attributes.stockAmount) + var stockAmount = parseInt(editNode.attributes.stockAmount); //修改失败后调用 var updateFail=function roleBack(){ //克隆修改前的数据 @@ -1883,10 +1878,9 @@ var amount = editNode.attributes.amount ; var reviewTime = editNode.attributes.reviewTime ; var stockAmount = editNode.attributes.stockAmount ; - var todayAmount = editNode.attributes.todayAmount ; var rootNode = sterilizationColumnTree.getRootNode(); - var parentNode = createNode(true, barcode, name, typeForSterilizationStatistics, department, '器械包', position, oldValue, reviewTime,stockAmount,todayAmount); + var parentNode = createNode(true, barcode, name, typeForSterilizationStatistics, department, '器械包', position, oldValue, reviewTime,stockAmount,null); var firstChildNode = rootNode.item(0); editNode.remove();//删除修改后的节点数据 rootNode.appendChild(parentNode);//追加修改前的数据 @@ -1941,7 +1935,6 @@ var amount = parseInt(clickNode.attributes.amount); var delAmount = clickNode.attributes.amount var fixedBarcode = clickNode.attributes.barcode - var todayAmount = parseInt(clickNode.attributes.todayAmount); var stockAmount = parseInt(clickNode.attributes.stockAmount); var node; delTousseInsAmount(delAmount,fixedBarcode)//从全局数组中删除 @@ -2105,7 +2098,6 @@ }); sterilizationColumnTreeColumnArray.push({header:'名称',width:120,dataIndex:'name'}); sterilizationColumnTreeColumnArray.push({header : '库存',dataIndex : 'stockAmount',width : 0, hidden:true}); - sterilizationColumnTreeColumnArray.push({header : '今日审核',dataIndex : 'todayAmount',width : 0, hidden:true}); sterilizationColumnTreeColumnArray.push({header : '数量',dataIndex : 'amount',width : 50}); sterilizationColumnTreeColumnArray.push({header : '灭菌方式',dataIndex : 'sterilingMode',width : 60}); sterilizationColumnTreeColumnArray.push({header : '是否不追溯',dataIndex : 'unTraceable',width : 10, hidden:true}); @@ -2199,10 +2191,9 @@ var amount = editNode.attributes.amount ; var reviewTime = editNode.attributes.reviewTime ; var stockAmount = editNode.attributes.stockAmount ; - var todayAmount = editNode.attributes.todayAmount ; var rootNode = sterilizationColumnTree.getRootNode(); - var parentNode = createNode(true, barcode, name, typeForSterilizationStatistics, department, '器械包', position, oldValue, reviewTime,stockAmount,todayAmount); + var parentNode = createNode(true, barcode, name, typeForSterilizationStatistics, department, '器械包', position, oldValue, reviewTime,stockAmount); var firstChildNode = rootNode.item(0); editNode.remove();//删除修改后的节点数据 rootNode.appendChild(parentNode);//追加修改前的数据 @@ -2219,7 +2210,6 @@ return; } var stockAmount = editNode.attributes.stockAmount ; - var todayAmount = editNode.attributes.todayAmount ; var rigthAmount = getRigthFixedBarcodeAmount(barcode) if(newAmount>oldAmount){//如果是增加数量 var count = newAmount - oldAmount Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r26960 -r26995 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 26960) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 26995) @@ -1113,6 +1113,9 @@ while (rs.next()) { vo = new TousseSimpleVO(); try{ + vo.setTousseDefinitionId(rs.getLong("tdId")); + }catch(Exception e){} + try{ vo.setBarcode(rs.getString("barcode")); }catch(Exception e){} try{ @@ -1143,7 +1146,7 @@ vo.setOrgUnitName(rs.getString("orgUnitName")); }catch(Exception e){} try{ - vo.setReviewTime(ForgonDateUtils.safelyFormatDate(rs.getTimestamp("reviewTime") , Constants.DATEFORMAT_YYYYMMDDHHMM , null)); + vo.setReviewTime(ForgonDateUtils.safelyFormatDate(rs.getTimestamp("reviewTime"), Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMM, null)); }catch(Exception e){} try{ vo.setSterilingType(rs.getString("sterilingType")); @@ -1152,7 +1155,7 @@ vo.setSterilingMode(rs.getString("sterilingMode")); }catch(Exception e){} try{ - vo.setValidUntil(ForgonDateUtils.safelyFormatDate(rs.getTimestamp("validUntil") , Constants.DATEFORMAT_YYYYMMDDHHMM , null)); + vo.setValidUntil(ForgonDateUtils.safelyFormatDate(rs.getTimestamp("validUntil"), Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMM, null)); }catch(Exception e){} try{ vo.setTousseType(rs.getString("tousseType")); @@ -1502,8 +1505,6 @@ }else{ reviewedBasketIdsSql.append("in(").append(reviewedBasketIds).append(")"); } - //科室供应室配置 - SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSystemParamsObj(); List vos = new ArrayList(); String currentOrgUnitCode = AcegiHelper.getCurrentOrgUnitCode(); @@ -1517,8 +1518,8 @@ //1、普通器械包、消毒物品、敷料包 String sql1 = "select distinct t.reviewBasket_id,tdAncestor.id tdId," - + " t.id id, t.depart depart, t.departCoding departCoding, t.tousseName name, td.tousseType, t.tousseName, b.barcode, t.validUntil, t.sterilingType," - + " t.orgUnitCoding, t.orgUnitName, t.foreignProxyItem_Id, t.proxyDisinfection_Id,t.reviewTime,t.isUrgentTousse,tdAncestor.isTraceable,t.SterilingMode " + + " t.depart depart, td.tousseType, t.tousseName, b.barcode," + + " t.proxyDisinfection_Id,t.isUrgentTousse,tdAncestor.isTraceable,t.SterilingMode " + sqlSelect_UrgentLevel + "from tousseinstance t" + sqlJoin_UrgentLevel + " , barcodedevice b , TousseDefinition td , TousseDefinition tdAncestor " @@ -1532,60 +1533,99 @@ + ")" + queryDiscardSql; logger.debug("sql:" + sql1); - buildTousseSimpleVOs(vos, sql1); + buildTousseSimpleVOsForGetAllTousseInstanceVOsInReviewedBasket(vos, sql1); - //2、外来器械包、外来器械拆分小包 - String sql2 = "select t.id id,t.reviewBasket_id,td.id tdId," - + " t.depart depart, t.departCoding departCoding,t.tousseName name, td.tousseType, t.tousseName, b.barcode, t.validUntil, t.sterilingType," - + "t.orgUnitCoding, t.orgUnitName, t.foreignProxyItem_Id, t.proxyDisinfection_Id,t.reviewTime,t.isUrgentTousse , '"+ Constants.STR_YES +"' isTraceable " - + ",t.SterilingMode,null fixedBarcode " + sqlSelect_UrgentLevel + String sql2 = "select t.reviewBasket_id,td.id tdId," + + " t.depart depart, td.tousseType, t.tousseName, b.barcode," + + " t.proxyDisinfection_Id,t.isUrgentTousse , '"+ Constants.STR_YES +"' isTraceable " + + ",t.SterilingMode " + sqlSelect_UrgentLevel + "from tousseinstance t"+ sqlJoin_UrgentLevel + ", barcodedevice b , TousseDefinition td " + "where t.id = b.id and t.tousseDefinition_id=td.id and td.tousseType in ('"+TousseDefinition.PACKAGE_TYPE_FOREIGN+"','"+TousseDefinition.PACKAGE_TYPE_SPLIT+"') " +" and t.reviewBasket_id "+ reviewedBasketIdsSql +" and t.reviewBasket_id is not null " + " and t.orgUnitCoding='"+currentOrgUnitCode+"' " + queryDiscardSql; logger.debug("sql:" + sql2); - buildTousseSimpleVOs(vos, sql2); - + buildTousseSimpleVOsForGetAllTousseInstanceVOsInReviewedBasket(vos, sql2); //3、自定义器械包 - String sql3 = "select t.id id,t.reviewBasket_id,td.id tdId," - + " t.depart depart, t.departCoding departCoding,t.tousseName name, td.tousseType, t.tousseName, b.barcode, t.validUntil, t.sterilingType," - + "t.orgUnitCoding, t.orgUnitName, t.foreignProxyItem_Id, t.proxyDisinfection_Id,t.reviewTime,t.isUrgentTousse , '"+ Constants.STR_YES +"' isTraceable " - + ",t.SterilingMode,null fixedBarcode " + sqlSelect_UrgentLevel + String sql3 = "select t.reviewBasket_id,td.id tdId," + + " t.depart depart,td.tousseType, t.tousseName, b.barcode," + + " t.proxyDisinfection_Id,t.isUrgentTousse , '"+ Constants.STR_YES +"' isTraceable " + + ",t.SterilingMode " + sqlSelect_UrgentLevel + "from tousseinstance t" + sqlJoin_UrgentLevel + ", barcodedevice b , TousseDefinition td " + "where t.id = b.id and t.tousseDefinition_id=td.id and td.tousseType in ('"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"') " +" and t.reviewBasket_id "+ reviewedBasketIdsSql +" and t.reviewBasket_id is not null " + " and t.orgUnitCoding='"+currentOrgUnitCode+"' " + queryDiscardSql; logger.debug("sql:" + sql3); - buildTousseSimpleVOs(vos, sql3); - + buildTousseSimpleVOsForGetAllTousseInstanceVOsInReviewedBasket(vos, sql3); //4、外部代理灭菌 - String firstBarcodeSql = null; - if(dbConnection.isSqlServer()){ - firstBarcodeSql = "(select top 1 barcode from TousseInstance ti1 join barcodeDevice b1 on b1.id=ti1.id where ti1.tousseFixedBarcode=1 and ti1.tousseDefinition_id=tdAncestor.id) fixedBarcode "; - } else if(dbConnection.isOracle()){ - firstBarcodeSql = "(select barcode from TousseInstance ti1 join barcodeDevice b1 on b1.id=ti1.id where ti1.tousseFixedBarcode=1 and ti1.tousseDefinition_id=tdAncestor.id and rownum <= 1) fixedBarcode "; - } - String sql4 = "select t.id id,t.reviewBasket_id,tdAncestor.id tdId," - + " t.depart depart, t.departCoding departCoding,t.tousseName name, td.tousseType, t.tousseName, b.barcode, t.validUntil, t.sterilingType," - + "t.orgUnitCoding, t.orgUnitName, t.foreignProxyItem_Id, t.proxyDisinfection_Id,t.reviewTime,t.isUrgentTousse,tdAncestor.isTraceable,t.SterilingMode," - + firstBarcodeSql + sqlSelect_UrgentLevel + String sql4 = "select t.reviewBasket_id,tdAncestor.id tdId," + + " t.depart depart, td.tousseType, t.tousseName, b.barcode," + + " t.proxyDisinfection_Id,t.isUrgentTousse,tdAncestor.isTraceable,t.SterilingMode " + + sqlSelect_UrgentLevel + "from tousseinstance t" + sqlJoin_UrgentLevel + " , barcodedevice b , TousseDefinition td , TousseDefinition tdAncestor " + "where t.id = b.id and t.tousseDefinition_id=td.id and td.ancestorID=tdAncestor.id and td.tousseType in ('"+TousseDefinition.PACKAGE_TYPE_FOREIGNPROXY+"') " +" and t.reviewBasket_id "+ reviewedBasketIdsSql +" and t.reviewBasket_id is not null " + " and t.orgUnitCoding='"+currentOrgUnitCode+"' " + queryDiscardSql; logger.debug("sql:" + sql4); - buildTousseSimpleVOs(vos, sql4); + buildTousseSimpleVOsForGetAllTousseInstanceVOsInReviewedBasket(vos, sql4); return vos; } - /** + * 为getAllTousseInstanceVOsInReviewedBasket方法构建TousseSimpleVO集合. + * @param vos + * @param sql + */ + private void buildTousseSimpleVOsForGetAllTousseInstanceVOsInReviewedBasket(List vos, String sql){ + ResultSet rs = objectDao.executeSql(sql); + SqlUtils sqlUtils = new SqlUtils(); + try { + while(rs.next()){ + TousseSimpleVO vo = new TousseSimpleVO(); + ItemDefinitionVO definition = new ItemDefinitionVO(); + definition.setTousseType(rs.getString("tousseType")); + if(sqlUtils.isExistColumn(rs,"tdId")){ + vo.setTousseDefinitionId(rs.getLong("tdId")); + } + if(sqlUtils.isExistColumn(rs,"reviewBasket_id")){ + vo.setReviewBasketId(rs.getLong("reviewBasket_id")); + } + vo.setTousseName(rs.getString("tousseName")); + vo.setBarcode(rs.getString("barcode")); + vo.setSterilingMode(rs.getString("SterilingMode")); + vo.setIsUrgentTousse(rs.getString("isUrgentTousse")); + vo.setProxyDisinfectionId(rs.getLong("proxyDisinfection_Id")); + vo.setDepart(rs.getString("depart")); + vo.setItemDefinition(definition); + + //如果是否追溯为否,则设置为否,否则都为是 + String isTraceable = rs.getString("isTraceable"); + if(StringUtils.equals(Constants.STR_NO, isTraceable)){ + vo.setIsTraceable(Constants.STR_NO); + } + //加急Vo + if(DatabaseUtil.isPoIdValid(rs.getLong("ulId"))){ + UrgentLevelVo urgentLevelVo = new UrgentLevelVo(); + urgentLevelVo.setId(rs.getLong("ulId")); + urgentLevelVo.setColorCode(rs.getString("ulColorCode")); + urgentLevelVo.setName(rs.getString("ulName")); + urgentLevelVo.setGrade(rs.getInt("ulGrade")); + vo.setUrgentLevelInfo(urgentLevelVo); + } + vos.add(vo); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + } + /** * 构建TousseSimpleVO集合. * @param vos * @param sql @@ -6883,6 +6923,9 @@ @Override public Map getFixedBarcodesByIds(Set tousseDefinitionIds) { Map idAndBarcodes = new HashMap(); + if(CollectionUtils.isEmpty(tousseDefinitionIds)){ + return idAndBarcodes; + } ResultSet rs = null; try { rs = objectDao.executeSql(buildSqlOfGetFixedBarcodesByIds(tousseDefinitionIds)); Index: ssts-web/src/main/webapp/disinfectsystem/interfere/interfereRecordForm.js =================================================================== diff -u -r26784 -r26995 --- ssts-web/src/main/webapp/disinfectsystem/interfere/interfereRecordForm.js (.../interfereRecordForm.js) (revision 26784) +++ ssts-web/src/main/webapp/disinfectsystem/interfere/interfereRecordForm.js (.../interfereRecordForm.js) (revision 26995) @@ -201,7 +201,7 @@ * @param amount 数量(便于以后扫描固定条码支持修改数量的功能,目前值为均为1) * @param reviewTime 审核时间 */ -function createNode(isParentNode,barcode,name,typeForSterilizationStatistics,depart,type,position,amount,reviewTime,stockAmount,todayAmount){ +function createNode(isParentNode,barcode,name,typeForSterilizationStatistics,depart,type,position,amount,reviewTime,stockAmount){ var node; if(isParentNode==true){ //创建父节点(灭菌筐节点或者没有入灭菌筐的器械包节点) @@ -233,7 +233,6 @@ node.attributes.amount = amount; node.attributes.reviewTime = reviewTime; node.attributes.stockAmount = stockAmount; - node.attributes.todayAmount = todayAmount; return node; } @@ -461,10 +460,10 @@ // 没入篮筐的器械包或者篮筐 if(node.attributes.isParentNode){ if(type == '器械包'){ - var cloneNode = createNode(true,barcode,name,typeForSterilizationStatistics,depart,type,position,amount,reviewTime,0,0); + var cloneNode = createNode(true,barcode,name,typeForSterilizationStatistics,depart,type,position,amount,reviewTime,0); return cloneNode; }else{ - var cloneNode = createNode(true,barcode,name,typeForSterilizationStatistics,depart,type,position,amount,reviewTime,0,0); + var cloneNode = createNode(true,barcode,name,typeForSterilizationStatistics,depart,type,position,amount,reviewTime,0); var childNodes = node.attributes.children; if(childNodes != null){ for(var i=0;i 0){ for(var k = 0; k < tousseInstanceArr.length; k++){ var ti = tousseInstanceArr[k]; - var childNode = createNode(false,ti.barcode,ti.name,ti.typeForSterilizationStatistics,ti.depart,'器械包',position,ti.amount,ti.reviewTime,0,0); + var childNode = createNode(false,ti.barcode,ti.name,ti.typeForSterilizationStatistics,ti.depart,'器械包',position,ti.amount,ti.reviewTime,0); parentNode.appendChild(childNode); } } @@ -1492,10 +1488,8 @@ var amount = editNode.attributes.amount ; var reviewTime = editNode.attributes.reviewTime ; var stockAmount = editNode.attributes.stockAmount ; - var todayAmount = editNode.attributes.todayAmount ; - var rootNode = sterilizationColumnTree.getRootNode(); - var parentNode = createNode(true, barcode, name, typeForSterilizationStatistics, department, '器械包', position, oldValue, reviewTime,stockAmount,todayAmount); + var parentNode = createNode(true, barcode, name, typeForSterilizationStatistics, department, '器械包', position, oldValue, reviewTime,stockAmount); var firstChildNode = rootNode.item(0); editNode.remove();//删除修改后的节点数据 rootNode.appendChild(parentNode);//追加修改前的数据 @@ -1549,7 +1543,6 @@ var amount = parseInt(clickNode.attributes.amount); var delAmount = clickNode.attributes.amount var fixedBarcode = clickNode.attributes.barcode - var todayAmount = parseInt(clickNode.attributes.todayAmount); var stockAmount = parseInt(clickNode.attributes.stockAmount); var node; delTousseInsAmount(delAmount,fixedBarcode)//从全局数组中删除 @@ -1664,7 +1657,6 @@ sterilizationColumnTreeColumnArray.push({header:'条码',width:110,dataIndex:'barcode'}); sterilizationColumnTreeColumnArray.push({header:'名称',width:120,dataIndex:'name'}); sterilizationColumnTreeColumnArray.push({header : '库存',dataIndex : 'stockAmount',width : 0, hidden:true}); - sterilizationColumnTreeColumnArray.push({header : '今日审核',dataIndex : 'todayAmount',width : 0, hidden:true}); sterilizationColumnTreeColumnArray.push({header : '数量',dataIndex : 'amount',width : 50}); if (sstsConfig.haveSterilizerPosition) { sterilizationColumnTreeColumnArray.push({header:'位置',width:80,dataIndex:'position'}); @@ -1753,10 +1745,9 @@ var amount = editNode.attributes.amount ; var reviewTime = editNode.attributes.reviewTime ; var stockAmount = editNode.attributes.stockAmount ; - var todayAmount = editNode.attributes.todayAmount ; var rootNode = sterilizationColumnTree.getRootNode(); - var parentNode = createNode(true, barcode, name, typeForSterilizationStatistics, department, '器械包', position, oldValue, reviewTime,stockAmount,todayAmount); + var parentNode = createNode(true, barcode, name, typeForSterilizationStatistics, department, '器械包', position, oldValue, reviewTime,stockAmount); var firstChildNode = rootNode.item(0); editNode.remove();//删除修改后的节点数据 rootNode.appendChild(parentNode);//追加修改前的数据 @@ -1773,7 +1764,6 @@ return; } var stockAmount = editNode.attributes.stockAmount ; - var todayAmount = editNode.attributes.todayAmount ; var rigthAmount = getRigthFixedBarcodeAmount(barcode) if(newAmount>oldAmount){//如果是增加数量 var count = newAmount - oldAmount Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r26890 -r26995 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 26890) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 26995) @@ -3934,20 +3934,20 @@ return null; } //1、没入篮筐的器械包 - //List tousseInstanceList = sterilizationRecord.getTousseInstanceList(); + Long startTime = new Date().getTime(); List tousseInstanceListWithoutReviewedBasket = getTousseSimpleVOsBySterilizationRecord(sterilizationRecord , null); + Long afterWithoutReviewedBasket = new Date().getTime(); // 容器 List reviewedBasketList = sterilizationRecord.getReviewedBaskets(); + //2、查询灭菌记录下篮筐内所有的包 + List tousseAllForReviewedBasket = tousseInstanceManager.getAllTousseInstanceVOsInReviewedBasket(reviewedBasketList,true); + Long afterInReviewedBasket = new Date().getTime(); JSONArray jsonArray = new JSONArray(); - Map bMap=Maps.newHashMap(); - - String orgUnitCoding = AcegiHelper.getLoginUser() - .getOrgUnitCodingFromSupplyRoomConfig(); - // 当天审核的,未入筐的器械包 - List toussesOutsideBasketOfToday = tousseInstanceManager.getTodayReviewedTousseInstanceWithOutBasket(orgUnitCoding); + Set tdIdIsTraceable = getTdIdIsTraceable(reviewedBasketList, tousseAllForReviewedBasket);// 没入篮筐的不追溯的器械包id + Map fixedBarcodesAndName = null; // 没入篮筐的器械包 - Set tdIdIsTraceable = new HashSet();// 没入篮筐的不追溯的器械包id if(CollectionUtils.isNotEmpty(tousseInstanceListWithoutReviewedBasket)){ + Map bMap = Maps.newHashMap(); for (TousseSimpleVO tousse : tousseInstanceListWithoutReviewedBasket) { String tousseName = tousse.getTousseName(); String key=tousseName; @@ -4001,8 +4001,7 @@ jsonObj.put("uiProvider", "col"); jsonObj.put("iconCls", "task"); jsonObj.put("leaf", true); - jsonObj.put("stockAmount",tousse.getStockAmount());//库存数量 - jsonObj.put("todayAmount",toussesOutsideBasketOfToday.size());//今日审核数量 + jsonObj.put("stockAmount",0);//库存数量 jsonObj.put("sterilingMode", tousse.getSterilingMode()); //加急信息 jsonObj.put("isUrgent", tousse.getIsUrgentTousse()); @@ -4012,15 +4011,20 @@ bMap.put(tousse.getBarcode(), jsonObj); } } - setFixBarcode(tdIdIsTraceable, bMap); + fixedBarcodesAndName = tousseInstanceManager.getFixedBarcodesByIds(tdIdIsTraceable); + setFixBarcode(fixedBarcodesAndName, bMap); for (String str : bMap.keySet()) { - JSONObject tousseInBasket=bMap.get(str); + JSONObject tousseInBasket = bMap.get(str); jsonArray.add(tousseInBasket); } + }else{ + fixedBarcodesAndName = tousseInstanceManager.getFixedBarcodesByIds(tdIdIsTraceable); } - //2、查询灭菌记录下篮筐内所有的包 - List tousseAllForReviewedBasket = tousseInstanceManager.getAllTousseInstanceVOsInReviewedBasket(reviewedBasketList,true); if(CollectionUtils.isEmpty(tousseAllForReviewedBasket)){ + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_STERILIZATION, Log.TYPE_QUERY, + "未入筐物品查询时间:" + (afterWithoutReviewedBasket - startTime) + + "ms,入筐物品查询时间:" + (afterInReviewedBasket - afterWithoutReviewedBasket) + + "ms,后台运算时间:" + (new Date().getTime() - afterInReviewedBasket) + "ms"); return jsonArray; } //循环每一个篮筐 @@ -4040,10 +4044,10 @@ int i = 0; //是否加急的篮框 Boolean isBasketUrgent = false; - Set tdIdIsOfReviewedBasket= new HashSet(); + long reviewedBasketId = reviewedBasket.getId().longValue(); //循环该记录下所有的包,加入到对应的篮筐内 for (TousseSimpleVO tousseSimpleVO : tousseAllForReviewedBasket) { - if(tousseSimpleVO.getReviewBasketId().longValue() != reviewedBasket.getId().longValue()){ + if(tousseSimpleVO.getReviewBasketId().longValue() != reviewedBasketId){ continue; } i++; @@ -4075,7 +4079,6 @@ //覆盖 cMap.put(tousseName, obj); }else{ - tdIdIsOfReviewedBasket.add(tousseSimpleVO.getTousseDefinitionId()); JSONObject obj = new JSONObject(); obj.put("amount", 1); //标记下该包为不追溯 @@ -4113,7 +4116,7 @@ } } jsonObj.put("amount", i); - setFixBarcode(tdIdIsOfReviewedBasket, cMap); + setFixBarcode(fixedBarcodesAndName, cMap); for (Entry object : cMap.entrySet()) { tousseInBasketArray.add(object.getValue()); } @@ -4144,6 +4147,10 @@ if(CssdUtils.getSystemSetConfigByNameBool("enableUrgentFunction", false)){ jsonArray.sort(Comparator.comparing(obj -> ((JSONObject) obj).getInt("maxUrgentGrade")).reversed()); } + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_STERILIZATION, Log.TYPE_QUERY, + "未入筐物品查询时间:" + (afterWithoutReviewedBasket - startTime) + + "ms,入筐物品查询时间:" + (afterInReviewedBasket - afterWithoutReviewedBasket) + + "ms,后台运算时间:" + (new Date().getTime() - afterInReviewedBasket) + "ms"); return jsonArray; // // 容器 @@ -4221,17 +4228,34 @@ // } // return jsonArray; } + private Set getTdIdIsTraceable(List reviewedBasketList, List tousseAllForReviewedBasket){ + Set tdIdIsTraceable = new HashSet(); + //循环每一个篮筐 + for (ReviewedBasket reviewedBasket : reviewedBasketList) { + long reviewedBasketId = reviewedBasket.getId().longValue(); + for (TousseSimpleVO tousseSimpleVO : tousseAllForReviewedBasket) { + if(tousseSimpleVO.getReviewBasketId().longValue() != reviewedBasketId){ + continue; + } + if(StringUtils.equals(Constants.STR_NO, tousseSimpleVO.getIsTraceable())){ + tdIdIsTraceable.add(tousseSimpleVO.getTousseDefinitionId()); + } + } + } + return tdIdIsTraceable; + } /** * 给不追溯的器械包json设置固定条码 - * @param tdIdIsTraceable 不追溯的包定义id + * @param tousseNameAndFixBarcode 不追溯的包名和固定条码 * @param map <包名,器械包json> */ - private void setFixBarcode(Set tdIdIsTraceable, Map map){ - if(tdIdIsTraceable.size() > 0){ - Map tousseNameAndFixBarcode = tousseInstanceManager.getFixedBarcodesByIds(tdIdIsTraceable); + private void setFixBarcode(Map tousseNameAndFixBarcode, Map map){ + if(tousseNameAndFixBarcode.size() > 0){ for(Entry entry : tousseNameAndFixBarcode.entrySet()){ JSONObject obj = map.get(entry.getKey()); - obj.put("barcode", entry.getValue()); + if(obj != null){ + obj.put("barcode", entry.getValue()); + } } } } @@ -4384,44 +4408,69 @@ String sqlSelect_UrgentLevel = String.format(" ,ul.colorCode ulColorCode ,ul.grade ulGrade, ul.name ulName , ul.id ulId "); //拼接sql语句 if(reviewedBasket != null && DatabaseUtil.isPoIdValid(reviewedBasket.getId())){ - queryTousseSql.append("select b.barcode,tdAncestor.name definitionName,po.tousseName,po.depart,po.departCoding,po.sterilingMode,tdAncestor.isTraceable,po.isUrgentTousse,po.orgUnitCoding,po.orgUnitName,po.reviewTime,po.sterilingType,po.validUntil "); - if(dbConnection.isSqlServer()){ - queryTousseSql.append(",(select top 1 barcode from TousseInstance ti1 join barcodeDevice b1 on b1.id=ti1.id where ti1.tousseFixedBarcode=1 and ti1.tousseDefinition_id=tdAncestor.id) fixedBarcode "); - }else if(dbConnection.isOracle()){ - queryTousseSql.append(",(select barcode from TousseInstance ti1 join barcodeDevice b1 on b1.id=ti1.id where ti1.tousseFixedBarcode=1 and ti1.tousseDefinition_id=tdAncestor.id and rownum <= 1) fixedBarcode "); - } + queryTousseSql.append("select td.id tdId,b.barcode,po.tousseName,po.depart,po.sterilingMode,tdAncestor.isTraceable,po.isUrgentTousse,po.sterilingType "); queryTousseSql.append(sqlSelect_UrgentLevel); queryTousseSql.append(",po.proxyDisinfection_id,tdAncestor.tousseType,tdAncestor.isForeignTousse,po.proxyDisinfection_id " - + ",0 stockAmount " + "from " + TousseInstance.class.getSimpleName() + " po " + sqlJoin_UrgentLevel + "join " + BarcodeDevice.class.getSimpleName() + " b on po.id=b.id " + "join "+ TousseDefinition.class.getSimpleName() +" td on po.tousseDefinition_id=td.id " + "join "+ TousseDefinition.class.getSimpleName() +" tdAncestor on td.ancestorId=tdAncestor.id " + "where po.reviewBasket_id=" + reviewedBasket.getId()); - return tousseInstanceManager.getTousseVoDataFromDb(queryTousseSql.toString()); + return getTousseVoDataFromDbForGetTousseSimpleVOsBySterilizationRecord(queryTousseSql.toString()); }else if(sterilizationRecord != null && DatabaseUtil.isPoIdValid(sterilizationRecord.getId())){ - queryTousseSql.append("select b.barcode,tdAncestor.name definitionName,po.tousseName,po.depart,po.departCoding,po.sterilingMode,tdAncestor.isTraceable,po.isUrgentTousse,po.orgUnitCoding,po.orgUnitName,po.reviewTime,po.sterilingType,po.validUntil "); - if(dbConnection.isOracle()){ - queryTousseSql.append(",(select barcode from TousseInstance ti1 join barcodeDevice b1 on b1.id=ti1.id where ti1.tousseFixedBarcode=1 and ti1.tousseDefinition_id=tdAncestor.id and rownum <= 1) fixedBarcode "); - }else if(dbConnection.isSqlServer()){ - queryTousseSql.append(",(select top 1 barcode from TousseInstance ti1 join barcodeDevice b1 on b1.id=ti1.id where ti1.tousseFixedBarcode=1 and ti1.tousseDefinition_id=tdAncestor.id) fixedBarcode "); - } + queryTousseSql.append("select td.id tdId,b.barcode,po.tousseName,po.depart,po.sterilingMode,tdAncestor.isTraceable,po.isUrgentTousse,po.sterilingType "); queryTousseSql.append(sqlSelect_UrgentLevel); queryTousseSql.append(",po.proxyDisinfection_id,tdAncestor.tousseType,tdAncestor.isForeignTousse,po.proxyDisinfection_id " - + ",0 stockAmount " + "from " + TousseInstance.class.getSimpleName() + " po " + sqlJoin_UrgentLevel + "join " + BarcodeDevice.class.getSimpleName() + " b on po.id=b.id " + "join "+ TousseDefinition.class.getSimpleName() +" td on po.tousseDefinition_id=td.id " + "join "+ TousseDefinition.class.getSimpleName() +" tdAncestor on td.ancestorId=tdAncestor.id " + "join sterilization_tousseInstance st on st.tousseInstance_id=po.id " + "where st.sterilizationRecord_id=" + sterilizationRecord.getId()); - return tousseInstanceManager.getTousseVoDataFromDb(queryTousseSql.toString()); + return getTousseVoDataFromDbForGetTousseSimpleVOsBySterilizationRecord(queryTousseSql.toString()); } return list; } - + private List getTousseVoDataFromDbForGetTousseSimpleVOsBySterilizationRecord(String queryTousseSql){ + List list = new ArrayList(); + TousseSimpleVO vo = null; + ResultSet rs = null; + try { + rs = objectDao.executeSql(queryTousseSql); + while (rs.next()) { + vo = new TousseSimpleVO(); + vo.setTousseDefinitionId(rs.getLong("tdId")); + vo.setBarcode(rs.getString("barcode")); + vo.setTousseName(rs.getString("tousseName")); + vo.setDepart(rs.getString("depart")); + vo.setIsTraceable(rs.getString("isTraceable")); + vo.setIsUrgentTousse(rs.getString("isUrgentTousse")); + vo.setSterilingType(rs.getString("sterilingType")); + vo.setSterilingMode(rs.getString("sterilingMode")); + vo.setTousseType(rs.getString("tousseType")); + vo.setIsForeignTousse(rs.getString("isForeignTousse")); + vo.setProxyDisinfectionId(rs.getLong("proxyDisinfection_Id")); + try{ + if(DatabaseUtil.isPoIdValid(rs.getLong("ulId"))){ + UrgentLevelVo urgentLevelVo = new UrgentLevelVo(); + urgentLevelVo.setId(rs.getLong("ulId")); + urgentLevelVo.setColorCode(rs.getString("ulColorCode")); + urgentLevelVo.setName(rs.getString("ulName")); + urgentLevelVo.setGrade(rs.getInt("ulGrade")); + vo.setUrgentLevelInfo(urgentLevelVo); + } + }catch(Exception e){} + list.add(vo); + } + } catch (Exception e) { + e.printStackTrace(); + }finally{ + DatabaseUtil.closeResultSetAndStatement(rs); + } + return list; + } private String getTypeForSterilizationStatistics(Long tousseDefinitionId,Long getProxyDisinfection_id) { String typeForSterilizationStatistics = TousseDefinition.PACKAGE_TYPE_INSIDE; TousseDefinition td = (TousseDefinition) objectDao.getByProperty(TousseDefinition.class.getSimpleName(), "id", tousseDefinitionId);