Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r26722 -r26723 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 26722) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 26723) @@ -73,8 +73,10 @@ import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstanceUseRecord; import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; +import com.forgon.disinfectsystem.entity.becleanitem.ClassifiedItem; import com.forgon.disinfectsystem.entity.becleanitem.ClassifyBasket; import com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinition; +import com.forgon.disinfectsystem.entity.departmentstock.DepartmentStock; import com.forgon.disinfectsystem.entity.goodsstock.GoodsStock; import com.forgon.disinfectsystem.entity.idcardinstance.IDCardInstance; import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; @@ -5983,7 +5985,8 @@ */ private String buildSqlOfGetRelevantInfoByStatus(String departCode, String tousseName, String status){ String sql = null; - String joinSql = " inner join barcodeDevice bd on ti.id=bd.id inner join DepartmentStock ds on ds.tousseDefinition_id=ti.tousseDefinition_id "; + String joinSql = String.format(" inner join %s bd on ti.id=bd.id inner join %s ds on ds.tousseDefinition_id=ti.tousseDefinition_id ", + BarcodeDevice.class.getSimpleName(),DepartmentStock.class.getSimpleName()); StringBuffer querySql = new StringBuffer(""); //各条语句的时间查询条件 StringBuffer tiDateSql = new StringBuffer();//各种状态下的包实例数量,不包括聚合包、状态为已消毒、已回收、已使用的包数量的数量的时间查询条件 @@ -6002,35 +6005,42 @@ }else if(TousseInstance.STATUS_STERILED.equals(status)){ querySql.append(" ti.id,sterileStartTime,sterileEndTime,sterilizerName,sterilizationUser,validUntil,bd.barcode "); }else if(TousseInstance.STATUS_SHIPPED.equals(status)){ - querySql.append(" ti.id,invoiceSendTime,invoiceSender,bd.barcode "); + querySql.append(" ti.id,invoiceSendTime,invoiceSender,bd.barcode,ti.validUntil "); } if(TousseInstance.STATUS_USED.equals(status)){ - sql = String.format("select ti.id,useTime,ur.patientName,barcode,ur.operationRoom from TousseInstance ti " - + " join UseRecord ur on ur.id=ti.useRecord_id " - + " inner join barcodeDevice bd on bd.id=ti.id " - + " inner join DepartmentStock ds on ds.tousseDefinition_id=ti.tousseDefinition_id " + sql = String.format("select ti.id,useTime,ur.patientName,barcode,ur.operationRoom from %s ti " + + " join %s ur on ur.id=ti.useRecord_id " + + " inner join %s bd on bd.id=ti.id " + + " inner join %s ds on ds.tousseDefinition_id=ti.tousseDefinition_id " + " where ti.departCoding=ds.departCoding and ti.useRecord_id is not null and ds.departCoding='%s' and ti.tousseName='%s' and ti.recyclingItemId is null %s" - , departCode, tousseName, usedDateSql); + , TousseInstance.class.getSimpleName(),UseRecord.class.getSimpleName(),BarcodeDevice.class.getSimpleName(), + DepartmentStock.class.getSimpleName(),departCode, tousseName, usedDateSql); }else if(TousseInstance.STATUS_RECYCLED.equals(status)){ sql = String.format("select rr.id,rr.recyclingTime,rr.recyclingUser,ip.operationRoom operationRoomName,ri.amount recyclingAmount " - + " from RecyclingItem ri inner join RecyclingRecord rr on ri.recyclingRecord_id=rr.id " - + " inner join invoicePlan ip on ip.id=rr.recyclingApplication_id inner join ClassifiedItem ci on ci.recyclingRecordId= rr.id inner join ClassifyBasket cb on ci.classifybasket_id=cb.id " - + " inner join DepartmentStock ds on ds.tousseDefinition_id=ri.tousseDefinitionId " - + " where ri.tousseDefinitionId=ci.tousseDefinitionid and ip.departCoding=ds.departCoding and ri.tousseName='%s' and ds.departCoding='%s' and cb.washStartTime is null %s", tousseName, departCode, recyDateSql); + + " from %s ri inner join %s rr on ri.recyclingRecord_id=rr.id " + + " inner join %s ip on ip.id=rr.recyclingApplication_id inner join %s ci on ci.recyclingRecordId= rr.id inner join %s cb on ci.classifybasket_id=cb.id " + + " inner join %s ds on ds.tousseDefinition_id=ri.tousseDefinitionId " + + " where ri.tousseDefinitionId=ci.tousseDefinitionid and ip.departCoding=ds.departCoding and ri.tousseName='%s' and ds.departCoding='%s' and cb.washStartTime is null %s", + RecyclingItem.class.getSimpleName(),RecyclingRecord.class.getSimpleName(),InvoicePlan.class.getSimpleName(), + ClassifiedItem.class.getSimpleName(),ClassifyBasket.class.getSimpleName(),DepartmentStock.class.getSimpleName(), + tousseName, departCode, recyDateSql); }else if(TousseInstance.STATUS_DISINFECTED.equals(status)){ - sql = String.format("select wr.id ,wr.startDate washStartTime,wr.endDate washEndTime,wr.disinfectIdentification,unPackAmount washedAmount from ClassifiedItem ci " - + " inner join TousseDefinition td on td.id=ci.tousseDefinitionID " - + " inner join invoicePlan ip on ip.id=ci.invoicePlanID " - + " inner join ClassifyBasket cb on ci.classifybasket_id=cb.id " + sql = String.format("select wr.id ,wr.startDate washStartTime,wr.endDate washEndTime,wr.disinfectIdentification,unPackAmount washedAmount from %s ci " + + " inner join %s td on td.id=ci.tousseDefinitionID " + + " inner join %s ip on ip.id=ci.invoicePlanID " + + " inner join %s cb on ci.classifybasket_id=cb.id " + " inner join ClassifyBasket_WashRecord cw on cw.ClassifyBasket_ID=cb.id " - + " inner join WashAndDisinfectRecord wr on cw.WashAndDisinfectRecord_ID=wr.id " - + " inner join DepartmentStock ds on ds.tousseDefinition_id=td.id " - + " inner join PackingTask pt on pt.classifyBasket_id=cb.id and pt.tousseDefinition_id=td.id and pt.washRecord_id=wr.id " - + " where td.name='%s' and ip.departCoding=ds.departCoding and ds.departCoding='%s' and wr.id is not null %s ", tousseName, departCode, disinfectedDateSql); + + " inner join %s wr on cw.WashAndDisinfectRecord_ID=wr.id " + + " inner join %s ds on ds.tousseDefinition_id=td.id " + + " inner join %s pt on pt.classifyBasket_id=cb.id and pt.tousseDefinition_id=td.id and pt.washRecord_id=wr.id " + + " where td.name='%s' and ip.departCoding=ds.departCoding and ds.departCoding='%s' and wr.id is not null %s ", + ClassifiedItem.class.getSimpleName(),TousseDefinition.class.getSimpleName(),InvoicePlan.class.getSimpleName(), + ClassifyBasket.class.getSimpleName(),WashAndDisinfectRecord.class.getSimpleName(),DepartmentStock.class.getSimpleName(), + PackingTask.class.getSimpleName(), tousseName, departCode, disinfectedDateSql); }else{ - sql = String.format("select %s from TousseInstance ti %s " + sql = String.format("select %s from %s ti %s " + " where status = '%s' and tousseFixedBarcode=0 and ti.departCoding=ds.departCoding and ti.departCoding='%s' and ti.tousseName='%s' and comboTousseInstanceId is null %s", - querySql, joinSql, status, departCode, tousseName, tiDateSql); + querySql, TousseInstance.class.getSimpleName(), joinSql, status, departCode, tousseName, tiDateSql); } return sql; } @@ -6162,9 +6172,13 @@ } }else if(TousseInstance.STATUS_SHIPPED.equals(status)){ Date invoiceSendTime = rs.getTimestamp("invoiceSendTime"); + Date validUntil = rs.getTimestamp("validUntil"); String invoiceSender = rs.getString("invoiceSender"); String barcode = rs.getString("barcode"); obj.put("barcode", barcode); + if(validUntil != null){ + obj.put("validUntil", sdf.format(validUntil)); + } if(invoiceSendTime != null){ obj.put("invoiceSendTime", sdf.format(invoiceSendTime)); } @@ -6209,34 +6223,38 @@ StringBuffer usedDateSql = new StringBuffer("");//已使用未回收的数量的时间查询条件 setDateSql(tiDateSql, recyDateSql, disinfectedDateSql, usedDateSql); //各种状态下的包实例数量,不包括聚合包、状态为已消毒、已回收、已使用的包数量的数量 - String tiSql = String.format("select count(*) amount ,status from TousseInstance ti " - + " inner join DepartmentStock ds on ds.tousseDefinition_id=ti.tousseDefinition_id " + String tiSql = String.format("select count(*) amount ,status from %s ti " + + " inner join %s ds on ds.tousseDefinition_id=ti.tousseDefinition_id " + " where ti.departCoding=ds.departCoding and ti.departCoding='%s' and tousseFixedBarcode=0 and ti.tousseName='%s' and comboTousseInstanceId is null and status<>'%s' and status<>'%s' and status <> '%s' %s group by status ", - departCode, tousseName, TousseInstance.STATUS_RECYCLED, TousseInstance.STATUS_DISINFECTED, TousseInstance.STATUS_USED, tiDateSql); + TousseInstance.class.getSimpleName(),DepartmentStock.class.getSimpleName(), departCode, tousseName, TousseInstance.STATUS_RECYCLED, TousseInstance.STATUS_DISINFECTED, TousseInstance.STATUS_USED, tiDateSql); //已回收未清洗的包数量(非包实例数量) - String recySql = String.format("select sum(ci.amount) amount,'%s' status from RecyclingItem ri " - + " inner join RecyclingRecord rr on ri.recyclingRecord_id=rr.id " - + " inner join invoicePlan ip on ip.id=rr.recyclingApplication_id " - + " inner join ClassifiedItem ci on ci.recyclingRecordId= rr.id " - + " inner join ClassifyBasket cb on ci.classifybasket_id=cb.id " - + " inner join DepartmentStock ds on ds.tousseDefinition_id=ri.tousseDefinitionId " - + " where ri.tousseDefinitionId=ci.tousseDefinitionid and ip.departCoding=ds.departCoding and ri.tousseName='%s' and ds.departCoding='%s' and cb.washStartTime is null %s ", TousseInstance.STATUS_RECYCLED, tousseName, departCode, recyDateSql); + String recySql = String.format("select sum(ci.amount) amount,'%s' status from %s ri " + + " inner join %s rr on ri.recyclingRecord_id=rr.id " + + " inner join %s ip on ip.id=rr.recyclingApplication_id " + + " inner join %s ci on ci.recyclingRecordId= rr.id " + + " inner join %s cb on ci.classifybasket_id=cb.id " + + " inner join %s ds on ds.tousseDefinition_id=ri.tousseDefinitionId " + + " where ri.tousseDefinitionId=ci.tousseDefinitionid and ip.departCoding=ds.departCoding and ri.tousseName='%s' and ds.departCoding='%s' and cb.washStartTime is null %s ", + TousseInstance.STATUS_RECYCLED, RecyclingItem.class.getSimpleName(), RecyclingRecord.class.getSimpleName(), + InvoicePlan.class.getSimpleName(),ClassifiedItem.class.getSimpleName(),ClassifyBasket.class.getSimpleName(), + DepartmentStock.class.getSimpleName(), tousseName, departCode, recyDateSql); //已消毒未装配的包数量(非包实例数量) - String disinfectedSql = String.format("select sum(unPackAmount) amount,'%s' status from ClassifiedItem ci " - + " inner join TousseDefinition td on td.id=ci.tousseDefinitionID inner join invoicePlan ip on ip.id=ci.invoicePlanID inner join ClassifyBasket cb on ci.classifybasket_id=cb.id " + String disinfectedSql = String.format("select sum(unPackAmount) amount,'%s' status from %s ci " + + " inner join %s td on td.id=ci.tousseDefinitionID inner join invoicePlan ip on ip.id=ci.invoicePlanID inner join ClassifyBasket cb on ci.classifybasket_id=cb.id " + " inner join ClassifyBasket_WashRecord cw on cw.ClassifyBasket_ID=cb.id " - + " inner join WashAndDisinfectRecord wr on cw.WashAndDisinfectRecord_ID=wr.id " - + " inner join DepartmentStock ds on ds.tousseDefinition_id=td.id " - + " inner join PackingTask pt on pt.classifyBasket_id=cb.id and pt.tousseDefinition_id=td.id and pt.washRecord_id=wr.id " + + " inner join %s wr on cw.WashAndDisinfectRecord_ID=wr.id " + + " inner join %s ds on ds.tousseDefinition_id=td.id " + + " inner join %s pt on pt.classifyBasket_id=cb.id and pt.tousseDefinition_id=td.id and pt.washRecord_id=wr.id " + " where td.name='%s' and ip.departCoding=ds.departCoding and ds.departCoding='%s' and wr.id is not null %s", - TousseInstance.STATUS_DISINFECTED, tousseName, departCode, disinfectedDateSql); + TousseInstance.STATUS_DISINFECTED,ClassifiedItem.class.getSimpleName(),TousseDefinition.class.getSimpleName(), + WashAndDisinfectRecord.class.getSimpleName(),DepartmentStock.class.getSimpleName(),PackingTask.class.getSimpleName(), tousseName, departCode, disinfectedDateSql); //已使用未回收数量(目前只统计了由使用记录转过来的申请单) - String usedSql = String.format("select count(*) amount,'%s' status from TousseInstance ti" - + " join UseRecord ur on ur.id=ti.useRecord_id " - + " inner join DepartmentStock ds on ds.tousseDefinition_id=ti.tousseDefinition_id " + String usedSql = String.format("select count(*) amount,'%s' status from %s ti" + + " join %s ur on ur.id=ti.useRecord_id " + + " inner join %s ds on ds.tousseDefinition_id=ti.tousseDefinition_id " + " where ti.useRecord_id is not null and ti.departCoding=ds.departCoding and ds.departCoding='%s' and ti.tousseName='%s' " - + " and ti.recyclingItemId is null %s", TousseInstance.STATUS_USED, departCode, tousseName, usedDateSql); - + + " and ti.recyclingItemId is null %s", TousseInstance.STATUS_USED,TousseInstance.class.getSimpleName(),UseRecord.class.getSimpleName(), + DepartmentStock.class.getSimpleName(), departCode, tousseName, usedDateSql); String sql = String.format("%s union all %s union all %s union all %s ", tiSql, recySql, disinfectedSql, usedSql); return sql; } Index: ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockNumberDetails.js =================================================================== diff -u -r26722 -r26723 --- ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockNumberDetails.js (.../departmentStockNumberDetails.js) (revision 26722) +++ ssts-web/src/main/webapp/disinfectsystem/departmentStock/departmentStockNumberDetails.js (.../departmentStockNumberDetails.js) (revision 26723) @@ -146,12 +146,14 @@ {name : 'id'}, {name : 'invoiceSendTime'}, {name : 'invoiceSender'}, + {name : 'validUntil'}, {name : 'barcode'} ) cms.push( {header : "id",dataIndex : 'id',menuDisabled:true,hidden:true}, {header : "发货时间",width :90,dataIndex : 'invoiceSendTime',menuDisabled:true}, {header : "发货员",width : 90,dataIndex : 'invoiceSender',menuDisabled:true}, + {header : "失效期 ",width :120,dataIndex : 'validUntil',menuDisabled:true}, {header : "包条码",width : 90,dataIndex : 'barcode',menuDisabled:true} ) } Index: ssts-web/src/main/webapp/dataUpdater/sqls/4.9.36_4.9.37.sql =================================================================== diff -u -r26718 -r26723 --- ssts-web/src/main/webapp/dataUpdater/sqls/4.9.36_4.9.37.sql (.../4.9.36_4.9.37.sql) (revision 26718) +++ ssts-web/src/main/webapp/dataUpdater/sqls/4.9.36_4.9.37.sql (.../4.9.36_4.9.37.sql) (revision 26723) @@ -1 +1 @@ -update ds set ds.tousseDefinition_id=(select ancestorID from TousseDefinition td where ( tousseType = '器械包' or tousseType = '敷料包' or tousseType = '自制物品') and forDisplay <> 0 and name=ds.tousseName) from DepartmentStock ds where tousseDefinition_id is null; \ No newline at end of file +update DepartmentStock set tousseDefinition_id=(select ancestorID from TousseDefinition td where ( tousseType = '器械包' or tousseType = '敷料包' or tousseType = '自制物品') and forDisplay <> 0 and name=DepartmentStock.tousseName) where tousseDefinition_id is null; \ No newline at end of file