供应商对账完成

This commit is contained in:
weizhiqiang 2019-10-22 16:39:17 +08:00
parent e497983442
commit 19fe21a548
8 changed files with 284 additions and 0 deletions

View file

@ -74,5 +74,17 @@ public class StatisticsController {
public void queryCustomerReconciliationDetails(InputObject inputObject, OutputObject outputObject) throws Exception{ public void queryCustomerReconciliationDetails(InputObject inputObject, OutputObject outputObject) throws Exception{
statisticsService.queryCustomerReconciliationDetails(inputObject, outputObject); statisticsService.queryCustomerReconciliationDetails(inputObject, outputObject);
} }
/**
* 供应商对账
* @param inputObject
* @param outputObject
* @throws Exception
*/
@RequestMapping("/post/StatisticsController/querySupplierReconciliationDetails")
@ResponseBody
public void querySupplierReconciliationDetails(InputObject inputObject, OutputObject outputObject) throws Exception{
statisticsService.querySupplierReconciliationDetails(inputObject, outputObject);
}
} }

View file

@ -17,4 +17,6 @@ public interface StatisticsDao {
public List<Map<String, Object>> queryCustomerReconciliationDetails(Map<String, Object> params, PageBounds pageBounds) throws Exception; public List<Map<String, Object>> queryCustomerReconciliationDetails(Map<String, Object> params, PageBounds pageBounds) throws Exception;
public List<Map<String, Object>> querySupplierReconciliationDetails(Map<String, Object> params, PageBounds pageBounds) throws Exception;
} }

View file

@ -15,4 +15,6 @@ public interface StatisticsService {
public void queryCustomerReconciliationDetails(InputObject inputObject, OutputObject outputObject) throws Exception; public void queryCustomerReconciliationDetails(InputObject inputObject, OutputObject outputObject) throws Exception;
public void querySupplierReconciliationDetails(InputObject inputObject, OutputObject outputObject) throws Exception;
} }

View file

@ -108,5 +108,23 @@ public class StatisticsServiceImpl implements StatisticsService{
outputObject.setBeans(beans); outputObject.setBeans(beans);
outputObject.settotal(total); outputObject.settotal(total);
} }
/**
* 供应商对账
* @param inputObject
* @param outputObject
* @throws Exception
*/
@Override
public void querySupplierReconciliationDetails(InputObject inputObject, OutputObject outputObject) throws Exception {
Map<String, Object> params = inputObject.getParams();
params.put("userId", inputObject.getLogParams().get("id"));
List<Map<String, Object>> beans = statisticsDao.querySupplierReconciliationDetails(params,
new PageBounds(Integer.parseInt(params.get("page").toString()), Integer.parseInt(params.get("limit").toString())));
PageList<Map<String, Object>> beansPageList = (PageList<Map<String, Object>>)beans;
int total = beansPageList.getPaginator().getTotalCount();
outputObject.setBeans(beans);
outputObject.settotal(total);
}
} }

View file

@ -216,5 +216,33 @@
AND b.id = a.organ_id AND b.id = a.organ_id
AND b.type = '2' AND b.type = '2'
</select> </select>
<select id="querySupplierReconciliationDetails" parameterType="java.util.Map" resultType="java.util.Map">
SELECT
a.id,
a.default_number defaultNumber,
CASE a.sub_type WHEN 1 THEN '采购入库' WHEN 2 THEN '销售退货' WHEN 3 THEN '零售退货' WHEN 4 THEN '其他入库' WHEN 5 THEN '销售出库'
WHEN 6 THEN '采购退货' WHEN 7 THEN '调拨' WHEN 8 THEN '零售出库' WHEN 9 THEN '其他出库' ELSE '' END subTypeName,
b.supplier supplierName,
FORMAT(a.total_price, 2) totalPrice,
FORMAT(IFNULL(a.change_amount, 0), 2) changeAmount,
CONVERT(a.oper_time, CHAR) operTime,
a.link_number linkNumber,
a.status,
a.sub_type subType
FROM
erp_depothead a,
erp_supplier b
WHERE
a.delete_flag = '0'
AND a.tenant_id = #{userId}
AND DATE_FORMAT(a.oper_time, '%Y-%m') = #{operTime}
<if test="customerId != '' and customerId != null">
AND b.id = #{customerId}
</if>
AND a.sub_type NOT IN(10, 11)
AND b.id = a.organ_id
AND b.type = '1'
</select>
</mapper> </mapper>

