Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodBatchStockManagerImpl.java =================================================================== diff -u -r14586 -r15648 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodBatchStockManagerImpl.java (.../DiposableGoodBatchStockManagerImpl.java) (revision 14586) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodBatchStockManagerImpl.java (.../DiposableGoodBatchStockManagerImpl.java) (revision 15648) @@ -29,6 +29,8 @@ import com.forgon.tools.Constants; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.db.InitDbConnection; +import com.forgon.tools.hibernate.BasePoManager; +import com.forgon.tools.hibernate.BasePoManagerImpl; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.string.StringTools; import com.forgon.tools.util.SqlUtils; @@ -38,15 +40,15 @@ * * 2012-4-27 上午10:20:04 */ -public class DiposableGoodBatchStockManagerImpl implements +public class DiposableGoodBatchStockManagerImpl extends BasePoManagerImpl implements DiposableGoodBatchStockManager { - - + public DiposableGoodBatchStockManagerImpl() { + super(DisposableGoodsBatchStock.class); + } + private static final Logger logger = Logger .getLogger(DiposableGoodBatchStockManagerImpl.class); - - private ObjectDao objectDao; private BarcodeManager barcodeManager; @@ -74,10 +76,6 @@ this.dateQueryAdapter = dateQueryAdapter; } - public void setObjectDao(ObjectDao objectDao) { - this.objectDao = objectDao; - } - public void setBarcodeManager(BarcodeManager barcodeManager) { this.barcodeManager = barcodeManager; } @@ -225,6 +223,35 @@ return objectDao.findBySql( DisposableGoodsBatchStock.class.getSimpleName(), sql); } + public DisposableGoodsBatchStock getDisposableGoodsBatchStock(Long disposableGoodsId,String orgUnitCoding){ + Date validUntil = new Date(); + String validUntilSql = " " + + dateQueryAdapter.dateConverAdapter2(com.forgon.Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(validUntil), + "yyyy-mm-dd HH24:MI:SS"); + + String validUntilStr = String.format(" ( %s > %s) ", "po.expDate", validUntilSql); + String storageStr = "i.amount>0"; + String orderBy = "order by i.id"; + String wareHouseStr = SqlUtils.getNonStringFieldInCollectionsPredicate("i.warehouseID", wareHouseManager.getWareHouseIdsByUnitCode(orgUnitCoding)); + String sqlformat = "select distinct po from %s po inner join fetch po.identifications i where %s and %s and (%s) and ( po.disposableGoodsId = %d) %s "; + String queryString = String.format(sqlformat,DisposableGoodsBatchStock.class.getSimpleName(),validUntilStr,storageStr, + wareHouseStr,disposableGoodsId,orderBy); + List stocks = objectDao.findByHql(queryString); + if(CollectionUtils.isNotEmpty(stocks)){ + return stocks.get(0); + }else{ + //获取库存为0的最后一次和入库的批次 + storageStr = "1=1"; + orderBy = "order by i.id desc"; + queryString = String.format(sqlformat,DisposableGoodsBatchStock.class.getSimpleName(),validUntilStr,storageStr, + wareHouseStr,disposableGoodsId,orderBy); + stocks = objectDao.findByHql(queryString); + if(CollectionUtils.isNotEmpty(stocks)){ + return stocks.get(0); + } + } + return null; + } @SuppressWarnings("unchecked") @Override public List getDisposableGoodsBatchStockByDisposableGoodsId( Index: ssts-print/src/main/java/com/forgon/disinfectsystem/print/vo/PrintRowVo.java =================================================================== diff -u -r15598 -r15648 --- ssts-print/src/main/java/com/forgon/disinfectsystem/print/vo/PrintRowVo.java (.../PrintRowVo.java) (revision 15598) +++ ssts-print/src/main/java/com/forgon/disinfectsystem/print/vo/PrintRowVo.java (.../PrintRowVo.java) (revision 15648) @@ -1,5 +1,7 @@ package com.forgon.disinfectsystem.print.vo; +import com.forgon.tools.string.StringTools; + /** * @author WangYi * @@ -35,6 +37,18 @@ * 外部编码 */ private String externalCode; + /** + * 批次 + */ + private String batchNumber; + /** + * 灭菌批号 + */ + private String sterileBatchNumber; + /** + * 生产厂家 + */ + private String manufacturer; private Double price; @@ -171,11 +185,35 @@ } public String getExternalCode() { - return externalCode; + return StringTools.defaultIfBlank(externalCode,""); } public void setExternalCode(String externalCode) { this.externalCode = externalCode; } + + public String getBatchNumber() { + return StringTools.defaultIfBlank(batchNumber,""); + } + + public void setBatchNumber(String batchNumber) { + this.batchNumber = batchNumber; + } + + public String getSterileBatchNumber() { + return StringTools.defaultIfBlank(sterileBatchNumber,""); + } + + public void setSterileBatchNumber(String sterileBatchNumber) { + this.sterileBatchNumber = sterileBatchNumber; + } + + public String getManufacturer() { + return StringTools.defaultIfBlank(manufacturer,""); + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } } Index: ssts-web/src/main/webapp/disinfectsystem/config/gdsy/print/printConfig.js =================================================================== diff -u -r15642 -r15648 --- ssts-web/src/main/webapp/disinfectsystem/config/gdsy/print/printConfig.js (.../printConfig.js) (revision 15642) +++ ssts-web/src/main/webapp/disinfectsystem/config/gdsy/print/printConfig.js (.../printConfig.js) (revision 15648) @@ -232,10 +232,13 @@ position : ["49","1%","99%","2000"], content : [ {header : "编码", dataIndex : 'externalCode', width : 80, align : 'center', fontSize : 11}, - {header : "名称", dataIndex : 'goodsName', width : 300, align : 'left', fontSize : 11}, + {header : "名称", dataIndex : 'goodsName', width : 200, align : 'left', fontSize : 11}, {header : "申领规格", dataIndex : 'sp', width : 160, align : 'left', fontSize : 11}, - {header : "申领单位", dataIndex : 'unit', width : 90, align : 'center', fontSize : 11}, - {header : "发放数量", dataIndex : 'applyAmount', width : 90, align : 'center', fontSize : 11} + {header : "申领单位", dataIndex : 'unit', width : 80, align : 'center', fontSize : 11}, + {header : "发放数量", dataIndex : 'applyAmount', width : 80, align : 'center', fontSize : 11}, + {header : "生产批号", dataIndex : 'batchNumber', width : 80, align : 'center', fontSize : 11}, + {header : "灭菌日期", dataIndex : 'sterileBatchNumber', width : 80, align : 'center', fontSize : 11}, + {header : "生产厂家", dataIndex : 'manufacturer', width : 90, align : 'center', fontSize : 11} // {header : "回收数量", dataIndex : 'recyclingAmount', width : 70, align : 'center', fontSize : 11} //{header : "单位", dataIndex : 'unit', width : 60, align : 'left', fontSize : 11}, ] Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodBatchStockManager.java =================================================================== diff -u -r13906 -r15648 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodBatchStockManager.java (.../DiposableGoodBatchStockManager.java) (revision 13906) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodBatchStockManager.java (.../DiposableGoodBatchStockManager.java) (revision 15648) @@ -11,13 +11,14 @@ import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsIdentification; import com.forgon.disinfectsystem.exception.RecyclingRecordException; import com.forgon.disinfectsystem.vo.DiposableGoodsStorageVo; +import com.forgon.tools.hibernate.BasePoManager; /** * @author JamZhou * * 2012-4-27 上午10:19:24 */ -public interface DiposableGoodBatchStockManager { +public interface DiposableGoodBatchStockManager extends BasePoManager { public void saveOrUpdate(DisposableGoodsBatchStock diposableGoodBatchStock); @@ -75,4 +76,12 @@ Long disposableGoodsBatchStockId); public List getDisposableGoodsBatchStockBySql(String sql); + /** + * 根据一次性物品id和科室编码,获取批次库存。首先获取库存数量大于0的,此时取最早入库的批次。如果没有库存数据大于0的,则取最后一次入库的批次。 + * 如果根本没有入过库,则返回null + * @param disposableGoodsId + * @param orgUnitCoding + * @return + */ + public DisposableGoodsBatchStock getDisposableGoodsBatchStock(Long disposableGoodsId,String orgUnitCoding); } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r15637 -r15648 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 15637) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 15648) @@ -55,9 +55,11 @@ import com.forgon.disinfectsystem.common.CSSDConstants; import com.forgon.disinfectsystem.common.Constants; import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodBatchStockManager; import com.forgon.disinfectsystem.diposablegoods.service.DiposableGoodsManager; import com.forgon.disinfectsystem.entity.assestmanagement.DiposableGoodsInstance; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.taskGroup.TaskGroup; @@ -138,6 +140,8 @@ private InvoicePlanManager invoicePlanManager; + private DiposableGoodBatchStockManager diposableGoodBatchStockManager; + public void setGoodsStockManager(GoodsStockManager goodsStockManager) { this.goodsStockManager = goodsStockManager; } @@ -203,6 +207,11 @@ this.invoicePlanManager = invoicePlanManager; } + public void setDiposableGoodBatchStockManager( + DiposableGoodBatchStockManager diposableGoodBatchStockManager) { + this.diposableGoodBatchStockManager = diposableGoodBatchStockManager; + } + @Override public void saveOrUpdate(RecyclingApplication recyclingApplication) { AclTools.addStartAndEndToken(recyclingApplication); @@ -2312,7 +2321,7 @@ * @return */ private PrintRowVo tousseItem2PrintVo(TousseItem tousseItem, boolean isPrintApplyInfo, String invoiceOrigin, boolean afterRecyclingTousseDeliver) { - PrintRowVo rowVo = null; + PrintRowVo rowVo = new PrintRowVo(); String name = tousseItem.getTousseName(); String tousseType = tousseItem.getTousseType(); @@ -2413,6 +2422,16 @@ disposableGoods = diposableGoodsManager.getDisposableGoodsByName(name, sp); } if (disposableGoods != null){ + if(tousseItem.getInvoicePlan() != null){ + DisposableGoodsBatchStock batchStock = diposableGoodBatchStockManager.getDisposableGoodsBatchStock( + disposableGoods.getId(), tousseItem.getInvoicePlan().getHandleDepartCoding()); + if(batchStock != null){ + rowVo.setBatchNumber(batchStock.getBatchNumber()); + rowVo.setSterileBatchNumber(batchStock.getSterileBatchNumber()); + rowVo.setManufacturer(batchStock.getManufacturer()); + } + } + packageSpec = StringTools.defaultString(disposableGoods.getPackageSpec()); unit = StringTools.defaultString(disposableGoods.getUnit()); externalCode = StringTools.defaultString(disposableGoods.getExternalCode()); @@ -2469,8 +2488,7 @@ sp = td.getPackageType(); } */ - } - rowVo = new PrintRowVo(); + } rowVo.setExternalCode(externalCode); rowVo.setTousseItemId(tousseItem.getId()); Index: ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsTemplateApplicationView.js =================================================================== diff -u -r15633 -r15648 --- ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsTemplateApplicationView.js (.../goodsTemplateApplicationView.js) (revision 15633) +++ ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsTemplateApplicationView.js (.../goodsTemplateApplicationView.js) (revision 15648) @@ -3583,7 +3583,12 @@ config.isMergePrintTousseAndDisposable = false; config.printApplyInfo = false; var printParams = getPrintJsonParams("print", ids , config); - formTypeOfPrinted = "invoicePlan"; + if(isUndefinedOrNullOrEmpty(printConfig.invoicePlan_disposableGoods)){ + formTypeOfPrinted = "invoicePlan"; + }else{ + formTypeOfPrinted = "invoicePlan_disposableGoods"; + } + printApplyGoods(printParams,0,SSTS_PrintApplicationGoods,null); } });