增加对账单的功能

This commit is contained in:
季圣华
2017-10-06 17:15:55 +08:00
parent 6a7af6ff59
commit 789c2c9838
9 changed files with 543 additions and 4263 deletions

File diff suppressed because one or more lines are too long

View File

@@ -731,6 +731,55 @@ public class DepotHeadAction extends BaseAction<DepotHeadModel>
}
return allReturn;
}
/**
*对账单接口
*/
public void findStatementAccount(){
PageUtil pageUtil = new PageUtil();
pageUtil.setPageSize(model.getPageSize());
pageUtil.setCurPage(model.getPageNo());
Long pid =model.getProjectId();
String dids =model.getDepotIds();
String beginTime = model.getBeginTime();
String endTime = model.getEndTime();
Long organId = model.getOrganId();
try{
depotHeadService.findStatementAccount(pageUtil, beginTime, endTime, organId, pid, dids);
List dataList = pageUtil.getPageList();
JSONObject outer = new JSONObject();
outer.put("total", pageUtil.getTotalCount());
//存放数据json数组
JSONArray dataArray = new JSONArray();
if(dataList!=null){
for(Integer i=0; i<dataList.size(); i++){
JSONObject item = new JSONObject();
Object dl = dataList.get(i); //获取对象
Object[] arr = (Object[]) dl; //转为数组
item.put("number", arr[0]); //单据编号
item.put("materialName", arr[1]); //商品名称
item.put("materialModel", arr[2]); //商品型号
item.put("unitPrice", arr[3]); //单价
item.put("operNumber", arr[4]); //入库出库数量
item.put("allPrice", arr[5]); //金额
item.put("supplierName", arr[6]); //供应商
item.put("depotName", arr[7]); //仓库
item.put("operTime", arr[8]); //入库出库日期
item.put("type", arr[9]); //单据类型
dataArray.add(item);
}
}
outer.put("rows", dataArray);
//回写查询结果
toClient(outer.toString());
}
catch (JshException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e);
}
catch (IOException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询信息结果异常", e);
}
}
/**
* 拼接搜索条件

View File

@@ -59,13 +59,16 @@ public class DepotHeadDAO extends BaseDAO<DepotHead> implements DepotHeadIDAO {
"inner join jsh_material m on m.id=di.MaterialId " +
"inner join jsh_supplier s on s.id=dh.OrganId " +
"inner join (select id,name as dName from jsh_depot) d on d.id=di.DepotId " +
"where dh.Type='"+ type +"' and dh.OperTime >='"+ beginTime +"' and dh.OperTime <='"+ endTime +"' ");
"where dh.OperTime >='"+ beginTime +"' and dh.OperTime <='"+ endTime +"' ");
if(pid!=null){
queryString.append(" and di.DepotId=" + pid );
}
else {
queryString.append(" and di.DepotId in (" + dids + ")" );
}
if(type!=null && !type.equals("")) {
queryString.append(" and dh.Type='"+ type +"'");
}
queryString.append(" ORDER BY OperTime DESC,Number desc");
Query query;
query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch()));
@@ -125,6 +128,38 @@ public class DepotHeadDAO extends BaseDAO<DepotHead> implements DepotHeadIDAO {
pageUtil.setPageList(query.list());
}
@SuppressWarnings("unchecked")
public void findStatementAccount(PageUtil pageUtil,String beginTime,String endTime,Long organId,Long pid,String dids) throws JshException {
StringBuffer queryString = new StringBuffer();
queryString.append("select dh.Number,m.`name`,m.Model,di.UnitPrice,di.OperNumber,di.AllPrice,s.supplier,d.dName,date_format(dh.OperTime, '%Y-%m-%d'),dh.type " +
"from jsh_depothead dh inner join jsh_depotitem di on di.HeaderId=dh.id " +
"inner join jsh_material m on m.id=di.MaterialId " +
"inner join jsh_supplier s on s.id=dh.OrganId " +
"inner join (select id,name as dName from jsh_depot) d on d.id=di.DepotId " +
"where s.type!='会员' and dh.OperTime >='"+ beginTime +"' and dh.OperTime <='"+ endTime +"' ");
if(pid!=null){
queryString.append(" and di.DepotId=" + pid );
}
else {
queryString.append(" and di.DepotId in (" + dids + ")" );
}
if(organId!=null && !organId.equals("")) {
queryString.append(" and dh.OrganId='"+ organId +"'");
}
queryString.append(" ORDER BY OperTime DESC,Number desc");
Query query;
query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch()));
pageUtil.setTotalCount(query.list().size());
// 分页查询
int pageNo = pageUtil.getCurPage();
int pageSize = pageUtil.getPageSize();
if (0 != pageNo && 0 != pageSize) {
query.setFirstResult((pageNo - 1) * pageSize);
query.setMaxResults(pageSize);
}
pageUtil.setPageList(query.list());
}
@SuppressWarnings("unchecked")
public void getHeaderIdByMaterial(PageUtil pageUtil,String materialParam) throws JshException {
StringBuffer queryString = new StringBuffer();

View File

@@ -23,6 +23,8 @@ public interface DepotHeadIDAO extends BaseIDAO<DepotHead>
public void findMaterialsListByHeaderId(PageUtil pageUtil,Long headerId) throws JshException;
public void findStatementAccount(PageUtil pageUtil,String beginTime,String endTime,Long organId,Long pid,String dids) throws JshException;
public void getHeaderIdByMaterial(PageUtil pageUtil,String materialParam) throws JshException;
}

View File

@@ -23,5 +23,7 @@ public interface DepotHeadIService extends BaseIService<DepotHead>
public void findMaterialsListByHeaderId(PageUtil pageUtil,Long headerId)throws JshException;
public void findStatementAccount(PageUtil pageUtil,String beginTime,String endTime, Long organId, Long pid,String dids)throws JshException;
public void getHeaderIdByMaterial(PageUtil pageUtil,String materialParam)throws JshException;
}

View File

@@ -50,6 +50,10 @@ public class DepotHeadService extends BaseService<DepotHead> implements DepotHea
depotHeadDao.findMaterialsListByHeaderId(pageUtil, headerId);
}
public void findStatementAccount(PageUtil pageUtil,String beginTime,String endTime,Long organId,Long pid,String dids) throws JshException {
depotHeadDao.findStatementAccount(pageUtil, beginTime, endTime, organId, pid, dids);
}
public void getHeaderIdByMaterial(PageUtil pageUtil,String materialParam) throws JshException {
depotHeadDao.getHeaderIdByMaterial(pageUtil, materialParam);
}

View File

@@ -22,7 +22,7 @@
<script type="text/javascript" src="<%=path %>/js/My97DatePicker/WdatePicker.js"></script>
<script type="text/javascript" src="<%=path %>/js/common/common.js"></script>
<script>
var kid = ${sessionScope.user.id};
var uid = ${sessionScope.user.id};
</script>
</head>
<body>
@@ -89,7 +89,7 @@
type:"post",
url: "<%=path %>/userBusiness/getBasicData.action",
data: ({
KeyId:kid,
KeyId: uid,
Type:"UserDepot"
}),
//设置为同步

View File

@@ -22,7 +22,7 @@
<script type="text/javascript" src="<%=path %>/js/My97DatePicker/WdatePicker.js"></script>
<script type="text/javascript" src="<%=path %>/js/common/common.js"></script>
<script>
var kid = ${sessionScope.user.id};
var uid = ${sessionScope.user.id};
</script>
</head>
<body>
@@ -88,7 +88,7 @@
type:"post",
url: "<%=path %>/userBusiness/getBasicData.action",
data: ({
KeyId:kid,
KeyId: uid,
Type:"UserDepot"
}),
//设置为同步

View File

@@ -0,0 +1,355 @@
<%@page import="com.jsh.util.Tools"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String clientIp = Tools.getLocalIp(request);
%>
<!DOCTYPE html>
<html>
<head>
<title>对账单</title>
<meta charset="utf-8">
<!-- 指定以IE8的方式来渲染 -->
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8"/>
<link rel="shortcut icon" href="<%=path%>/images/favicon.ico" type="image/x-icon" />
<script type="text/javascript" src="<%=path %>/js/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="<%=path %>/js/print/print.js"></script>
<link rel="stylesheet" type="text/css" href="<%=path %>/js/easyui-1.3.5/themes/default/easyui.css"/>
<link rel="stylesheet" type="text/css" href="<%=path %>/js/easyui-1.3.5/themes/icon.css"/>
<link type="text/css" rel="stylesheet" href="<%=path %>/css/common.css" />
<script type="text/javascript" src="<%=path %>/js/easyui-1.3.5/jquery.easyui.min.js"></script>
<script type="text/javascript" src="<%=path %>/js/easyui-1.3.5/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript" src="<%=path %>/js/My97DatePicker/WdatePicker.js"></script>
<script type="text/javascript" src="<%=path %>/js/common/common.js"></script>
<script>
var uid = ${sessionScope.user.id};
</script>
</head>
<body>
<!-- 查询 -->
<div id = "searchPanel" class="easyui-panel" style="padding:10px;" title="查询窗口" iconCls="icon-search" collapsible="true" closable="false">
<table id="searchTable">
<tr>
<td>仓库:</td>
<td>
<select name="searchProjectId" id="searchProjectId" style="width:100px;"></select>
</td>
<td>&nbsp;</td>
<td>单位名称:</td>
<td>
<input id="OrganId" name="OrganId" style="width:100px;" />
</td>
<td>&nbsp;</td>
<td>单据日期:</td>
<td>
<input type="text" name="searchBeginTime" id="searchBeginTime" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" class="txt Wdate" style="width:140px;"/>
</td>
<td>-</td>
<td>
<input type="text" name="searchEndTime" id="searchEndTime" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" class="txt Wdate" style="width:140px;"/>
</td>
<td>&nbsp;</td>
<td>
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-search" id="searchBtn">查询</a>
&nbsp;&nbsp;
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-print" id="printBtn">打印</a>
</td>
</tr>
</table>
</div>
<!-- 数据显示table -->
<div id = "tablePanel" class="easyui-panel" style="padding:1px;top:300px;" title="对账单列表" iconCls="icon-list" collapsible="true" closable="false">
<table id="tableData" style="top:300px;border-bottom-color:#FFFFFF"></table>
</div>
<script type="text/javascript">
var path = "<%=path %>";
var depotList = null;
var depotID = null;
var depotString = ""; //仓库列表
var cusUrl = path + "/supplier/findBySelect_cus.action?UBType=UserCustomer&UBKeyId=" + uid; //客户接口
//初始化界面
$(function()
{
var thisDate = getNowFormatMonth(); //当前月份
var thisDateTime = getNowFormatDateTime(); //当前时间
$("#searchBeginTime").val(thisDate + "-01 00:00:00");
$("#searchEndTime").val(thisDateTime);
var userBusinessList=null;
var userdepot=null;
initSystemData_UB();
initSelectInfo_UB();
initSystemData_depot();
initSelectInfo_depot();
initSupplier(); //初始化供应商、客户信息
initTableData();
ininPager();
search();
print();
});
//初始化系统基础信息
function initSystemData_UB(){
$.ajax({
type:"post",
url: "<%=path %>/userBusiness/getBasicData.action",
data: ({
KeyId: uid,
Type:"UserDepot"
}),
//设置为同步
async:false,
dataType: "json",
success: function (systemInfo)
{
if(systemInfo)
{
userBusinessList = systemInfo.showModel.map.userBusinessList;
var msgTip = systemInfo.showModel.msgTip;
if(msgTip == "exceptoin")
{
$.messager.alert('提示','查找UserBusiness异常,请与管理员联系!','error');
return;
}
}
else
{
userBusinessList=null;
}
}
});
}
//初始化页面选项卡
function initSelectInfo_UB(){
if(userBusinessList !=null)
{
if(userBusinessList.length>0)
{
//用户对应的仓库列表 [1][2][3]...
userdepot =userBusinessList[0].value;
}
}
}
//初始化系统基础信息
function initSystemData_depot(){
$.ajax({
type:"post",
url: "<%=path %>/depot/getBasicData.action",
//设置为同步
async:false,
dataType: "json",
success: function (systemInfo)
{
depotList = systemInfo.showModel.map.depotList;
var msgTip = systemInfo.showModel.msgTip;
if(msgTip == "exceptoin")
{
$.messager.alert('提示','查找系统基础信息异常,请与管理员联系!','error');
return;
}
}
});
}
//初始化页面选项卡
function initSelectInfo_depot(){
var options = "";
if(depotList !=null)
{
options = "";
for(var i = 0 ;i < depotList.length;i++)
{
var depot = depotList[i];
if(userdepot!=null)
{
if(userdepot.indexOf("["+depot.id+"]")!=-1)
{
options += '<option value="' + depot.id + '">' + depot.name + '</option>';
depotString = depotString + depot.id + ",";
}
}
}
depotString = depotString.substring(0, depotString.length-1);
$("#searchProjectId").empty().append('<option value="">全部</option>').append(options);
}
}
//初始化供应商、客户
function initSupplier(){
$('#OrganId').combobox({
url: cusUrl,
valueField:'id',
textField:'supplier',
filter: function(q, row){
var opts = $(this).combobox('options');
return row[opts.textField].indexOf(q) >-1;
}
});
}
//初始化表格数据
function initTableData()
{
$('#tableData').datagrid({
height:heightInfo,
nowrap: false,
rownumbers: true,
//动画效果
animate:false,
//选中单行
singleSelect : true,
pagination: true,
//交替出现背景
striped : true,
pageSize: 10,
pageList: [10,50,100],
columns:[[
{ title: '单据编号',field: 'number',width:140},
{ title: '商品名称',field: 'materialName',width:120},
{ title: '商品型号',field: 'materialModel',width:100},
{ title: '单价',field: 'unitPrice',width:60},
{ title: '数量',field: 'operNumber',width:60,formatter:function(value,rec){
if(rec.type==="出库"){
return rec.operNumber;
}
else if(rec.type==="入库"){
return 0-rec.operNumber;
}
}},
{ title: '金额',field: 'allPrice',width:60,formatter: function(value,rec){
if(rec.type==="出库"){
return rec.allPrice;
}
else if(rec.type==="入库"){
return 0-rec.allPrice;
}
}},
{ title: '单位名称',field: 'supplierName',width:200},
{ title: '仓库',field: 'depotName',width:120},
{ title: '入库日期',field: 'operTime',width:80}
]],
onLoadError:function()
{
$.messager.alert('页面加载提示','页面加载异常,请稍后再试!','error');
return;
}
});
}
//初始化键盘enter事件
$(document).keydown(function(event)
{
//兼容 IE和firefox 事件
var e = window.event || event;
var k = e.keyCode||e.which||e.charCode;
//兼容 IE,firefox 兼容
var obj = e.srcElement ? e.srcElement : e.target;
//绑定键盘事件为 id是指定的输入框才可以触发键盘事件 13键盘事件 ---遗留问题 enter键效验 对话框会关闭问题
if(k == "13"&&(obj.id=="Type"||obj.id=="Name"))
{
$("#savePerson").click();
}
//搜索按钮添加快捷键
if(k == "13"&&(obj.id=="searchType"))
{
$("#searchBtn").click();
}
});
//分页信息处理
function ininPager()
{
try
{
var opts = $("#tableData").datagrid('options');
var pager = $("#tableData").datagrid('getPager');
pager.pagination({
onSelectPage:function(pageNum, pageSize)
{
opts.pageNumber = pageNum;
opts.pageSize = pageSize;
pager.pagination('refresh',
{
pageNumber:pageNum,
pageSize:pageSize
});
showDetails(pageNum,pageSize);
}
});
}
catch (e)
{
$.messager.alert('异常处理提示',"分页信息异常 : " + e.name + ": " + e.message,'error');
}
}
//增加
var url;
var personID = 0;
//保存编辑前的名称
var orgPerson = "";
//搜索处理
function search() {
showDetails(1,initPageSize);
var opts = $("#tableData").datagrid('options');
var pager = $("#tableData").datagrid('getPager');
opts.pageNumber = 1;
opts.pageSize = initPageSize;
pager.pagination('refresh',
{
pageNumber:1,
pageSize:initPageSize
});
}
$("#searchBtn").unbind().bind({
click:function()
{
search();
}
});
function showDetails(pageNo,pageSize)
{
$.ajax({
type: "post",
url: "<%=path %>/depotHead/findStatementAccount.action",
dataType: "json",
data: ({
pageNo:pageNo,
pageSize:pageSize,
ProjectId: $.trim($("#searchProjectId").val()),
DepotIds: depotString,
BeginTime: $("#searchBeginTime").val(),
EndTime: $("#searchEndTime").val(),
OrganId: $('#OrganId').combobox('getValue')
}),
success: function (res) {
if(res){
$("#tableData").datagrid('loadData',res);
}
},
//此处添加错误处理
error:function() {
$.messager.alert('查询提示','查询数据后台异常,请稍后再试!','error');
return;
}
});
}
//报表打印
function print() {
$("#printBtn").off("click").on("click",function(){
var path = "<%=path %>";
CreateFormPage('打印报表', $('#tableData'), path);
});
}
</script>
</body>
</html>