View file

@ -673,6 +673,12 @@
<property id="limit" name="limit" ref="required,num" var="分页参数,每页多少条数据" /> <property id="limit" name="limit" ref="required,num" var="分页参数,每页多少条数据" />
<property id="page" name="page" ref="required,num" var="分页参数,第几页"/> <property id="page" name="page" ref="required,num" var="分页参数,第几页"/>
</url> </url>
<url id="statistics006" path="/post/StatisticsController/querySupplierReconciliationDetails" val="供应商对账" allUse="2">
<property id="customerId" name="customerId" ref="" var="供应商id" />
<property id="operTime" name="operTime" ref="required" var="单据时间"/>
<property id="limit" name="limit" ref="required,num" var="分页参数,每页多少条数据" />
<property id="page" name="page" ref="required,num" var="分页参数,第几页"/>
</url>
<!-- 统计结束 --> <!-- 统计结束 -->
</controller> </controller>

View file

@ -0,0 +1,170 @@
var rowId = "";
//单据的时间
var operTime = "";
layui.config({
base: basePath,
version: skyeyeVersion
}).extend({ //指定js别名
window: 'js/winui.window'
}).define(['window', 'table', 'jquery', 'winui', 'form', 'laydate'], function (exports) {
winui.renderColor();
var $ = layui.$,
form = layui.form,
laydate = layui.laydate,
table = layui.table;
var selOption = getFileContent('tpl/template/select-option.tpl');
//初始化统计时间
operTime = getOneYMFormatDate();
//获取本月日期
function getOneYMFormatDate(){
var date = new Date;
var year = date.getFullYear();
var month = date.getMonth() + 1;
month = (month < 10 ? "0" + month : month);
return year.toString() + "-" + month.toString();
}
laydate.render({
elem: '#operTime', //指定元素
type: 'month',
value: operTime
});
initSupplierHtml();
//初始化供应商
function initSupplierHtml() {
AjaxPostUtil.request({url: reqBasePath + "supplier009", params: {}, type: 'json', callback: function(json) {
if(json.returnCode == 0) {
//加载供应商数据
$("#supplierId").html(getDataUseHandlebars(selOption, json));
//初始化数据
initTable();
} else {
winui.window.msg(json.returnMessage, {icon: 2, time: 2000});
}
}});
}
function initTable(){
//表格渲染
table.render({
id: 'messageTable',
elem: '#messageTable',
method: 'post',
url: reqBasePath + 'statistics006',
where: {operTime: operTime, customerId: $("#supplierId").val()},
even: true, //隔行变色
page: true,
limits: [8, 16, 24, 32, 40, 48, 56],
limit: 8,
cols: [[
{ title: '序号', type: 'numbers'},
{ field: 'defaultNumber', title: '单据编号', align: 'left', width: 250, templet: function(d){
var str = '<a lay-event="details" class="notice-title-click">' + d.defaultNumber + '</a>';
if(!isNull(d.linkNumber)){
str += '<span class="state-new">[转]</span>';
if(d.status == 2){
str += '<span class="state-up"> [正常]</span>';
}else{
str += '<span class="state-down"> [预警]</span>';
}
}
return str;
}},
{ field: 'subTypeName', title: '单据类型', align: 'left', width: 100},
{ field: 'supplierName', title: '供应商名称', align: 'left', width: 120},
{ field: 'totalPrice', title: '合计金额', align: 'left', width: 100},
{ field: 'changeAmount', title: '实际支付', align: 'left', width: 120},
{ field: 'operTime', title: '退货数量', align: 'center', width: 150}
]]
});
table.on('tool(messageTable)', function (obj) { //注tool是工具条事件名test是table原始容器的属性 lay-filter="对应的值"
var data = obj.data; //获得当前行数据
var layEvent = obj.event; //获得 lay-event 对应的值
if (layEvent === 'details') { //详情
details(data);
}
});
form.render();
}
//详情
function details(data){
rowId = data.id;
var url = "";
if(data.subType == 1){//采购入库
url = "../../tpl/purchaseput/purchaseputdetails.html";
}else if(data.subType == 4){//其他入库
url = "../../tpl/otherwarehous/otherwarehousdetails.html";
}else if(data.subType == 2){//销售退货
url = "../../tpl/salesreturns/salesreturnsdetails.html";
}else if(data.subType == 6){//采购退货
url = "../../tpl/purchasereturns/purchasereturnsdetails.html";
}else if(data.subType == 9){//其他出库
url = "../../tpl/otheroutlets/otheroutletsdetails.html";
}else if(data.subType == 5){//销售出库
url = "../../tpl/salesoutlet/salesoutletdetails.html";
}else if(data.subType == 8){//零售出库
url = "../../tpl/retailoutlet/retailoutletdetails.html";
}else if(data.subType == 3){//零售退货
url = "../../tpl/retailreturns/retailreturnsdetails.html";
}else if(data.subType == 12){//拆分单
url = "../../tpl/splitlist/splitlistdetails.html";
}else if(data.subType == 13){//组装单
url = "../../tpl/assemblysheet/assemblysheetdetails.html";
}
_openNewWindows({
url: url,
title: "单据详情",
pageId: "otherwarehousdetails",
area: ['90vw', '90vh'],
callBack: function(refreshCode){
}});
}
//搜索表单
form.on('submit(formSearch)', function (data) {
//表单验证
if (winui.verifyForm(data.elem)) {
loadTable();
}
return false;
});
$("body").on("click", "#reloadTable", function() {
loadTable();
});
$("body").on("click", "#formSearch", function () {
refreshTable();
})
//刷新
function loadTable(){
if(isNull($("#operTime").val())){//一定要记得当createTime为空时
winui.window.msg("请选择日期.", {icon: 2,time: 2000});
}else {
operTime = $("#operTime").val();
table.reload("messageTable", {where:{operTime: operTime, customerId: $("#supplierId").val()}});
}
}
//搜索
function refreshTable(){
if(isNull($("#operTime").val())){//一定要记得当createTime为空时
winui.window.msg("请选择日期.", {icon: 2,time: 2000});
}else {
operTime = $("#operTime").val();
table.reload("messageTable", {page: {curr: 1}, where:{operTime: operTime, customerId: $("#supplierId").val()}})
}
}
exports('customerreconciliation', {});
});

