Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r13316 -r13476 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 13316) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 13476) @@ -32,6 +32,7 @@ import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.util.JRLoader; +import net.sf.json.JSONObject; import org.apache.commons.lang.StringUtils; import org.apache.struts2.convention.annotation.Action; @@ -62,6 +63,7 @@ import com.forgon.disinfectsystem.entity.satisfactionsurvey.SatisfactionSurveyTable; import com.forgon.disinfectsystem.entity.satisfactionsurvey.SatisfactionSurveyTableItem; import com.forgon.disinfectsystem.entity.satisfactionsurvey.SatisfactionSurveyTemplate; +import com.forgon.disinfectsystem.entity.stocktakerecordmanager.MonthGoodsDetailVo; import com.forgon.disinfectsystem.entity.stocktakerecordmanager.StockTakeRecord; import com.forgon.disinfectsystem.jasperreports.javabeansource.EighteenQuotaBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.InvoiceAmountContrastBean; @@ -260,13 +262,18 @@ public List getDataSourceList(String reportName) throws SQLException, ParseException { if (reportName.equals("stocktakereport")) {// 物资收发明细 - String startId = StrutsParamUtils.getPraramValue("startId", ""); - String endId = StrutsParamUtils.getPraramValue("endId", ""); + Long warehouseId = StrutsParamUtils.getPraramLongValue("warehouseId", null); + String startDate = StrutsParamUtils.getPraramValue("startDate", ""); + String endDate = StrutsParamUtils.getPraramValue("endDate", ""); String materialType = StrutsParamUtils.getPraramValue("type", ""); String summaryType = StrutsParamUtils.getPraramValue("summaryType", ""); - StockTakeRecord startRecord = getStockTakeRecord(startId); - StockTakeRecord endRecord = getStockTakeRecord(endId); - return jasperReportManager.getStockTakeList(startRecord,endRecord,materialType,summaryType); + StockTakeRecord startRecord = getStockTakeRecord(startDate,warehouseId); + StockTakeRecord endRecord = getStockTakeRecord(endDate,warehouseId); + if(startRecord != null && endRecord != null){ + return jasperReportManager.getStockTakeList(startRecord,endRecord,materialType,summaryType); + }else{ + return new ArrayList(); + } }else if (reportName.equals("QualityMonitoring")) {// 质量监测 return getQualityMonitoringDataSource(); } else if (reportName.equals("departSatisfyReport")) {// 满意度调查报表 @@ -904,12 +911,48 @@ return jasperReportManager.getPackingFDSource(month,querySupplyRoom); } - public StockTakeRecord getStockTakeRecord(String recordId){ - if(StringUtils.isNotBlank(recordId)){ - return (StockTakeRecord)objectDao.getByProperty(StockTakeRecord.class.getSimpleName(), "id", Long.valueOf(recordId)); + public StockTakeRecord getStockTakeRecord(String date,Long warehouseId){ + if(StringUtils.isNotBlank(date) && warehouseId != null){ + String startDate = dateQueryAdapter.dateAdapter(date + " 00:00:00"); + String endDate = dateQueryAdapter.dateAdapter(date + " 23:59:59"); + String sql = "where po.stockTakeDate between "+startDate+" and " + endDate + " and po.warehouseId = "+warehouseId+" order by po.id desc"; + @SuppressWarnings("unchecked") + List list = objectDao.findBySql(StockTakeRecord.class.getSimpleName(), sql); + if(list != null && list.size() > 0){ + return list.get(0); + } } return null; } + + public void getStockTakeRecordByDate(){ + String startDate = StrutsParamUtils.getPraramValue("startDate", ""); + Long warehouseId = StrutsParamUtils.getPraramLongValue("warehouseId", null); + StockTakeRecord record = getStockTakeRecord(startDate,warehouseId); + JSONObject obj = new JSONObject(); + boolean success = true; + String msg = ""; + if(record == null){ + success = false; + msg = startDate + "未找到当天的结算记录!"; + }else{ + String endDate = StrutsParamUtils.getPraramValue("endDate", ""); + StockTakeRecord record2 = getStockTakeRecord(endDate,warehouseId); + if(record2 == null){ + success = false; + msg = endDate + "未找到当天的结算记录!"; + } + } + obj.put("success", success); + obj.put("msg", msg); + HttpServletResponse response = StrutsParamUtils.getResponse(); + response.setCharacterEncoding("UTF-8"); + try { + response.getWriter().write(obj.toString()); + } catch (IOException e) { + e.printStackTrace(); + } + } /** * 获取需要的参数 @@ -926,12 +969,13 @@ String childPath = rootPath + "\\jasperRtp\\"; map.put("SUBREPORT_DIR", childPath);// 指定子报表路径,默认为ireport的编译路径 if (reportName.equals("stocktakereport")){ - String startId = StrutsParamUtils.getPraramValue("startId", ""); - String endId = StrutsParamUtils.getPraramValue("endId", ""); + Long warehouseId = StrutsParamUtils.getPraramLongValue("warehouseId", null); + String startDateStr = StrutsParamUtils.getPraramValue("startDate", ""); + String endDateStr = StrutsParamUtils.getPraramValue("endDate", ""); String materialType = StrutsParamUtils.getPraramValue("type", ""); String summaryType = StrutsParamUtils.getPraramValue("summaryType", ""); - StockTakeRecord startRecord = getStockTakeRecord(startId); - StockTakeRecord endRecord = getStockTakeRecord(endId); + StockTakeRecord startRecord = getStockTakeRecord(startDateStr,warehouseId); + StockTakeRecord endRecord = getStockTakeRecord(endDateStr,warehouseId); SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd HH:mm"); String startDate = ""; String endDate = ""; Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/stocktakeView.jsp =================================================================== diff -u -r13224 -r13476 --- ssts-web/src/main/webapp/disinfectsystem/reportforms/stocktakeView.jsp (.../stocktakeView.jsp) (revision 13224) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/stocktakeView.jsp (.../stocktakeView.jsp) (revision 13476) @@ -16,6 +16,10 @@ var inventoryRecordId = '${param.id}'; var projectName = '${profile}'; + + + + 结算报表 Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/stocktakeView.js =================================================================== diff -u -r13299 -r13476 --- ssts-web/src/main/webapp/disinfectsystem/reportforms/stocktakeView.js (.../stocktakeView.js) (revision 13299) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/stocktakeView.js (.../stocktakeView.js) (revision 13476) @@ -7,31 +7,51 @@ var type = Ext.getCmp('type').getValue(); var summaryType = Ext.getCmp('summaryType').getValue(); - var reportName = "stocktakereport.jasper"; if(projectName == "gzzyyfs"){ reportName = "stocktakereportZYYFS.jasper"; } if(summaryType == '汇总'){ reportName = "stocktakeSummaryReport.jasper" } - var startId = Ext.getCmp('recordStartDate').getValue(); - var endId = Ext.getCmp('recordEndDate').getValue(); - var warehouseName = Ext.getCmp('wareHouseName').getRawValue(); - if(warehouseName == ""){ + var startDate = $Id('startDate').value; + var endDate = $Id('endDate').value;; + var warehouseId = Ext.getCmp('wareHouseName').getValue(); + if(warehouseId == ""){ showResult("仓库不能为空!"); return false; } - if(startId == "" || endId == ""){ - showResult("期初库存、期末库存不能为空!"); + if(startDate == "" || endDate == ""){ + showResult("开始日期、结束日期不能为空!"); return false; } + myMask = new Ext.LoadMask(Ext.getBody(), { msg: '正在加载,请稍候!', removeMask: true }); - myMask.show(); - window.open(WWWROOT+"/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do?jasperreportName="+reportName+"&reportName=stocktakereport&startId="+startId+"&endId="+endId+"&warehouseName="+warehouseName+"&summaryType=" + summaryType + "&type=" + type,'thisIframe','_self'); + + Ext.Ajax.request({ + url : WWWROOT + '/jasperreports/jasperreportsAction!getStockTakeRecordByDate.do', + params : { + startDate : startDate, + endDate : endDate, + warehouseId : warehouseId + }, + success : function(response, options) { + var result = Ext.decode(response.responseText); + if(result.success){ + myMask.show(); + window.open(WWWROOT+"/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do?jasperreportName="+reportName+"&reportName=stocktakereport&startDate="+startDate+"&endDate="+endDate+"&warehouseId="+warehouseId+"&summaryType=" + summaryType + "&type=" + type,'thisIframe','_self'); + }else{ + showResult(result.msg); + } + }, + failure : function(response, options) { + var result = Ext.decode(response.responseText); + showResult(result.msg); + } + }); } var diposableGoodsTypeStore = new Ext.data.SimpleStore({ @@ -55,37 +75,14 @@ load : function(store,records) { if(records.length > 0 && Ext.getCmp("wareHouseName").getRawValue() == "") { Ext.getCmp("wareHouseName").setValue(records[0].data.id); - loadStockTakeRecordStore(records[0].data.id) } } } }); - var startStockTakeStore = new Ext.data.JsonStore({ - url : WWWROOT + '/disinfectSystem/stockTakerRecordAction!loadStockTakerRecords.do', - root: 'data', - fields: [ - {name : 'id',mapping : 'id'}, - {name : 'dateTime',mapping : 'dateTime'} - ] - }); + var dt = new Date(); + var startDayofMonth = dt.getFullYear() + "/" + (dt.getMonth() + 1) + "/1"; - var endStockTakeStore = new Ext.data.JsonStore({ - url : WWWROOT + '/disinfectSystem/stockTakerRecordAction!loadStockTakerRecords.do', - root: 'data', - fields: [ - {name : 'id',mapping : 'id'}, - {name : 'dateTime',mapping : 'dateTime'} - ] - }); - - function loadStockTakeRecordStore(warehouseId){ - startStockTakeStore.baseParams.warehouseId = warehouseId; - startStockTakeStore.load(); - endStockTakeStore.baseParams.warehouseId = warehouseId; - endStockTakeStore.load(); - } - var form = new Ext.form.FormPanel({ title : entityName, region : 'north', @@ -121,53 +118,39 @@ hideTrigger : true, typeAhead : false, allowBlank : true, - anchor : '95%', - listeners:{ - select:function(combo, record, index){ - loadStockTakeRecordStore(combo.getValue()); - } - } + anchor : '95%' }] },{ width : 210, layout : 'form', labelWidth : 60, items : [{ - xtype : 'combo', - fieldLabel : '期初库存', - id : 'recordStartDate', - name : 'recordStartDate', - editable:false, - valueField : 'id', - displayField : 'dateTime', - store : startStockTakeStore, - forceSelection : false, - lazyInit : false, - typeAhead : false, - selectOnFocus :true, - triggerAction : 'all', - anchor : '95%' + xtype : 'datefieldWithMin', + fieldLabel : '开始日期', + id : 'startDate', + name : 'startDate', + editable : false, + format : 'Y-m-d', + altFormats:'Y-m-d|Y-n-j|y-n-j|y-m-j|y-m-d|y-n-d|Y-n-d|Y-m-j|Ymd|Ynj|ynj|ymj|ymd|ynd|Ynd|Ymj|Y/m/d|Y/n/j|y/n/j|y/m/j|y/m/d|y/n/d|Y/n/d|Y/m/j', + allowBlank : false, + anchor : '95%', + value: new Date(startDayofMonth) }] },{ width : 210, layout : 'form', labelWidth : 60, items : [{ - xtype : 'combo', - fieldLabel : '期末库存', - id : 'recordEndDate', - name : 'recordEndDate', - editable:false, - lazyInit : false, - valueField : 'id', - displayField : 'dateTime', - store : endStockTakeStore, - forceSelection : false, - lazyInit : false, - typeAhead : false, - selectOnFocus :true, - triggerAction : 'all', - anchor : '95%' + xtype : 'datefieldWithMin', + fieldLabel : '结束日期', + id : 'endDate', + name : 'endDate', + editable : false, + format : 'Y-m-d', + altFormats:'Y-m-d|Y-n-j|y-n-j|y-m-j|y-m-d|y-n-d|Y-n-d|Y-m-j|Ymd|Ynj|ynj|ymj|ymd|ynd|Ynd|Ymj|Y/m/d|Y/n/j|y/n/j|y/m/j|y/m/d|y/n/d|Y/n/d|Y/m/j', + allowBlank : false, + anchor : '95%', + value: new Date() }] },{ width : 210,