Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/invoiceQueryView.js =================================================================== diff -u -r15302 -r15305 --- ssts-web/src/main/webapp/disinfectsystem/reportforms/invoiceQueryView.js (.../invoiceQueryView.js) (revision 15302) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/invoiceQueryView.js (.../invoiceQueryView.js) (revision 15305) @@ -37,6 +37,11 @@ settleDepartSearch = array[array.length-1]; } + var showCustonTousseAmount = false; + if(sstsConfig.hasOwnProperty('isMonthReportShowCustonTousseAmount') && sstsConfig.isMonthReportShowCustonTousseAmount){ + showCustonTousseAmount = true; + } + myMask = new Ext.LoadMask(Ext.getBody(), { msg: '正在加载,请稍候!', removeMask: true @@ -48,14 +53,14 @@ + departSearch+ "&settleDepartSearch=" + settleDepartSearch +"&startDate=" + startDate + "&endDate=" +endDate + "&applicant=" + applicant + "&goodsName=" +goodsName + "&hasRemark=" +hasRemark - + "&goodsType=" + goodsType + + "&goodsType=" + goodsType + "&showCustonTousseAmount="+showCustonTousseAmount + "&batchNumber=" + batchNumber + "&hospitalNumber=" + hospitalNumber,'thisIframe', '_self'); }else{ window.open(WWWROOT + "/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do?jasperreportName=invoiceItemsQuery_main_1.jasper&reportName=invoiceQuery&depart=" + departSearch+ "&settleDepartSearch=" + settleDepartSearch +"&startDate=" + startDate + "&endDate=" +endDate + "&applicant=" + applicant + "&goodsName=" +goodsName + "&hasRemark=" +hasRemark - + "&goodsType=" + goodsType + + "&goodsType=" + goodsType + "&showCustonTousseAmount="+showCustonTousseAmount + "&batchNumber=" + batchNumber  + "&hospitalNumber=" + hospitalNumber,'thisIframe', '_self'); } } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/InvoiceQueryItem.java =================================================================== diff -u -r15302 -r15305 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/InvoiceQueryItem.java (.../InvoiceQueryItem.java) (revision 15302) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/InvoiceQueryItem.java (.../InvoiceQueryItem.java) (revision 15305) @@ -160,7 +160,7 @@ * 计算单价。由于数量有可能是按包计算,也有可能是按材料计算,同一个包,总价是一样的,但是数量可能不一样,导致单价会不一样,所以用总价除以数量来计算单价 */ public void calcPrice(){ - setPrice(MathTools.divide(getTotalPrice(), getAmount(), 4)); + setPrice(MathTools.divide(getTotalPrice(), getAmount(), 2)); } public String getRemark() { Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r15302 -r15305 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 15302) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 15305) @@ -6834,6 +6834,8 @@ String goodsName = requestParams.get("goodsName"); String batchNumber = requestParams.get("batchNumber"); String hospitalNumber = requestParams.get("hospitalNumber"); + String showCustonTousseAmountStr = requestParams.get("showCustonTousseAmount"); + Boolean showCustonTousseAmount = Boolean.valueOf(showCustonTousseAmountStr); String goodsType = StringTools.defaultIfEmpty(requestParams.get("goodsType"),"全部"); String tousseTypeSql = " 1=1 "; String disposableTypeSql = " 1=1 "; @@ -6894,22 +6896,27 @@ hospitalNumberSql = " and po.hospitalNumber = '" + hospitalNumber + "' "; } + String tousseMaterialAmount = " select ctd.id, sum(cmi.count) as mcount from TousseDefinition ctd inner join MaterialInstance cmi on ctd.id = cmi.tousse_id group by ctd.id "; + String cumstomTousseAmount = showCustonTousseAmount?" 1 ":" m.mcount "; + String tousseAmount = " case td.toussetype when '"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"' then " + cumstomTousseAmount + + " when '"+TousseDefinition.PACKAGE_TYPE_DISINFECTION+"' then m.mcount else 1 end "; String sql = " "; - String tousseSql = "select '器械包' as type,po.orgUnitCoding,po.settleAccountsDepart,po.depart,do.barcode,bo.tousseName as name,bo.price / bo.statisticsAmount as price," - + " statisticsAmount as amount,bo.price as totalPrice,po.sendTime,po.applicant,'' as batch,'' as externalCode,po.remark as remark,bo.sterileEndTime as sterileEndTime," + String tousseSql = "select '器械包' as type,po.orgUnitCoding,po.settleAccountsDepart,po.depart,do.barcode,bo.tousseName as name," + + tousseAmount + " as amount,bo.price as totalPrice,po.sendTime,po.applicant,'' as batch,'' as externalCode,po.remark as remark,bo.sterileEndTime as sterileEndTime," + "bo.sterilizerName as sterilizerName,bo.sterileFrequency as sterileFrequency,po.hospitalNumber as hospitalNumber,po.sender,po.assistantSender,bo.validUntil as expDate from " + Invoice.class.getSimpleName() + " po inner join " + TousseInstance.class.getSimpleName() + " bo on po.id = bo.invoice_id " + " inner join " + BarcodeDevice.class.getSimpleName()+ " do on bo.id = do.id" + " inner join " + TousseDefinition.class.getSimpleName() + " td on bo.tousseDefinition_id=td.id " + + " inner join (" + tousseMaterialAmount + " ) m on m.id = td.id" +" where 1=1 " + remarkCondition + hospitalNumberSql + " and " + tousseTypeSql; - String diposableSql = "select '一次性物品' as type,po.orgUnitCoding, po.settleAccountsDepart,po.depart,bo.barcode,bo.name,bo.price,bo.amount,bo.price*bo.amount as totalPrice," + String diposableSql = "select '一次性物品' as type,po.orgUnitCoding, po.settleAccountsDepart,po.depart,bo.barcode,bo.name,bo.amount,bo.price*bo.amount as totalPrice," + "po.sendTime,po.applicant,bo.batch,dg.externalCode,po.remark as remark,'' as sterileEndTime,'' as sterilizerName,'' as sterileFrequency," + "po.hospitalNumber as hospitalNumber,po.sender,po.assistantSender,dgbs.expDate from " + Invoice.class.getSimpleName() + " po," + DiposableGoodsItem.class.getSimpleName()+" bo," + DisposableGoods.class.getSimpleName() + " dg,"+ DisposableGoodsBatchStock.class.getSimpleName() +" dgbs where po.id = bo.invoice_id and " + " bo.disposableGoodsBatchStockID=dgbs.id and " + "bo.disposableGoodsID = dg.id " + remarkCondition + hospitalNumberSql + " and " + disposableTypeSql; - String materialSql = "select '材料' as type,po.orgUnitCoding, po.settleAccountsDepart,po.depart,'' as barcode,bo.name as name,bo.price as price,bo.amount,bo.price*bo.amount as totalPrice," + String materialSql = "select '材料' as type,po.orgUnitCoding, po.settleAccountsDepart,po.depart,'' as barcode,bo.name as name,bo.amount,bo.price*bo.amount as totalPrice," + "po.sendTime,'' as applicant,'' as batch,dg.externalCode,po.remark as remark,'' as sterileEndTime,'' as sterilizerName,'' as sterileFrequency," + "'' as hospitalNumber,po.sender,'' as assistantSender,null as expDate from " + MaterialInvoice.class.getSimpleName() + " po inner join " + MaterialItem.class.getSimpleName() + " bo on po.id = bo.materialInvoice_id " @@ -6960,7 +6967,6 @@ String departStr = rs2.getString("settleAccountsDepart"); item.setBarcode(rs2.getString("barcode")); item.setGoodsName(rs2.getString("name")); - item.setPrice(rs2.getDouble("price")); item.setAmount(rs2.getInt("amount")); Integer amount = item.getAmount(); item.setTotalPrice(rs2.getDouble("totalPrice"));