View file

@ -0,0 +1,46 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link href="../../assets/lib/layui/css/layui.css" rel="stylesheet" />
<link href="../../assets/lib/font-awesome-4.7.0/css/font-awesome.css" rel="stylesheet" />
<link href="../../assets/lib/winui/css/winui.css" rel="stylesheet" />
</head>
<body>
<div class="txtcenter" style="margin:0 auto;padding-top:10px;">
<form class="layui-form layui-form-pane" action="" autocomplete="off">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">供应商名称</label>
<div class="layui-input-inline">
<select id="supplierId" lay-search></select>
</div>
<label class="layui-form-label">单据日期</label>
<div class="layui-input-inline">
<input type="text" id="operTime" name="operTime" placeholder="请选择单据日期" class="layui-input" />
</div>
<button type="reset" class="layui-btn layui-btn-primary list-form-search">重置</button>
<button class="layui-btn list-form-search" lay-submit lay-filter="formSearch">搜索</button>
</div>
</div>
</form>
</div>
<div class="winui-toolbar">
<div class="winui-tool">
<button id="reloadTable" class="winui-toolbtn"><i class="fa fa-refresh" aria-hidden="true"></i>刷新数据</button>
<div style="width: calc(100% - 120px); float: right; padding: 8px 10px;">
<div class="layui-form-mid layui-word-aux" style="color: red !important;"></div>
</div>
</div>
</div>
<div style="margin:auto 10px;">
<table id="messageTable" lay-filter="messageTable"></table>
</div>
<script src="../../assets/lib/layui/layui.js"></script>
<script src="../../assets/lib/layui/custom.js"></script>
<script type="text/javascript">
layui.config({base: '../../js/erpstatistics/'}).use('supplierreconciliation');
</script>
</body>
</html>