Browse Source

Merge remote-tracking branch 'origin/master'

master
yxt_djz 2 years ago
parent
commit
f06f7f4c97
  1. 15
      base-ui/src/api/supervise/goodsonway.js
  2. 40
      base-ui/src/api/supervise/salesreport.js
  3. 16
      base-ui/src/api/supervise/thresholdanalysis.js
  4. 421
      base-ui/src/views/reportCenter/goodsOnWay.vue
  5. 40
      base-ui/src/views/reportCenter/salesReport.vue
  6. 510
      base-ui/src/views/risk/thresholdAnalysis.vue
  7. 23
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageCountMapper.java
  8. 82
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageCountService.java
  9. 4
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageJmdMapper.java
  10. 4
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageJmdService.java
  11. 6
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageYcMapper.java
  12. 4
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageYcService.java
  13. 3
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryOkMapper.java
  14. 14
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryOkService.java
  15. 2
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryService.java
  16. 32
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesMapper.java
  17. 114
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesReportday.java
  18. 184
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesReportdayService.java
  19. 244
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesService.java
  20. 25
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesYcMapper.java
  21. 23
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesYcService.java
  22. 3
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdwholesale/GdWholesaleMapper.java
  23. 4
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdwholesale/GdWholesaleService.java
  24. 33
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/storeinfo/StoreInfoService.java
  25. BIN
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/xlsx-tmpl/在途商品汇总统计表.xlsx
  26. BIN
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/xlsx-tmpl/销售汇总日报表.xlsx

15
base-ui/src/api/supervise/goodsonway.js

@ -0,0 +1,15 @@
import request from '@/utils/request'
// 销售报表
// 初始化
export default {
initData(data) {
return request({
url: '/reportCenter/getGoodsOnWay',
method: 'get',
params: data
})
},
}

40
base-ui/src/api/supervise/salesreport.js

@ -1,9 +1,9 @@
import request from '@/utils/request'
// 销售报表
// 品牌管理模糊查询
// 初始化
export default {
initData(data) {
return request({
url: '/reportCenter/getSalesReport',
@ -11,41 +11,5 @@ export default {
params: data
})
},
// 保存新增记录
saveOrUpdate: function(params) {
return request({
url: '/v1/purchaserequisition/save',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
},
// 通过sid删除一条或多条记录
delBySids: function(data) {
return request({
url: '/v1/purchaserequisition/delBySids',
method: 'delete',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
},
// 通过sid查询一条记录
fetchBySid: function(sid) {
return request({
url: '/v1/purchaserequisition/fetchDetailsBySid/' + sid
})
},
// 提交
doSubmit: function(params) {
return request({
url: '/supervise/v1/kfpurchaserequisition/doSubmit',
method: 'post',
data: params
})
}
}

16
base-ui/src/api/supervise/thresholdanalysis.js

@ -0,0 +1,16 @@
import request from '@/utils/request'
// 库房提供的采购订单表
export default {
// 查询分页列表
listPage: function(params) {
return request({
url: '/risk/getThresholdAnalysis',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
}
}

421
base-ui/src/views/reportCenter/goodsOnWay.vue

@ -1,151 +1,370 @@
<template>
<div class="app-container">
<div style="margin-left: 16px;">
<h3>{{ name }}</h3>
</div>
<div class = "current-data">
<div class = "left">
<div class="top">
<div v-show="viewState == 1">
<button-bar ref="btnbar" view-title="在途商品管理表" :btndisabled="btndisabled" @btnhandle="btnHandle" />
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">
{{ searchxianshitit }}
</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="queryParams" :model="queryParams" :inline="true" class="tab-header">
<el-form-item label="日期">
<el-date-picker v-model="queryParams.date" type="date" clearable value-format="yyyy-MM-dd"
placeholder="选择日期" />
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" size="small" icon="el-icon-search" @click="dosearch">查询</el-button>
<el-button type="primary" size="small" icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</div>
</div>
</div>
<div style="margin-top: 30px;">
<span>当前数据</span>
<span>{{currentDate}}</span>
<span style="margin-left: 10px;">{{nowDate}}</span>
</div>
</div>
<div ref="charta" class ="middle">
<div class="current-data">
<div class="left">
<div style="display: flex;flex-direction: column;justify-content: center; margin-top: 30px;">
<span class="item"><span class="item_lift"></span>订单总额<span class="item_text">{{listGoodsOnWays.orderAmount}}</span></span>
<span class="item"><span class="item_lift"></span>实际到货价值<span class="item_text">{{listGoodsOnWays.arrivedGoodsValue}}</span></span>
<span class="item"><span class="item_lift"></span>在途货价值<span class="item_text">{{listGoodsOnWays.onWayGoodsValue}}</span></span>
<span class="item"><span class="item_lift"></span>超出价值<span class="item_text">{{listGoodsOnWays.exceedGoodsValue}}</span></span>
</div>
</div>
<div id="main" class="middle" style="margin-top: -40px;">
</div>
<div style="width: 50%;margin-left: 20px;margin-top: 30px;">
<el-table v-loading="tableLoading" :data="listArrivedEarlyWarning" border style="width: 100%">
<el-table-column width="60" label="序号" prop="num" align="center" />
<el-table-column label="供应商名称" prop="supplierName" align="center" />
<el-table-column width="120" label="到货日期" prop="allArrivedDate" align="center" />
<el-table-column width="100" label="是否延期" prop="isDelay" align="center" />
</el-table>
</div>
</div>
</div>
<div class ="right" /></div>
</div>
</div>
</div>
</template>
<script>
import * as echarts from 'echarts'
import req from '@/api/supervise/goodsonway'
import ButtonBar from '@/components/ButtonBar'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import * as echarts from 'echarts';
export default {
name: '在途商品管理表',
// components: { },
components: {
ButtonBar,
Pagination,
pageye
},
data() {
return {
currentDate:"2023-01-01",
name: '在途商品管理表',
myCharta: null
myCharta: null,
btndisabled: false,
viewState: 1, // 1 2 3 4
isSearchShow: false,
searchxianshitit: '显示查询条件',
tableLoading: false,
tableKey: 0,
btnList: [ //
{
type: 'success',
size: 'small',
icon: 'export',
btnKey: 'build',
btnLabel: '导出'
},
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
queryParams: {
date: "",
},
nowDate: new Date().getFullYear() + "-" + (new Date().getMonth() + 1) + "-" + new Date().getDate(),
listGoodsOnWays: {
orderAmount: "",
arrivedGoodsValue: "",
onWayGoodsValue: "",
exceedGoodsValue: "",
},
listArrivedEarlyWarning: [{
num: '1',
supplierName: '中粮可口可乐饮料(河北)有限公司',
allArrivedDate: '2022.12.29',
isDelay: '是'
},
{
num: '2',
supplierName: '中顺洁柔纸业股份有限公司',
allArrivedDate: '2022.12.27',
isDelay: '否'
},
{
num: '3',
supplierName: '今麦郎食品股份有限公司石家庄分公司',
allArrivedDate: '2022.12.23',
isDelay: '否'
},
{
num: '4',
supplierName: '农夫山泉股份有限公司',
allArrivedDate: '2022.12.25',
isDelay: '是'
},
{
num: '5',
supplierName: '北京百事可乐饮料有限公司',
allArrivedDate: '2022.12.12',
isDelay: '否'
},
{
num: '6',
supplierName: '今麦郎食品股份有限公司石家庄分公司',
allArrivedDate: '2022.12.02',
isDelay: '是'
},
{
num: '7',
supplierName: '农夫山泉股份有限公司',
allArrivedDate: '2022.12.09',
isDelay: '否'
},
{
num: '8',
supplierName: '北京百事可乐饮料有限公司',
allArrivedDate: '2022.12.20',
isDelay: '是'
},
],
analysisChartData: {
legend: {
top: 'bottom'
},
toolbox: {
show: true,
feature: {
mark: {
show: true
},
//
dataView: {
show: false,
readOnly: false
},
//
restore: {
show: false
},
//
saveAsImage: {
show: false
}
}
},
series: [{
name: 'Nightingale Chart',
type: 'pie',
radius: [30, 150],
center: ['50%', '50%'],
roseType: 'area',
itemStyle: {
borderRadius: 8
},
data: [{
"value": 2313123,
"name": "订单总额"
},
{
"value": 4359354,
"name": "实际到货价值"
},
{
"value": 2313123,
"name": "在途货价值"
},
{
"value": 2313123,
"name": "超出价值"
}
]
}]
}
}
},
created() {
//
// this.init()
//
// this.getList()
},
beforeDestroy() {
if (this.myCharta) {
this.myCharta.dispose()
this.myCharta = null
}
console.log('33333')
this.loadList()
},
// beforeDestroy() {
// if (this.myCharta) {
// this.myCharta.dispose()
// this.myCharta = null
// }
// },
mounted() {
this.$nextTick(() => {
this.initCharta()
})
//
this.$refs['btnbar'].setButtonList(this.btnList)
//
},
methods: {
initCharta() {
// domecharts
this.myCharta = echarts.init(this.$refs.charta)
this.myCharta.setOption(
{
legend: {
top: 'bottom'
},
toolbox: {
show: true,
feature: {
mark: { show: true },
dataView: { show: true, readOnly: false },
restore: { show: true },
saveAsImage: { show: true }
}
},
series: [
{
name: 'Nightingale Chart',
type: 'pie',
radius: [50, 250],
center: ['50%', '50%'],
roseType: 'area',
itemStyle: {
borderRadius: 8
},
data:[
{
"value": 2313123,
"name": "订单总额"
},
{
"value": 4359354,
"name": "实际到货价值"
},
{
"value": 2313123,
"name": "在途货价值"
},
{
"value": 2313123,
"name": "超出价值"
}
]
}
]
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
//
btnHandle(btnKey) {
switch (btnKey) {
case 'build': //
this.doBuild()
break
case 'doClose': //
this.doClose()
break
default:
break
}
},
loadList() {
this.tableLoading = true
let _this = this
console.log('22222')
req.initData(_this.queryParams).then((resp) => {
if (resp.success) {
console.log('1111', resp.data)
const data = resp.data
_this.listGoodsOnWays = data.listGoodsOnWays
_this.listArrivedEarlyWarning = data.listArrivedEarlyWarning
_this.analysisChartData = data.analysisChartData
this.drawLine()
this.tableLoading = false
} else {
// resp.code
_this.dataList = []
_this.listSalesChannelData = []
}
)
}).catch(e => {
console.log('eeeee', e)
_this.tableLoading = false
})
},
//
drawLine() {
// domecharts
var myChart = echarts.init(document.getElementById('main'));
//
console.log('option', this.analysisChartData)
myChart.setOption(this.analysisChartData);
},
dosearch() {
this.nowDate = this.queryParams.date;
this.loadList();
},
resetQuery() {
this.queryParams = {
date: "",
}
this.loadList();
},
//
doBuild() {
this.$message({
showClose: true,
type: 'success',
message: '功能暂未完善...'
})
},
getList() {},
//
handleReturn() {
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style>
.current-data{
width:100%;
height:500px;
.current-data {
width: 100%;
height: 500px;
display: flex;
}
.current-data .top{
height:30px;
line-height:30px;
width:100%;
.current-data .top {
height: 30px;
line-height: 30px;
width: 100%;
}
.current-data .left {
width: 250px;
height: 600px;
}
.current-data .left{
background-color: aqua;
width:250px;
height:600px;
margin-left: 16px;
.item {
margin-top: 35px;
display: flex;
align-items: center;
}
.current-data .middle{
width:600px;
height:600px;
.item_lift {
margin-left: 10px;
padding-right: 5px;
font-size: 30px;
color: blue;
}
.item_text {
padding-left: 15px;
}
.current-data .middle {
width: 500px;
height: 400px;
float: left;
margin-left: 10px;
}
.current-data .right{
.current-data .right {
background-color: red;
width:700px;
height:600px;
width: 700px;
height: 600px;
float: left;
margin-left: 10px;
}
.current-data .right .top{
.current-data .right .top {
text-align: center;
}
.current-data .right .charts{
height:480px;
width:100%;
.current-data .right .charts {
height: 480px;
width: 100%;
}
</style>

40
base-ui/src/views/reportCenter/salesReport.vue

@ -10,11 +10,11 @@
<div v-show="isSearchShow" class="search">
<el-form ref="queryParams" :model="queryParams" :inline="true" class="tab-header">
<el-form-item label="日期">
<el-date-picker v-model="queryParams.newDate" type="date" clearable value-format="yyyy-MM-dd"
<el-date-picker v-model="queryParams.date" type="date" clearable value-format="yyyy-MM-dd"
placeholder="选择日期" />
</el-form-item>
<el-form-item label="类别">
<el-select v-model="queryParams.key" filterable placeholder="全部" clearable>
<el-select v-model="queryParams.type" filterable placeholder="全部" clearable>
<el-option v-for="item in state_list" :key="item.dictKey" :label="item.dictValue"
:value="item.dictKey">
</el-option>
@ -83,14 +83,10 @@
<div style="width: 65%;margin-left: 50px;margin-top: 20px;">
<div id="main" style="width: 800px; height: 500px;margin-top: 30px;"></div>
</div>
</div>
</div>
</div>
<div ref="charta" style="height:300px;width: 100%;" />
</div>
</template>
@ -182,8 +178,9 @@
}
],
queryParams: {
newDate: "",
key: '' // key
customerSid: '',
date: "",
type: '' // key
},
nowDate: new Date().getFullYear() + "-" + (new Date().getMonth() + 1) + "-" + new Date().getDate(),
//
@ -240,7 +237,7 @@
btnHandle(btnKey) {
switch (btnKey) {
case 'build': //
this.doBuild()
this.doBuild()
break
case 'doClose': //
this.doClose()
@ -283,16 +280,17 @@
dosearch() {
this.nowDate = this.queryParams.newDate;
this.nowDate = this.queryParams.date;
this.loadList();
},
resetQuery() {
this.queryParams = {
newDate: "",
key: '' // key
customerSid: '',
date: "",
type: '' // key
}
this.loadList();
this.loadList();
},
//
@ -338,20 +336,20 @@
return sums
},
//
doBuild(){
doBuild() {
this.$message({
showClose: true,
type:'success',
message:'功能暂未完善...'
type: 'success',
message: '功能暂未完善...'
})
},
//
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
}
</script>

510
base-ui/src/views/risk/thresholdAnalysis.vue

@ -1,197 +1,345 @@
<template>
<div class="app-container">
<div style="margin-left:16px;">
<h3>{{ name }}</h3>
</div>
<div class = "current-data">
<div class = "upper">
</div>
<div v-show="viewState == 1">
<button-bar ref="btnbar" view-title="在途商品管理表" :btndisabled="btndisabled" @btnhandle="btnHandle" />
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">
{{ searchxianshitit }}
</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="queryParams" :model="queryParams" :inline="true" class="tab-header">
<el-form-item label="日期">
<el-date-picker v-model="queryParams.date" type="date" clearable value-format="yyyy-MM-dd"
placeholder="选择日期" />
</el-form-item>
<el-form-item label="类别">
<el-select v-model="queryParams.type" filterable placeholder="全部" clearable>
<el-option v-for="item in state_list" :key="item.dictKey" :label="item.dictValue"
:value="item.dictKey">
</el-option>
</el-select>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" size="small" icon="el-icon-search" @click="dosearch">查询</el-button>
<el-button type="primary" size="small" icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</div>
</div>
</div>
<div id="main" style="width: 100%;height: 500px;min-height: 480px;margin-top: 30px;"></div>
<div style="margin-top: 30px;">
<el-table v-loading="tableLoading" :data="thresholdAnalysisTable" border style="width: 100%">
<el-table-column width="60" prop="num" label="序号" type="index" :index="indexMethod" abort=""
align="center" />
<el-table-column prop="date" label="数据日期" align="center" />
<el-table-column prop="stockValue" label="仓库货值(元)" align="center" />
<el-table-column prop="onWayGoodsValue" label="在途货值(元)" align="center" />
<el-table-column prop="storeValue" label="门店货值(元)" align="center" />
<el-table-column prop="accountBalance" label="账户余额(元)" align="center" />
<el-table-column prop="accountsReceivable" label="应收账款(元)" align="center" />
<el-table-column prop="paymentAmount" label="借款金额(元)" align="center" />
<el-table-column prop="threshold" label="阀值" align="center" />
</el-table>
</div>
<!-- End 项目列表 -->
<div class="pages">
<div class="tit" />
<!-- 翻页 -->
<pagination v-show="thresholdAnalysisTable.length > 0" :total="queryParams.total"
:page.sync="queryParams.current" :limit.sync="queryParams.size" @pagination="loadList" />
</div>
</div>
<div ref="charta" class ="lower" /></div>
</div>
</div>
</div>
</template>
<script>
import * as echarts from 'echarts'
import req from '@/api/supervise/thresholdanalysis'
import ButtonBar from '@/components/ButtonBar'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import * as echarts from 'echarts';
export default {
name: '阀值分析',
components: {
ButtonBar,
Pagination,
pageye
},
// components: { },
data() {
return {
currentDate:"2023-01-01",
name: '阀值分析',
myCharta: null,
}
},
created() {
//
// this.init()
//
// this.getList()
},
beforeDestroy() {
if (this.myCharta) {
this.myCharta.dispose()
this.myCharta = null
btndisabled: false,
viewState: 1, // 1 2 3 4
isSearchShow: false,
searchxianshitit: '显示查询条件',
tableLoading: false,
tableKey: 0,
// 1.,2.3.
state_list: [{
dictKey: 1,
dictValue: '全部'
},
{
dictKey: 2,
dictValue: '常规商品'
}, {
dictKey: 3,
dictValue: '烟草'
}
],
btnList: [ //
{
type: 'success',
size: 'small',
icon: 'export',
btnKey: 'build',
btnLabel: '导出'
},
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
queryParams: {
current: 1,
size: 10,
total: 0,
params: {
customerSid: '',
date: "",
type: '',
} // key
},
nowDate: new Date().getFullYear() + "-" + (new Date().getMonth() + 1) + "-" + new Date().getDate(),
thresholdAnalysisTable: [{
num: '1',
date: '2023-01-01',
stockValue: '319314',
onWayGoodsValue: '3474943',
storeValue: '369546',
accountBalance: '435234',
accountsReceivable: '565234',
paymentAmount: '544632',
threshold: "454657"
}, {
num: '2',
date: '2023-01-02',
stockValue: '434577',
onWayGoodsValue: '324536',
storeValue: '8765234',
accountBalance: '876543',
accountsReceivable: '324365',
paymentAmount: '7238734',
threshold: "3454743"
}, {
num: '3',
date: '2023-01-03',
stockValue: '345467',
onWayGoodsValue: '634242',
storeValue: '2367364',
accountBalance: '734534',
accountsReceivable: '2356734',
paymentAmount: '743345',
threshold: "36345"
}, {
num: '4',
date: '2023-01-04',
stockValue: '435632',
onWayGoodsValue: '2455234',
storeValue: '32434523',
accountBalance: '2343523',
accountsReceivable: '565234',
paymentAmount: '234234',
threshold: "45676453"
}, {
num: '5',
date: '2023-01-05',
stockValue: '453423',
onWayGoodsValue: '1324354',
storeValue: '65342',
accountBalance: '13243',
accountsReceivable: '54342',
paymentAmount: '34323',
threshold: "3243424"
}],
analysisChartData: {
title: {
text: ''
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {
show:false
}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [{
name: 'Email',
type: 'line',
stack: 'Total',
data: [120, 132, 101, 134, 90, 230, 210]
},
{
name: 'Union Ads',
type: 'line',
stack: 'Total',
data: [220, 182, 191, 234, 290, 330, 310]
},
{
name: 'Video Ads',
type: 'line',
stack: 'Total',
data: [150, 232, 201, 154, 190, 330, 410]
},
{
name: 'Direct',
type: 'line',
stack: 'Total',
data: [320, 332, 301, 334, 390, 330, 320]
},
{
name: 'Search Engine',
type: 'line',
stack: 'Total',
data: [820, 932, 901, 934, 1290, 1330, 1320]
}
]
}
}
},
mounted() {
this.$nextTick(() => {
// this.initChartaThreshold()
this.initCharta()
})
this.$refs['btnbar'].setButtonList(this.btnList)
},
created() {
this.loadList()
},
methods: {
initCharta() {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
switch (btnKey) {
case 'toAdd':
this.toAdd()
break
case 'doDel':
this.doDel()
break
case 'doClose':
this.doClose()
break
default:
break
}
},
loadList() {
this.tableLoading = true
let _this = this
req.listPage(_this.queryParams).then((resp) => {
_this.tableLoading = false
if (resp.success) {
console.log('11111',resp.data)
const data = resp.data
_this.queryParams.total = data.total
_this.thresholdAnalysisTable = data.thresholdAnalysisTable
_this.analysisChartData = data.analysisChartData
_this. drawLine()
_this.tableLoading = false
} else {
// resp.code
_this.thresholdAnalysisTable = []
_this.analysisChartData = {}
_this.queryParams.total = 0
}
}).catch(() => {
_this.tableLoading = false
})
},
//
indexMethod(index) {
var pagestart = (this.queryParams.current - 1) * this.queryParams.size
var pageindex = index + 1 + pagestart
return pageindex
},
// 线
drawLine() {
// domecharts
// this.myChartaThreshold = echarts.init(this.$refs.myChartaThreshold)
this.myCharta = echarts.init(this.$refs.charta)
this.myCharta.setOption(
{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
}
},
toolbox: {
feature: {
dataView: { show: false, readOnly: false },
magicType: { show: false, type: ['line', 'bar'] },
restore: { show: false },
saveAsImage: { show: false }
}
},
legend: {
data: ['仓库货值', '在途货值', ' 门店货值', '帐户余额', '应收帐款', '借款金额', '阀值']
},
xAxis: [
{
type: 'category',
data: ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05', '2023-01-06', '2023-01-07'],
axisPointer: {
type: 'shadow'
}
}
],
yAxis: [
{
type: 'value',
name: '人民币',
min: 0,
max: 250,
interval: 50,
axisLabel: {
formatter: '{value} 元'
}
},
{
type: 'value',
name: '百分比',
min: 0,
max: 25,
interval: 5,
axisLabel: {
formatter: '{value} '
}
}
],
series: [
{
name: '仓库货值',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + ' 元';
}
},
data: [
2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3
]
},
{
name: '在途货值',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + ' 元';
}
},
data: [
2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
]
},
{
name: ' 门店货值',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + ' 元';
}
},
data: [
2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
]
},
{
name: '帐户余额',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + ' 元';
}
},
data: [
2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
]
},
{
name: '应收帐款',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + ' 元';
}
},
data: [
2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
]
},
{
name: '借款金额',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + '元';
}
},
data: [
2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
]
},
{
name: '阀值',
type: 'line',
yAxisIndex: 1,
tooltip: {
valueFormatter: function (value) {
return value + '%';
}
},
data: [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
},
]
var myChart = echarts.init(document.getElementById('main'));
//
console.log('option', this.analysisChartData)
myChart.setOption(this.analysisChartData);
},
dosearch() {
this.nowDate = this.queryParams.date;
this.loadList();
},
resetQuery() {
this.queryParams = {
current: 1,
size: 10,
total: 0,
params: {
customerSid: '',
date: '',
type: '',
}
)
}
this.loadList()
},
//
doBuild() {
this.$message({
showClose: true,
type: 'success',
message: '功能暂未完善...'
})
},
getList() {},
//
handleReturn() {
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
@ -199,19 +347,19 @@
</script>
<style>
.current-data{
width:100%;
height:500px;
.current-data {
width: 100%;
height: 500px;
}
.current-data .upper{
width:100%;
height:100px;
.current-data .upper {
width: 100%;
height: 100px;
}
.current-data .lower{
width:100%;
height:600px;
.current-data .lower {
width: 100%;
height: 600px;
float: left;
margin-left: 10px;

23
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageCountMapper.java

@ -83,4 +83,27 @@ public interface GdInstorageCountMapper extends BaseMapper<GdInstorageCount> {
*/
@Select("SELECT name,code,CONVERT(billTotalPrice,DECIMAL(12,2)) billTotalPrice,billDate,arrivalDate FROM hz_gysddmxb")
List<Map<String, Object>> ddmxb();
/**
* 烟草订单明细表
*
* @return
*/
@Select("SELECT prs.storeName storeName ,prt.code code ,CONVERT(SUM(prs.price),DECIMAL(12,2)) price,prt.purchaseDate purchaseDate, " +
"prt.arrivalDate arrivalDate " +
" FROM purchase_requisition_store prs " +
"LEFT JOIN `purchase_requisition_tobacco` prt ON prt.sid=prs.mainsid " +
"GROUP BY prs.storeCode ORDER BY prs.storeName ")
List<Map<String, Object>> ycddmxb();
@Select("SELECT CONCAT('[',prs.storeCode,']',prs.storeName) storeName , " +
"CONVERT(SUM(prs.price),DECIMAL(12,2)) ddspjz, " +
"CONVERT(IFNULL(SUM(giy.colq16),0),DECIMAL(12,2)) colq16, " +
"CONVERT(IF(SUM(prs.price)-IFNULL(SUM(giy.colq16),0)>0,SUM(prs.price)-IFNULL(SUM(giy.colq16),0),0),DECIMAL(12,2)) ztprodValue1, " +
"CONVERT(IF(IFNULL(SUM(giy.colq16),0)-SUM(prs.price)>0,IFNULL(SUM(giy.colq16),0)-SUM(prs.price),0),DECIMAL(12,2)) ztprodValue2 " +
" FROM `purchase_requisition_store` prs " +
"LEFT JOIN `purchase_requisition_tobacco_details` prtd ON prs.sid=prtd.mainsid " +
"LEFT JOIN `gd_instorage_yc` giy ON giy.colb1=prs.storeCode " +
"GROUP BY prs.storeCode ")
List<Map<String, Object>> ycspdhmxb();
}

82
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageCountService.java

@ -136,10 +136,10 @@ public class GdInstorageCountService extends ServiceImpl<GdInstorageCountMapper,
writer.writeCellValue(7, y, map.get("sfyq"));
}
writer.writeCellValue(0, countRow, "合计");
writer.writeCellValue(2, countRow, NumberUtil.decimalFormat("0.00", cbilltotalprice));
writer.writeCellValue(3, countRow, NumberUtil.decimalFormat("0.00", cprodvalue));
writer.writeCellValue(4, countRow, NumberUtil.decimalFormat("0.00", cwdhjz));
writer.writeCellValue(5, countRow, NumberUtil.decimalFormat("0.00", ccchjz));
writer.writeCellValue(2, countRow, cbilltotalprice);
writer.writeCellValue(3, countRow, cprodvalue);
writer.writeCellValue(4, countRow, cwdhjz);
writer.writeCellValue(5, countRow, ccchjz);
// 商品到货明细表
writer.setSheet(1);
@ -165,7 +165,7 @@ public class GdInstorageCountService extends ServiceImpl<GdInstorageCountMapper,
cprodNum = cprodNum + ExcelTool.toDouble(map.get("prodNum"));
writer.writeCellValue(6, y, map.get("prodValue"));
cprodValue = cprodValue + ExcelTool.toDouble(map.get("prodValue"));
writer.writeCellValue(7, y, Math.round(ExcelTool.toDouble(map.get("ztnumber"))));
writer.writeCellValue(7, y, Math.round(ExcelTool.toDouble(map.get("ztnumber"))));
cztnumber = cztnumber + ExcelTool.toDouble(map.get("ztnumber"));
writer.writeCellValue(8, y, map.get("ztprodValue1"));
cztprodValue1 = cztprodValue1 + ExcelTool.toDouble(map.get("ztprodValue1"));
@ -174,12 +174,12 @@ public class GdInstorageCountService extends ServiceImpl<GdInstorageCountMapper,
}
writer.writeCellValue(0, countRow2, "合计");
writer.writeCellValue(3, countRow2, Math.round(cnumber));
writer.writeCellValue(4, countRow2, NumberUtil.decimalFormat("0.00", cptotalPrice));
writer.writeCellValue(4, countRow2, cptotalPrice);
writer.writeCellValue(5, countRow2, Math.round(cprodNum));
writer.writeCellValue(6, countRow2, NumberUtil.decimalFormat("0.00", cprodValue));
writer.writeCellValue(6, countRow2, cprodValue);
writer.writeCellValue(7, countRow2, Math.round(cztnumber));
writer.writeCellValue(8, countRow2, NumberUtil.decimalFormat("0.00", cztprodValue1));
writer.writeCellValue(9, countRow2, NumberUtil.decimalFormat("0.00", cztprodValue2));
writer.writeCellValue(8, countRow2, cztprodValue1);
writer.writeCellValue(9, countRow2, cztprodValue2);
// 订单明细表
writer.setSheet(2);
@ -204,13 +204,62 @@ public class GdInstorageCountService extends ServiceImpl<GdInstorageCountMapper,
writer.writeCellValue(5, y, map.get("arrivalDate"));
}
writer.writeCellValue(1, countRow3, "合计金额");
writer.writeCellValue(3, countRow3, NumberUtil.decimalFormat("0.00", cbillTotalPrice));
writer.writeCellValue(3, countRow3, cbillTotalPrice);
// 烟草商品到货明细表
// writer.setSheet(3);
writer.setSheet(3);
writer.writeCellValue(0, 1, "编号:ycspdhmxb" + dfmt1);
writer.writeCellValue(4, 1, "上报时间:" + dfmt2);
List<Map<String, Object>> list4 = baseMapper.ycspdhmxb();
if (list4 != null && !list4.isEmpty()) {
int size4 = list4.size();
int countRow4 = size4 + 3;
double ccddspjz = 0, cccolq16 = 0, ccztprodValue1 = 0, ccztprodValue2 = 0;
for (int y = 3; y < countRow2; y++) {
Map<String, Object> map = list4.get(y - 3);
writer.writeCellValue(0, y, "市烟草");
writer.writeCellValue(1, y, map.get("storeName"));
writer.writeCellValue(2, y, map.get("ddspjz"));
ccddspjz = ccddspjz + ExcelTool.toDouble(map.get("ddspjz"));
writer.writeCellValue(3, y, map.get("colq16"));
cccolq16 = cccolq16 + ExcelTool.toDouble(map.get("colq16"));
writer.writeCellValue(4, y, map.get("ztprodValue1"));
ccztprodValue1 = ccztprodValue1 + ExcelTool.toDouble(map.get("ztprodValue1"));
writer.writeCellValue(5, y, map.get("ztprodValue2"));
ccztprodValue2 = ccztprodValue2 + ExcelTool.toDouble(map.get("ztprodValue2"));
}
writer.writeCellValue(1, countRow4, "合计");
writer.writeCellValue(2, countRow4, ccddspjz);
writer.writeCellValue(3, countRow4, cccolq16);
writer.writeCellValue(4, countRow4, ccztprodValue1);
writer.writeCellValue(5, countRow4, ccztprodValue2);
}
// 烟草订单明细表
// writer.setSheet(4);
writer.setSheet(4);
writer.writeCellValue(0, 1, "编号:ycddmxb" + dfmt1);
writer.writeCellValue(4, 1, "数据时间:" + dfmt);
List<Map<String, Object>> list5 = baseMapper.ycddmxb();
if (list5 != null && !list5.isEmpty()) {
int size5 = list5.size();
int countRow5 = size5 + 3;
xh = 0;
double cPrice = 0;
for (int y = 3; y < countRow5; y++) {
Map<String, Object> map = list5.get(y - 3);
xh++;
writer.writeCellValue(0, y, xh);
writer.writeCellValue(1, y, map.get("storeName"));
writer.writeCellValue(2, y, map.get("code"));
writer.writeCellValue(3, y, map.get("price"));
cPrice = cPrice + ExcelTool.toDouble(map.get("price"));
writer.writeCellValue(4, y, map.get("purchaseDate"));
writer.writeCellValue(5, y, map.get("arrivalDate"));
}
writer.writeCellValue(1, countRow5, "合计金额");
writer.writeCellValue(3, countRow5, cPrice);
}
writer.flush();
writer.close();
@ -218,4 +267,13 @@ public class GdInstorageCountService extends ServiceImpl<GdInstorageCountMapper,
return rb.success().setData(url);
}
public double amountZaitu() {
double wdhjz = 0;
List<Map<String, Object>> list = baseMapper.gysdhhzb();
for (Map<String, Object> map : list) {
wdhjz = wdhjz + ExcelTool.toDouble(map.get("wdhjz"));
}
return wdhjz;
}
}

4
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageJmdMapper.java

@ -29,6 +29,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
* Project: yxt_supervise <br/>
@ -47,4 +48,7 @@ import org.apache.ibatis.annotations.Param;
public interface GdInstorageJmdMapper extends BaseMapper<GdInstorageJmd> {
@Delete("delete from gd_instorage_jmd where orderDate=#{orderDate} ")
void clearByOrderDate(@Param("orderDate") String orderDate);
@Select("SELECT IFNULL(sum(colq16),0) as amount FROM gd_instorage_jmd where orderDate=#{orderDate} ")
double amountOfDay(@Param("orderDate") String orderDate);
}

4
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageJmdService.java

@ -47,4 +47,8 @@ public class GdInstorageJmdService extends ServiceImpl<GdInstorageJmdMapper, GdI
public void clearByOrderDate(String orderDate) {
baseMapper.clearByOrderDate(orderDate);
}
public double amountOfDay(String orderDate) {
return baseMapper.amountOfDay(orderDate);
}
}

6
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageYcMapper.java

@ -29,6 +29,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
* Project: yxt_supervise <br/>
@ -47,4 +48,9 @@ import org.apache.ibatis.annotations.Param;
public interface GdInstorageYcMapper extends BaseMapper<GdInstorageYc> {
@Delete("delete from gd_instorage_yc where orderDate=#{orderDate} ")
void clearByOrderDate(@Param("orderDate") String orderDate);
@Select("select IFNULL(sum(t.colq16),0) as amount from ( " +
" select gig.* from gd_instorage_yc gig left join store_index si on gig.colb1=si.code " +
" where gig.orderDate=#{orderDate} and si.`type` ='连锁外加盟(销配结算)' ) t ")
double amountOfDayJmd(@Param("orderDate") String orderDate);
}

4
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageYcService.java

@ -46,4 +46,8 @@ public class GdInstorageYcService extends ServiceImpl<GdInstorageYcMapper, GdIns
public void clearByOrderDate(String orderDate) {
baseMapper.clearByOrderDate(orderDate);
}
public double amountOfDayJmd(String orderDate) {
return baseMapper.amountOfDayJmd( orderDate);
}
}

3
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryOkMapper.java

@ -98,4 +98,7 @@ public interface GdInventoryOkMapper extends BaseMapper<GdInventoryOk> {
@Select("select prodCode,CONVERT(IFNULL(sum(prodNum),0),CHAR) pnum from gd_inventory_ok group by prodCode")
List<Map<String, String>> numberOfProduct();
@Select("select IFNULL(sum(prodValue),0) from gd_inventory_ok")
double amountCurrent();
}

14
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryOkService.java

@ -72,6 +72,16 @@ public class GdInventoryOkService extends ServiceImpl<GdInventoryOkMapper, GdInv
baseMapper.clearData();
}
// 仓库库存明细表
public List<Map<String, Object>> listOfWarehouse() {
return baseMapper.listOfWarehouse();
}
// 仓库商品明细表
public List<Map<String, Object>> listOfProd(){
return baseMapper.listOfProd();
}
/**
* 库存汇总
*
@ -258,4 +268,8 @@ public class GdInventoryOkService extends ServiceImpl<GdInventoryOkMapper, GdInv
list.forEach(m -> map.put(m.get("prodCode"), m.get("pnum")));
return map;
}
public double amountCurrent() {
return baseMapper.amountCurrent();
}
}

2
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryService.java

@ -385,7 +385,7 @@ public class GdInventoryService extends ServiceImpl<GdInventoryMapper, GdInvento
}
}
if (checkYcProd(typeCode) && storeInfoService.containsCodeOfYc(warehouseCode)) {
if (checkYcProd(prodCode) && storeInfoService.containsCodeOfYcNoJmd(warehouseCode)) {
GdInventoryYc yc = new GdInventoryYc();
Map<String, Object> map = readMapFromRow(r);

32
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesMapper.java

@ -29,6 +29,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
/**
* Project: yxt_supervise <br/>
@ -48,4 +52,32 @@ public interface GdSalesMapper extends BaseMapper<GdSales> {
@Delete("delete from gd_sales where dataDate=#{dataDate} ")
void clearByDataDate(@Param("dataDate") String dataDate);
@Select("select t2.storeCode,si.name,t2.amount from( " +
" select storeCode,sum(t1.price) as amount from( " +
" select storeCode,saleNum*salePrice as price from gd_sales where dataDate=#{dataDate} " +
" ) t1 group by t1.storeCode " +
") t2 left join store_index si on t2.storecode=si.code ")
List<Map<String, Object>> listOfStoreOnDay(@Param("dataDate") String orderDate);
@Select("select count(1) from (select storeCode from gd_sales where dataDate=#{dataDate} group by storeCode) t")
int countStoreOnDay(@Param("dataDate") String orderDate);
@Select("select count(1) from (select prodCode from gd_sales where dataDate=#{dataDate} group by prodCode) t")
int countProductOnDay(@Param("dataDate") String orderDate);
@Select("select si.name,t1.* from ( " +
" select storeCode,orderType,orderNo,prodCode,prodName,saleNum,salePrice,saleNum*salePrice as amount from gd_sales where dataDate=#{dataDate} " +
") t1 left join store_index si on t1.storecode=si.code ")
List<Map<String, Object>> listOfProductOnDay(@Param("dataDate") String orderDate);
@Select("select CONVERT(IFNULL(sum(saleNum*salePrice),0),DECIMAL(12,2)) as amount from ( " +
" select gs.saleNum,gs.salePrice from gd_sales gs left join store_index si on gs.storeCode=si.code " +
" where gs.dataDate=#{dataDate} and si.`type` ='连网连锁店' ) t ")
double amountOfLsdOnDay(@Param("dataDate") String orderDate);
@Select("select CONVERT(IFNULL(sum(saleNum*salePrice),0),DECIMAL(12,2)) as amount from ( " +
" select gs.saleNum,gs.salePrice from gd_sales gs left join store_index si on gs.storeCode=si.code " +
" where gs.dataDate=#{dataDate} and si.`type` ='连锁内加盟' ) t ")
double amountOfLsnjmOnDay(String orderDate);
}

114
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesReportday.java

@ -20,66 +20,66 @@ public class GdSalesReportday extends EntityWithId {
private String kmdatea; // 科目/日,大前天
private String kmdateb; // 科目/日,前天
private String kmdatec; // 科目/日,昨天
private String xjlla; // 现金流量-经营活动产生的现金流量(元),大前天
private String xjllb; // 现金流量-经营活动产生的现金流量(元),前天
private String xjllc; // 现金流量-经营活动产生的现金流量(元),昨天
private String xsxja; // 销售商品收到的现金(元),大前天
private String xsxjb; // 销售商品收到的现金(元),前天
private String xsxjc; // 销售商品收到的现金(元),昨天
private String qtxja; // 收到其他与经营活动有关的现金(元),大前天
private String qtxjb; // 收到其他与经营活动有关的现金(元),前天
private String qtxjc; // 收到其他与经营活动有关的现金(元),昨天
private String cwfxhja; // 财务分析本项合计,大前天
private String cwfxhjb; // 财务分析本项合计,前天
private String cwfxhjc; // 财务分析本项合计,昨天
private String zcfza; // 资产负债-流动资产(元),大前天
private String zcfzb; // 资产负债-流动资产(元),前天
private String zcfzc; // 资产负债-流动资产(元),昨天
private String yszka; // 应收账款(元),大前天
private String yszkb; // 应收账款(元),前天
private String yszkc; // 应收账款(元),昨天
private String ldfza; // 流动负债(元),大前天
private String ldfzb; // 流动负债(元),前天
private String ldfzc; // 流动负债(元),昨天
private String yskxa; // 预收款项(元),大前天
private String yskxb; // 预收款项(元),前天
private String yskxc; // 预收款项(元),昨天
private double xjlla = 0; // 现金流量-经营活动产生的现金流量(元),大前天
private double xjllb = 0; // 现金流量-经营活动产生的现金流量(元),前天
private double xjllc = 0; // 现金流量-经营活动产生的现金流量(元),昨天
private double xsxja = 0; // 销售商品收到的现金(元),大前天
private double xsxjb = 0; // 销售商品收到的现金(元),前天
private double xsxjc = 0; // 销售商品收到的现金(元),昨天
private double qtxja = 0; // 收到其他与经营活动有关的现金(元),大前天
private double qtxjb = 0; // 收到其他与经营活动有关的现金(元),前天
private double qtxjc = 0; // 收到其他与经营活动有关的现金(元),昨天
private double cwfxhja = 0; // 财务分析本项合计,大前天
private double cwfxhjb = 0; // 财务分析本项合计,前天
private double cwfxhjc = 0; // 财务分析本项合计,昨天
private double zcfza = 0; // 资产负债-流动资产(元),大前天
private double zcfzb = 0; // 资产负债-流动资产(元),前天
private double zcfzc = 0; // 资产负债-流动资产(元),昨天
private double yszka = 0; // 应收账款(元),大前天
private double yszkb = 0; // 应收账款(元),前天
private double yszkc = 0; // 应收账款(元),昨天
private double ldfza = 0; // 流动负债(元),大前天
private double ldfzb = 0; // 流动负债(元),前天
private double ldfzc = 0; // 流动负债(元),昨天
private double yskxa = 0; // 预收款项(元),大前天
private double yskxb = 0; // 预收款项(元),前天
private double yskxc = 0; // 预收款项(元),昨天
private String qczhz; // 期初总货值
private String ycqchz; // 烟草期初货值
private String xmdatea; // 项目/日,前天
private String xmdateb; // 项目/日,昨天
private String xmdatec; // 项目/日,今天
private String zthza; // 在途货值(元),前天
private String zthzb; // 在途货值(元),昨天
private String zthzc; // 在途货值(元),今天
private String kchza; // 库存货值(元),前天
private String kchzb; // 库存货值(元),昨天
private String kchzc; // 库存货值(元),今天
private String zhyea; // 帐户余额(元)账户余额为前一天余额,前天
private String zhyeb; // 帐户余额(元)账户余额为前一天余额,昨天
private String zhyec; // 帐户余额(元)账户余额为前一天余额,今天
private String yjyszka; // 预警应收帐款(元),前天
private String yjyszkb; // 预警应收帐款(元),昨天
private String yjyszkc; // 预警应收帐款(元),今天
private String yjhja; // 主要预警指标本项合计,前天
private String yjhjb; // 主要预警指标本项合计,昨天
private String yjhjc; // 主要预警指标本项合计,今天
private String lwlsdze; // 连网连锁店,总额(元)
private String lwlsdyszk; // 连网连锁店,应收帐款(元)
private String lwlsdkcje; // 连网连锁店,扣除应收金额(元)
private String lsnjmze; // 连锁内加盟,总额(元)
private String lsnjmyszk; // 连锁内加盟,应收帐款(元)
private String lsnjmkcje; // 连锁内加盟,扣除应收金额(元)
private String pszxze; // 配送中心,总额(元)
private String pszxyszk; // 配送中心,应收帐款(元)
private String pszxkcje; // 配送中心,扣除应收金额(元)
private String lswjmze; // 连锁外加盟(销配结算),总额(元)
private String lswjmyszk; // 连锁外加盟(销配结算),应收帐款(元)
private String lswjmkcje; // 连锁外加盟(销配结算),扣除应收金额(元)
private String ycmdze; // 36524集团报烟门店仓,总额(元)
private String ycmdyszk; // 36524集团报烟门店仓,应收帐款(元)
private String ycmdkcje; // 36524集团报烟门店仓,扣除应收金额(元)
private String ycjmdze; // 烟草连锁外加盟(销配结算),总额(元)
private String ycjmdyszk; // 烟草连锁外加盟(销配结算),应收帐款(元)
private String ycjmdkcje; // 烟草连锁外加盟(销配结算),扣除应收金额(元)
private double zthza = 0; // 在途货值(元),前天
private double zthzb = 0; // 在途货值(元),昨天
private double zthzc = 0; // 在途货值(元),今天
private double kchza = 0; // 库存货值(元),前天
private double kchzb = 0; // 库存货值(元),昨天
private double kchzc = 0; // 库存货值(元),今天
private double zhyea = 0; // 帐户余额(元)账户余额为前一天余额,前天
private double zhyeb = 0; // 帐户余额(元)账户余额为前一天余额,昨天
private double zhyec = 0; // 帐户余额(元)账户余额为前一天余额,今天
private double yjyszka = 0; // 预警应收帐款(元),前天
private double yjyszkb = 0; // 预警应收帐款(元),昨天
private double yjyszkc = 0; // 预警应收帐款(元),今天
private double yjhja = 0; // 主要预警指标本项合计,前天
private double yjhjb = 0; // 主要预警指标本项合计,昨天
private double yjhjc = 0; // 主要预警指标本项合计,今天
private double lwlsdze = 0; // 连网连锁店,总额(元)
private double lwlsdyszk = 0; // 连网连锁店,应收帐款(元)
private double lwlsdkcje = 0; // 连网连锁店,扣除应收金额(元)
private double lsnjmze = 0; // 连锁内加盟,总额(元)
private double lsnjmyszk = 0; // 连锁内加盟,应收帐款(元)
private double lsnjmkcje = 0; // 连锁内加盟,扣除应收金额(元)
private double pszxze = 0; // 配送中心,总额(元)
private double pszxyszk = 0; // 配送中心,应收帐款(元)
private double pszxkcje = 0; // 配送中心,扣除应收金额(元)
private double lswjmze = 0; // 连锁外加盟(销配结算),总额(元)
private double lswjmyszk = 0; // 连锁外加盟(销配结算),应收帐款(元)
private double lswjmkcje = 0; // 连锁外加盟(销配结算),扣除应收金额(元)
private double ycmdze = 0; // 36524集团报烟门店仓,总额(元)
private double ycmdyszk = 0; // 36524集团报烟门店仓,应收帐款(元)
private double ycmdkcje = 0; // 36524集团报烟门店仓,扣除应收金额(元)
private double ycjmdze = 0; // 烟草连锁外加盟(销配结算),总额(元)
private double ycjmdyszk = 0; // 烟草连锁外加盟(销配结算),应收帐款(元)
private double ycjmdkcje = 0; // 烟草连锁外加盟(销配结算),扣除应收金额(元)
}

184
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesReportdayService.java

@ -2,8 +2,15 @@ package com.yxt.supervise.portal.biz.gdsales;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yxt.supervise.portal.biz.gdinstorage.GdInstorageCountService;
import com.yxt.supervise.portal.biz.gdinstorage.GdInstorageJmdService;
import com.yxt.supervise.portal.biz.gdinstorage.GdInstorageYcService;
import com.yxt.supervise.portal.biz.gdinventory.GdInventoryOkService;
import com.yxt.supervise.portal.biz.gdwholesale.GdWholesaleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
@ -12,87 +19,128 @@ import java.util.List;
@Service
public class GdSalesReportdayService extends ServiceImpl<GdSalesReportdayMapper, GdSalesReportday> {
@Autowired
private GdSalesService gdSalesService;
@Autowired
private GdSalesYcService gdSalesYcService;
@Autowired
private GdWholesaleService gdWholesaleService;
@Autowired
private GdInstorageJmdService gdInstorageJmdService;
@Autowired
private GdInstorageYcService gdInstorageYcService;
@Autowired
private GdInventoryOkService gdInventoryOkService;
@Autowired
private GdInstorageCountService gdInstorageCountService;
public GdSalesReportday clearAndInitByOrderDate(String orderDate) {
this.clearByOrderDate(orderDate); // 清除数据日的数据
String dfmt2 = DateUtil.format(new Date(), "yyyy-MM-dd HH:mm");
Date curDate = new Date();
String dfmt = DateUtil.format(curDate, "yyyy-MM-dd");
String dfmt2 = DateUtil.format(curDate, "yyyy-MM-dd HH:mm");
String preOrderDate = dayAgo(orderDate, -1); // 前一天
String befOrderDate = dayAgo(orderDate, -2); // 前两天
String thrOrderDate = dayAgo(orderDate, -3); // 前三天
GdSalesReportday preReport = fetchByOrderDate(preOrderDate);
if (preReport == null)
preReport = new GdSalesReportday();
GdSalesReportday preRp = fetchByOrderDate(preOrderDate);
if (preRp == null)
preRp = new GdSalesReportday();
GdSalesReportday rp = new GdSalesReportday();
rp.setOrderDate(orderDate); // 单据日期
rp.setSerialNumber("xsjyrbb" + orderDate); // 编号
rp.setSerialNumber("xsjyrbb" + orderDate.replace("-", "")); // 编号
rp.setReportTime(dfmt2); // 上报时间
rp.setKmdatea(thrOrderDate); // 科目/日,大前天
rp.setKmdateb(befOrderDate); // 科目/日,前天
rp.setKmdatec(preOrderDate); // 科目/日,昨天
rp.setXjlla(""); // 现金流量-经营活动产生的现金流量(元),大前天
rp.setXjllb(""); // 现金流量-经营活动产生的现金流量(元),前天
rp.setXjllc(""); // 现金流量-经营活动产生的现金流量(元),昨天
rp.setXsxja(""); // 销售商品收到的现金(元),大前天
rp.setXsxjb(""); // 销售商品收到的现金(元),前天
rp.setXsxjc(""); // 销售商品收到的现金(元),昨天
rp.setQtxja(""); // 收到其他与经营活动有关的现金(元),大前天
rp.setQtxjb(""); // 收到其他与经营活动有关的现金(元),前天
rp.setQtxjc(""); // 收到其他与经营活动有关的现金(元),昨天
rp.setCwfxhja(""); // 财务分析本项合计,大前天
rp.setCwfxhjb(""); // 财务分析本项合计,前天
rp.setCwfxhjc(""); // 财务分析本项合计,昨天
rp.setZcfza(""); // 资产负债-流动资产(元),大前天
rp.setZcfzb(""); // 资产负债-流动资产(元),前天
rp.setZcfzc(""); // 资产负债-流动资产(元),昨天
rp.setYszka(""); // 应收账款(元),大前天
rp.setYszkb(""); // 应收账款(元),前天
rp.setYszkc(""); // 应收账款(元),昨天
rp.setLdfza(""); // 流动负债(元),大前天
rp.setLdfzb(""); // 流动负债(元),前天
rp.setLdfzc(""); // 流动负债(元),昨天
rp.setYskxa(""); // 预收款项(元),大前天
rp.setYskxb(""); // 预收款项(元),前天
rp.setYskxc(""); // 预收款项(元),昨天
rp.setKmdatea(befOrderDate); // 科目/日,大前天
rp.setKmdateb(preOrderDate); // 科目/日,前天
rp.setKmdatec(orderDate); // 科目/日,昨天
// rp.setXjlla(""); // 现金流量-经营活动产生的现金流量(元),大前天
// rp.setXjllb(""); // 现金流量-经营活动产生的现金流量(元),前天
// rp.setXjllc(""); // 现金流量-经营活动产生的现金流量(元),昨天
rp.setXsxja(preRp.getXsxjb()); // 销售商品收到的现金(元),大前天
rp.setXsxjb(preRp.getXsxjc()); // 销售商品收到的现金(元),前天
rp.setXsxjc(0); // 销售商品收到的现金(元),昨天 //后面计算
// rp.setQtxja(""); // 收到其他与经营活动有关的现金(元),大前天
// rp.setQtxjb(""); // 收到其他与经营活动有关的现金(元),前天
// rp.setQtxjc(""); // 收到其他与经营活动有关的现金(元),昨天
rp.setCwfxhja(preRp.getCwfxhjb()); // 财务分析本项合计,大前天
rp.setCwfxhjb(preRp.getCwfxhjc()); // 财务分析本项合计,前天
rp.setCwfxhjc(0); // 财务分析本项合计,昨天 //后面计算
// rp.setZcfza(""); // 资产负债-流动资产(元),大前天
// rp.setZcfzb(""); // 资产负债-流动资产(元),前天
// rp.setZcfzc(""); // 资产负债-流动资产(元),昨天
// rp.setYszka(""); // 应收账款(元),大前天
// rp.setYszkb(""); // 应收账款(元),前天
// rp.setYszkc(""); // 应收账款(元),昨天
// rp.setLdfza(""); // 流动负债(元),大前天
// rp.setLdfzb(""); // 流动负债(元),前天
// rp.setLdfzc(""); // 流动负债(元),昨天
// rp.setYskxa(""); // 预收款项(元),大前天
// rp.setYskxb(""); // 预收款项(元),前天
// rp.setYskxc(""); // 预收款项(元),昨天
rp.setQczhz(""); // 期初总货值
rp.setYcqchz(""); // 烟草期初货值
rp.setXmdatea(""); // 项目/日,前天
rp.setXmdateb(""); // 项目/日,昨天
rp.setXmdatec(""); // 项目/日,今天
rp.setZthza(""); // 在途货值(元),前天
rp.setZthzb(""); // 在途货值(元),昨天
rp.setZthzc(""); // 在途货值(元),今天
rp.setKchza(""); // 库存货值(元),前天
rp.setKchzb(""); // 库存货值(元),昨天
rp.setKchzc(""); // 库存货值(元),今天
rp.setZhyea(""); // 帐户余额(元)账户余额为前一天余额,前天
rp.setZhyeb(""); // 帐户余额(元)账户余额为前一天余额,昨天
rp.setZhyec(""); // 帐户余额(元)账户余额为前一天余额,今天
rp.setYjyszka(""); // 预警应收帐款(元),前天
rp.setYjyszkb(""); // 预警应收帐款(元),昨天
rp.setYjyszkc(""); // 预警应收帐款(元),今天
rp.setYjhja(""); // 主要预警指标本项合计,前天
rp.setYjhjb(""); // 主要预警指标本项合计,昨天
rp.setYjhjc(""); // 主要预警指标本项合计,今天
rp.setLwlsdze(""); // 连网连锁店,总额(元)
rp.setLwlsdyszk(""); // 连网连锁店,应收帐款(元)
rp.setLwlsdkcje(""); // 连网连锁店,扣除应收金额(元)
rp.setLsnjmze(""); // 连锁内加盟,总额(元)
rp.setLsnjmyszk(""); // 连锁内加盟,应收帐款(元)
rp.setLsnjmkcje(""); // 连锁内加盟,扣除应收金额(元)
rp.setPszxze(""); // 配送中心,总额(元)
rp.setPszxyszk(""); // 配送中心,应收帐款(元)
rp.setPszxkcje(""); // 配送中心,扣除应收金额(元)
rp.setLswjmze(""); // 连锁外加盟(销配结算),总额(元)
rp.setLswjmyszk(""); // 连锁外加盟(销配结算),应收帐款(元)
rp.setLswjmkcje(""); // 连锁外加盟(销配结算),扣除应收金额(元)
rp.setYcmdze(""); // 36524集团报烟门店仓,总额(元)
rp.setYcmdyszk(""); // 36524集团报烟门店仓,应收帐款(元)
rp.setYcmdkcje(""); // 36524集团报烟门店仓,扣除应收金额(元)
rp.setYcjmdze(""); // 烟草连锁外加盟(销配结算),总额(元)
rp.setYcjmdyszk(""); // 烟草连锁外加盟(销配结算),应收帐款(元)
rp.setYcjmdkcje(""); // 烟草连锁外加盟(销配结算),扣除应收金额(元)
rp.setXmdatea(StrUtil.isBlank(preRp.getXmdateb()) ? preOrderDate : preRp.getXmdateb()); // 项目/日,前天
rp.setXmdateb(StrUtil.isBlank(preRp.getXmdatec()) ? orderDate : preRp.getXmdatec()); // 项目/日,昨天
rp.setXmdatec(dfmt); // 项目/日,今天
rp.setZthza(preRp.getZthzb()); // 在途货值(元),前天
rp.setZthzb(preRp.getZthzc()); // 在途货值(元),昨天
rp.setZthzc(0); // 在途货值(元),今天 // 计算
rp.setKchza(preRp.getKchzb()); // 库存货值(元),前天
rp.setKchzb(preRp.getKchzc()); // 库存货值(元),昨天
rp.setKchzc(0); // 库存货值(元),今天 // 计算
// rp.setZhyea(""); // 帐户余额(元)账户余额为前一天余额,前天
// rp.setZhyeb(""); // 帐户余额(元)账户余额为前一天余额,昨天
// rp.setZhyec(""); // 帐户余额(元)账户余额为前一天余额,今天
// rp.setYjyszka(""); // 预警应收帐款(元),前天
// rp.setYjyszkb(""); // 预警应收帐款(元),昨天
// rp.setYjyszkc(""); // 预警应收帐款(元),今天
// rp.setYjhja(""); // 主要预警指标本项合计,前天
// rp.setYjhjb(""); // 主要预警指标本项合计,昨天
// rp.setYjhjc(""); // 主要预警指标本项合计,今天
double xsLwlsd = gdSalesService.amountOfLwlsdDay(orderDate);
rp.setLwlsdze(xsLwlsd); // 连网连锁店,总额(元)
// rp.setLwlsdyszk(""); // 连网连锁店,应收帐款(元)
rp.setLwlsdkcje(xsLwlsd); // 连网连锁店,扣除应收金额(元)
double xsLsnjm = gdSalesService.amountOfLsnjmDay(orderDate);
rp.setLsnjmze(xsLsnjm); // 连锁内加盟,总额(元)
// rp.setLsnjmyszk(""); // 连锁内加盟,应收帐款(元)
rp.setLsnjmkcje(xsLsnjm); // 连锁内加盟,扣除应收金额(元)
double xsPszx = gdWholesaleService.amountOfDay(orderDate);
rp.setPszxze(xsPszx); // 配送中心,总额(元)
// rp.setPszxyszk(""); // 配送中心,应收帐款(元)
rp.setPszxkcje(xsPszx); // 配送中心,扣除应收金额(元)
double xsLswjm = gdInstorageJmdService.amountOfDay(orderDate);
rp.setLswjmze(xsLswjm); // 连锁外加盟(销配结算),总额(元)
// rp.setLswjmyszk(""); // 连锁外加盟(销配结算),应收帐款(元)
rp.setLswjmkcje(xsLswjm); // 连锁外加盟(销配结算),扣除应收金额(元)
double xsYc = gdSalesYcService.amountOfDay(orderDate);
rp.setYcmdze(xsYc); // 36524集团报烟门店仓,总额(元)
// rp.setYcmdyszk(""); // 36524集团报烟门店仓,应收帐款(元)
rp.setYcmdkcje(xsYc); // 36524集团报烟门店仓,扣除应收金额(元)
double xsYcJmd = gdInstorageYcService.amountOfDayJmd(orderDate);
rp.setYcjmdze(xsYcJmd); // 烟草连锁外加盟(销配结算),总额(元)
// rp.setYcjmdyszk(""); // 烟草连锁外加盟(销配结算),应收帐款(元)
rp.setYcjmdkcje(xsYcJmd); // 烟草连锁外加盟(销配结算),扣除应收金额(元)
double xshz1 = Math.round((xsLwlsd + xsLsnjm + xsPszx + xsLswjm + xsYc + xsYcJmd) * 100) / 100;
rp.setXsxjc(xshz1); // 销售商品收到的现金(元),昨天 //后面计算
rp.setCwfxhjc(xshz1); // 财务分析本项合计,昨天 //后面计算
//在途货值
double zthz = gdInstorageCountService.amountZaitu();
rp.setZthzc(0); // 在途货值(元),今天 // 计算
//库存货值
double kzhz = gdInventoryOkService.amountCurrent();
rp.setKchzc(0); // 库存货值(元),今天 // 计算
baseMapper.insert(rp);
return rp;

244
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesService.java

@ -28,7 +28,6 @@ package com.yxt.supervise.portal.biz.gdsales;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
@ -164,6 +163,7 @@ public class GdSalesService extends ServiceImpl<GdSalesMapper, GdSales> {
odate = dataDate;
GdSalesGd gd = rowToEntity(r);
toInsertListGd.add(gd);
// 监管商品销售数据
if (gdRescategoryProdService.containsCode(prodCode) && storeIndexService.containsCodeWithOneNoJmd(storeCode)) {
GdSales gw = new GdSales();
BeanUtil.copyProperties(gd, gw);
@ -171,6 +171,7 @@ public class GdSalesService extends ServiceImpl<GdSalesMapper, GdSales> {
y++;
}
// 烟草销售数据
if (checkYcProd(typeTwo) && storeInfoService.containsCodeOfYc(storeCode)) {
GdSalesYc gyc = new GdSalesYc();
BeanUtil.copyProperties(gd, gyc);
@ -220,7 +221,7 @@ public class GdSalesService extends ServiceImpl<GdSalesMapper, GdSales> {
if (gdLog == null)
return rb.setMsg("上传记录未找到");
String orderDate = gdLog.getOrderDate();
GdSalesReportday reportday = gdSalesReportdayService.clearAndInitByOrderDate(orderDate);
GdSalesReportday reportday = gdSalesReportdayService.clearAndInitByOrderDate(orderDate);
Date curDate = new Date();
@ -240,19 +241,110 @@ public class GdSalesService extends ServiceImpl<GdSalesMapper, GdSales> {
// 销售汇总日报表
writer.setSheet(0);
xshzrbb(writer,reportday);
xshzrbb(writer, reportday);
// 门店销售明细表
// writer.setSheet(1);
writer.setSheet(1);
int storeCount = baseMapper.countStoreOnDay(orderDate);
List<Map<String, Object>> list1 = baseMapper.listOfStoreOnDay(orderDate);
// writer.writeCellValue(0, 1, "编号:mdxsmxb" + dfmt1);
writer.merge(1, 1, 0, 2, "编号:mdxsmxb" + dfmt1, false);
writer.writeCellValue(3, 1, "渠道数量: " + storeCount);
writer.writeCellValue(4, 1, " 上报时间:" + dfmt2);
int size1 = list1.size();
int countRow1 = size1 + 3;
double hj1 = 0;
int xh = 0;
for (int y = 3; y < countRow1; y++) {
Map<String, Object> map = list1.get(y - 3);
xh++;
writer.writeCellValue(0, y, xh);
// writer.writeCellValue(1, y, map.get("name"));
writer.merge(y, y, 1, 3, map.get("name"), false);
writer.writeCellValue(4, y, map.get("amount"));
hj1 = hj1 + ExcelTool.toDouble(map.get("amount"));
}
// writer.writeCellValue(1, countRow1, "合计");
writer.merge(countRow1, countRow1, 0, 3, "合计", false);
writer.writeCellValue(4, countRow1, hj1);
// 门店商品销售明细表
// writer.setSheet(2);
writer.setSheet(2);
int productCount = baseMapper.countProductOnDay(orderDate);
List<Map<String, Object>> list2 = baseMapper.listOfProductOnDay(orderDate);
// writer.writeCellValue(0, 1, "编号:mdspxsmxb" + dfmt1);
writer.merge(1, 1, 0, 2, "编号:mdspxsmxb" + dfmt1, false);
// writer.writeCellValue(3, 1, "商品数量: " + productCount);
writer.merge(1, 1, 3, 4, "商品数量: " + productCount, false);
// writer.writeCellValue(4, 1, " 上报时间:" + dfmt2);
writer.merge(1, 1, 5, 7, "上报时间:" + dfmt2, false);
int size2 = list2.size();
int countRow2 = size2 + 3;
double hj2 = 0;
for (int y = 3; y < countRow2; y++) {
Map<String, Object> map = list2.get(y - 3);
writer.writeCellValue(0, y, map.get("name"));
writer.writeCellValue(1, y, map.get("orderType"));
writer.writeCellValue(2, y, map.get("orderNo"));
writer.writeCellValue(3, y, map.get("prodCode"));
writer.writeCellValue(4, y, map.get("prodName"));
writer.writeCellValue(5, y, Math.round(ExcelTool.toDouble( map.get("saleNum"))));
writer.writeCellValue(6, y, map.get("salePrice"));
writer.writeCellValue(7, y, map.get("amount"));
hj2 = hj2 + ExcelTool.toDouble(map.get("amount"));
}
writer.merge(countRow2, countRow2, 0, 6, "合计", false);
writer.writeCellValue(7, countRow2, hj2);
// 烟草门店销售明细表
// writer.setSheet(3);
writer.setSheet(3);
int storeCountyc = gdSalesYcService.countStoreOnDay(orderDate);
List<Map<String, Object>> list1yc = gdSalesYcService.listOfStoreOnDay(orderDate);
// writer.writeCellValue(0, 1, "编号:ycmdxsmxb" + dfmt1);
writer.merge(1, 1, 0, 2, "编号:ycmdxsmxb" + dfmt1, false);
writer.writeCellValue(3, 1, "渠道数量: " + storeCountyc);
writer.writeCellValue(4, 1, " 上报时间:" + dfmt2);
int size1yc = list1yc.size();
int countRow1yc = size1yc + 3;
double hj1yc = 0;
xh = 0;
for (int y = 3; y < countRow1yc; y++) {
Map<String, Object> map = list1yc.get(y - 3);
xh++;
writer.writeCellValue(0, y, xh);
// writer.writeCellValue(1, y, map.get("name"));
writer.merge(y, y, 1, 3, map.get("name"), false);
writer.writeCellValue(4, y, map.get("amount"));
hj1yc = hj1yc + ExcelTool.toDouble(map.get("amount"));
}
// writer.writeCellValue(1, countRow1yc, "合计");
writer.merge(countRow1yc, countRow1yc, 0, 3, "合计", false);
writer.writeCellValue(4, countRow1yc, hj1yc);
// 烟草门店商品销售明细表
// writer.setSheet(4);
writer.setSheet(4);
int productCountyc = gdSalesYcService.countProductOnDay(orderDate);
List<Map<String, Object>> list2yc = gdSalesYcService.listOfProductOnDay(orderDate);
writer.merge(1, 1, 0, 2, "编号:ycmdspxsmxb" + dfmt1, false);
writer.merge(1, 1, 3, 4, "商品数量: " + productCountyc, false);
writer.merge(1, 1, 5, 7, "上报时间:" + dfmt2, false);
int size2yc = list2yc.size();
int countRow2yc = size2yc + 3;
double hj2yc = 0;
for (int y = 3; y < countRow2yc; y++) {
Map<String, Object> map = list2yc.get(y - 3);
writer.writeCellValue(0, y, map.get("name"));
writer.writeCellValue(1, y, map.get("orderType"));
writer.writeCellValue(2, y, map.get("orderNo"));
writer.writeCellValue(3, y, map.get("prodCode"));
writer.writeCellValue(4, y, map.get("prodName"));
writer.writeCellValue(5, y, Math.round(ExcelTool.toDouble( map.get("saleNum"))));
writer.writeCellValue(6, y, map.get("salePrice"));
writer.writeCellValue(7, y, map.get("amount"));
hj2yc = hj2yc + ExcelTool.toDouble(map.get("amount"));
}
writer.merge(countRow2yc, countRow2yc, 0, 6, "合计", false);
writer.writeCellValue(7, countRow2yc, hj2yc);
writer.flush();
writer.close();
@ -267,70 +359,78 @@ public class GdSalesService extends ServiceImpl<GdSalesMapper, GdSales> {
private void xshzrbb(ExcelWriter writer, GdSalesReportday reportday) {
writer.writeCellValue(0, 1, "编号:" + reportday.getSerialNumber());
writer.writeCellValue(2, 1, "上报时间:" + reportday.getReportTime());
writer.writeCellValue(1, 3,reportday.getKmdatea()); // 科目/日,大前天
writer.writeCellValue(2, 3,reportday.getKmdateb()); // 科目/日,前天
writer.writeCellValue(3, 3,reportday.getKmdatec()); // 科目/日,昨天
writer.writeCellValue(1, 4,reportday.getXjlla()); // 现金流量-经营活动产生的现金流量(元),大前天
writer.writeCellValue(2, 4,reportday.getXjllb()); // 现金流量-经营活动产生的现金流量(元),前天
writer.writeCellValue(3, 4,reportday.getXjllc()); // 现金流量-经营活动产生的现金流量(元),昨天
writer.writeCellValue(1, 5,reportday.getXsxja()); // 销售商品收到的现金(元),大前天
writer.writeCellValue(2, 5,reportday.getXsxjb()); // 销售商品收到的现金(元),前天
writer.writeCellValue(3, 5,reportday.getXsxjc()); // 销售商品收到的现金(元),昨天
writer.writeCellValue(1, 6,reportday.getQtxja()); // 收到其他与经营活动有关的现金(元),大前天
writer.writeCellValue(2, 6,reportday.getQtxjb()); // 收到其他与经营活动有关的现金(元),前天
writer.writeCellValue(3, 6,reportday.getQtxjc()); // 收到其他与经营活动有关的现金(元),昨天
writer.writeCellValue(1, 7,reportday.getCwfxhja()); // 财务分析本项合计,大前天
writer.writeCellValue(2, 7,reportday.getCwfxhjb()); // 财务分析本项合计,前天
writer.writeCellValue(3, 7,reportday.getCwfxhjc()); // 财务分析本项合计,昨天
writer.writeCellValue(1, 8,reportday.getZcfza()); // 资产负债-流动资产(元),大前天
writer.writeCellValue(2, 8,reportday.getZcfzb()); // 资产负债-流动资产(元),前天
writer.writeCellValue(3, 8,reportday.getZcfzc()); // 资产负债-流动资产(元),昨天
writer.writeCellValue(1, 9,reportday.getYszka()); // 应收账款(元),大前天
writer.writeCellValue(2, 9,reportday.getYszkb()); // 应收账款(元),前天
writer.writeCellValue(3, 9,reportday.getYszkc()); // 应收账款(元),昨天
writer.writeCellValue(1, 10,reportday.getLdfza()); // 流动负债(元),大前天
writer.writeCellValue(2, 10,reportday.getLdfzb()); // 流动负债(元),前天
writer.writeCellValue(3, 10,reportday.getLdfzc()); // 流动负债(元),昨天
writer.writeCellValue(1, 11,reportday.getYskxa()); // 预收款项(元),大前天
writer.writeCellValue(2, 11,reportday.getYskxb()); // 预收款项(元),前天
writer.writeCellValue(3, 11,reportday.getYskxc()); // 预收款项(元),昨天
writer.writeCellValue(1, 12,"期初总货值:"+reportday.getQczhz()); // 期初总货值
writer.writeCellValue(3, 12,"烟草期初货值:"+reportday.getYcqchz()); // 烟草期初货值
writer.writeCellValue(1, 13,reportday.getXmdatea()); // 项目/日,前天
writer.writeCellValue(2, 13,reportday.getXmdateb()); // 项目/日,昨天
writer.writeCellValue(3, 13,reportday.getXmdatec()); // 项目/日,今天
writer.writeCellValue(1, 14,reportday.getZthza()); // 在途货值(元),前天
writer.writeCellValue(2, 14,reportday.getZthzb()); // 在途货值(元),昨天
writer.writeCellValue(3, 14,reportday.getZthzc()); // 在途货值(元),今天
writer.writeCellValue(1, 15,reportday.getKchza()); // 库存货值(元),前天
writer.writeCellValue(2, 15,reportday.getKchzb()); // 库存货值(元),昨天
writer.writeCellValue(3, 15,reportday.getKchzc()); // 库存货值(元),今天
writer.writeCellValue(1, 16,reportday.getZhyea()); // 帐户余额(元)账户余额为前一天余额,前天
writer.writeCellValue(2, 16,reportday.getZhyeb()); // 帐户余额(元)账户余额为前一天余额,昨天
writer.writeCellValue(3, 16,reportday.getZhyec()); // 帐户余额(元)账户余额为前一天余额,今天
writer.writeCellValue(1, 17,reportday.getYjyszka()); // 预警应收帐款(元),前天
writer.writeCellValue(2, 17,reportday.getYjyszkb()); // 预警应收帐款(元),昨天
writer.writeCellValue(3, 17,reportday.getYjyszkc()); // 预警应收帐款(元),今天
writer.writeCellValue(1, 18,reportday.getYjhja()); // 主要预警指标本项合计,前天
writer.writeCellValue(2, 18,reportday.getYjhjb()); // 主要预警指标本项合计,昨天
writer.writeCellValue(3, 18,reportday.getYjhjc()); // 主要预警指标本项合计,今天
writer.writeCellValue(1, 21,reportday.getLwlsdze()); // 连网连锁店,总额(元)
writer.writeCellValue(2, 21,reportday.getLwlsdyszk()); // 连网连锁店,应收帐款(元)
writer.writeCellValue(3, 21,reportday.getLwlsdkcje()); // 连网连锁店,扣除应收金额(元)
writer.writeCellValue(1, 22,reportday.getLsnjmze()); // 连锁内加盟,总额(元)
writer.writeCellValue(2, 22,reportday.getLsnjmyszk()); // 连锁内加盟,应收帐款(元)
writer.writeCellValue(3, 22,reportday.getLsnjmkcje()); // 连锁内加盟,扣除应收金额(元)
writer.writeCellValue(1, 23,reportday.getPszxze()); // 配送中心,总额(元)
writer.writeCellValue(2, 23,reportday.getPszxyszk()); // 配送中心,应收帐款(元)
writer.writeCellValue(3, 23,reportday.getPszxkcje()); // 配送中心,扣除应收金额(元)
writer.writeCellValue(1, 24,reportday.getLswjmze()); // 连锁外加盟(销配结算),总额(元)
writer.writeCellValue(2, 24,reportday.getLswjmyszk()); // 连锁外加盟(销配结算),应收帐款(元)
writer.writeCellValue(3, 24,reportday.getLswjmkcje()); // 连锁外加盟(销配结算),扣除应收金额(元)
writer.writeCellValue(1, 25,reportday.getYcmdze()); // 36524集团报烟门店仓,总额(元)
writer.writeCellValue(2, 25,reportday.getYcmdyszk()); // 36524集团报烟门店仓,应收帐款(元)
writer.writeCellValue(3, 25,reportday.getYcmdkcje()); // 36524集团报烟门店仓,扣除应收金额(元)
writer.writeCellValue(1, 26,reportday.getYcjmdze()); // 烟草连锁外加盟(销配结算),总额(元)
writer.writeCellValue(2, 26,reportday.getYcjmdyszk()); // 烟草连锁外加盟(销配结算),应收帐款(元)
writer.writeCellValue(3, 26,reportday.getYcjmdkcje()); // 烟草连锁外加盟(销配结算),扣除应收金额(元)
writer.writeCellValue(1, 3, reportday.getKmdatea()); // 科目/日,大前天
writer.writeCellValue(2, 3, reportday.getKmdateb()); // 科目/日,前天
writer.writeCellValue(3, 3, reportday.getKmdatec()); // 科目/日,昨天
writer.writeCellValue(1, 4, reportday.getXjlla()); // 现金流量-经营活动产生的现金流量(元),大前天
writer.writeCellValue(2, 4, reportday.getXjllb()); // 现金流量-经营活动产生的现金流量(元),前天
writer.writeCellValue(3, 4, reportday.getXjllc()); // 现金流量-经营活动产生的现金流量(元),昨天
writer.writeCellValue(1, 5, reportday.getXsxja()); // 销售商品收到的现金(元),大前天
writer.writeCellValue(2, 5, reportday.getXsxjb()); // 销售商品收到的现金(元),前天
writer.writeCellValue(3, 5, reportday.getXsxjc()); // 销售商品收到的现金(元),昨天
writer.writeCellValue(1, 6, reportday.getQtxja()); // 收到其他与经营活动有关的现金(元),大前天
writer.writeCellValue(2, 6, reportday.getQtxjb()); // 收到其他与经营活动有关的现金(元),前天
writer.writeCellValue(3, 6, reportday.getQtxjc()); // 收到其他与经营活动有关的现金(元),昨天
writer.writeCellValue(1, 7, reportday.getCwfxhja()); // 财务分析本项合计,大前天
writer.writeCellValue(2, 7, reportday.getCwfxhjb()); // 财务分析本项合计,前天
writer.writeCellValue(3, 7, reportday.getCwfxhjc()); // 财务分析本项合计,昨天
writer.writeCellValue(1, 8, reportday.getZcfza()); // 资产负债-流动资产(元),大前天
writer.writeCellValue(2, 8, reportday.getZcfzb()); // 资产负债-流动资产(元),前天
writer.writeCellValue(3, 8, reportday.getZcfzc()); // 资产负债-流动资产(元),昨天
writer.writeCellValue(1, 9, reportday.getYszka()); // 应收账款(元),大前天
writer.writeCellValue(2, 9, reportday.getYszkb()); // 应收账款(元),前天
writer.writeCellValue(3, 9, reportday.getYszkc()); // 应收账款(元),昨天
writer.writeCellValue(1, 10, reportday.getLdfza()); // 流动负债(元),大前天
writer.writeCellValue(2, 10, reportday.getLdfzb()); // 流动负债(元),前天
writer.writeCellValue(3, 10, reportday.getLdfzc()); // 流动负债(元),昨天
writer.writeCellValue(1, 11, reportday.getYskxa()); // 预收款项(元),大前天
writer.writeCellValue(2, 11, reportday.getYskxb()); // 预收款项(元),前天
writer.writeCellValue(3, 11, reportday.getYskxc()); // 预收款项(元),昨天
writer.writeCellValue(1, 12, "期初总货值:" + reportday.getQczhz()); // 期初总货值
writer.writeCellValue(3, 12, "烟草期初货值:" + reportday.getYcqchz()); // 烟草期初货值
writer.writeCellValue(1, 13, reportday.getXmdatea()); // 项目/日,前天
writer.writeCellValue(2, 13, reportday.getXmdateb()); // 项目/日,昨天
writer.writeCellValue(3, 13, reportday.getXmdatec()); // 项目/日,今天
writer.writeCellValue(1, 14, reportday.getZthza()); // 在途货值(元),前天
writer.writeCellValue(2, 14, reportday.getZthzb()); // 在途货值(元),昨天
writer.writeCellValue(3, 14, reportday.getZthzc()); // 在途货值(元),今天
writer.writeCellValue(1, 15, reportday.getKchza()); // 库存货值(元),前天
writer.writeCellValue(2, 15, reportday.getKchzb()); // 库存货值(元),昨天
writer.writeCellValue(3, 15, reportday.getKchzc()); // 库存货值(元),今天
writer.writeCellValue(1, 16, reportday.getZhyea()); // 帐户余额(元)账户余额为前一天余额,前天
writer.writeCellValue(2, 16, reportday.getZhyeb()); // 帐户余额(元)账户余额为前一天余额,昨天
writer.writeCellValue(3, 16, reportday.getZhyec()); // 帐户余额(元)账户余额为前一天余额,今天
writer.writeCellValue(1, 17, reportday.getYjyszka()); // 预警应收帐款(元),前天
writer.writeCellValue(2, 17, reportday.getYjyszkb()); // 预警应收帐款(元),昨天
writer.writeCellValue(3, 17, reportday.getYjyszkc()); // 预警应收帐款(元),今天
writer.writeCellValue(1, 18, reportday.getYjhja()); // 主要预警指标本项合计,前天
writer.writeCellValue(2, 18, reportday.getYjhjb()); // 主要预警指标本项合计,昨天
writer.writeCellValue(3, 18, reportday.getYjhjc()); // 主要预警指标本项合计,今天
writer.writeCellValue(1, 21, reportday.getLwlsdze()); // 连网连锁店,总额(元)
writer.writeCellValue(2, 21, reportday.getLwlsdyszk()); // 连网连锁店,应收帐款(元)
writer.writeCellValue(3, 21, reportday.getLwlsdkcje()); // 连网连锁店,扣除应收金额(元)
writer.writeCellValue(1, 22, reportday.getLsnjmze()); // 连锁内加盟,总额(元)
writer.writeCellValue(2, 22, reportday.getLsnjmyszk()); // 连锁内加盟,应收帐款(元)
writer.writeCellValue(3, 22, reportday.getLsnjmkcje()); // 连锁内加盟,扣除应收金额(元)
writer.writeCellValue(1, 23, reportday.getPszxze()); // 配送中心,总额(元)
writer.writeCellValue(2, 23, reportday.getPszxyszk()); // 配送中心,应收帐款(元)
writer.writeCellValue(3, 23, reportday.getPszxkcje()); // 配送中心,扣除应收金额(元)
writer.writeCellValue(1, 24, reportday.getLswjmze()); // 连锁外加盟(销配结算),总额(元)
writer.writeCellValue(2, 24, reportday.getLswjmyszk()); // 连锁外加盟(销配结算),应收帐款(元)
writer.writeCellValue(3, 24, reportday.getLswjmkcje()); // 连锁外加盟(销配结算),扣除应收金额(元)
writer.writeCellValue(1, 25, reportday.getYcmdze()); // 36524集团报烟门店仓,总额(元)
writer.writeCellValue(2, 25, reportday.getYcmdyszk()); // 36524集团报烟门店仓,应收帐款(元)
writer.writeCellValue(3, 25, reportday.getYcmdkcje()); // 36524集团报烟门店仓,扣除应收金额(元)
writer.writeCellValue(1, 26, reportday.getYcjmdze()); // 烟草连锁外加盟(销配结算),总额(元)
writer.writeCellValue(2, 26, reportday.getYcjmdyszk()); // 烟草连锁外加盟(销配结算),应收帐款(元)
writer.writeCellValue(3, 26, reportday.getYcjmdkcje()); // 烟草连锁外加盟(销配结算),扣除应收金额(元)
}
public double amountOfLwlsdDay(String orderDate) {
return baseMapper.amountOfLsdOnDay(orderDate);
}
public double amountOfLsnjmDay(String orderDate) {
return baseMapper.amountOfLsnjmOnDay(orderDate);
}
}

25
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesYcMapper.java

@ -29,6 +29,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
/**
* Project: yxt_supervise <br/>
@ -47,4 +51,25 @@ import org.apache.ibatis.annotations.Param;
public interface GdSalesYcMapper extends BaseMapper<GdSalesYc> {
@Delete("delete from gd_sales_yc where dataDate=#{dataDate} ")
void clearByDataDate(@Param("dataDate") String dataDate);
@Select("select count(1) from (select storeCode from gd_sales_yc where dataDate=#{dataDate} group by storeCode) t")
int countStoreOnDay(@Param("dataDate") String orderDate);
@Select("select t2.storeCode,si.name,t2.amount from( " +
" select storeCode,sum(t1.price) as amount from( " +
" select storeCode,saleNum*salePrice as price from gd_sales_yc where dataDate=#{dataDate} " +
" ) t1 group by t1.storeCode " +
") t2 left join store_index si on t2.storecode=si.code ")
List<Map<String, Object>> listOfStoreOnDay(@Param("dataDate") String orderDate);
@Select("select count(1) from (select prodCode from gd_sales_yc where dataDate=#{dataDate} group by prodCode) t")
int countProductOnDay(@Param("dataDate") String orderDate);
@Select("select si.name,t1.* from ( " +
" select storeCode,orderType,orderNo,prodCode,prodName,saleNum,salePrice,saleNum*salePrice as amount from gd_sales_yc where dataDate=#{dataDate} " +
") t1 left join store_index si on t1.storecode=si.code ")
List<Map<String, Object>> listOfProductOnDay(@Param("dataDate") String orderDate);
@Select("SELECT CONVERT(IFNULL(sum(saleNum*salePrice),0),DECIMAL(12,2)) as amount FROM gd_sales_yc where dataDate=#{dataDate}")
double amountOfDay(String orderDate);
}

23
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesYcService.java

@ -28,6 +28,9 @@ package com.yxt.supervise.portal.biz.gdsales;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* Project: yxt_supervise <br/>
* File: GdSalesYcService.java <br/>
@ -47,4 +50,24 @@ public class GdSalesYcService extends ServiceImpl<GdSalesYcMapper, GdSalesYc> {
public void clearByDataDate(String dataDate) {
baseMapper.clearByDataDate(dataDate);
}
public int countStoreOnDay(String orderDate) {
return baseMapper.countStoreOnDay(orderDate);
}
public List<Map<String, Object>> listOfStoreOnDay(String orderDate) {
return baseMapper.listOfStoreOnDay(orderDate);
}
public int countProductOnDay(String orderDate) {
return baseMapper.countProductOnDay(orderDate);
}
public List<Map<String, Object>> listOfProductOnDay(String orderDate) {
return baseMapper.listOfProductOnDay(orderDate);
}
public double amountOfDay(String orderDate) {
return baseMapper.amountOfDay(orderDate);
}
}

3
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdwholesale/GdWholesaleMapper.java

@ -36,4 +36,7 @@ public interface GdWholesaleMapper extends BaseMapper<GdWholesale> {
// " FROM gd_wholesale where dataDate=#{dataDate} ")
@Select("SELECT * FROM gd_wholesale where dataDate=#{dataDate} ")
List<GdWholesale> excelListByOrderDate(@Param("dataDate") String orderDate);
@Select("SELECT CONVERT(IFNULL(sum(saleNum*salePrice),0),DECIMAL(12,2)) as amount FROM gd_wholesale where dataDate=#{dataDate} ")
double amountOfDay(String orderDate);
}

4
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdwholesale/GdWholesaleService.java

@ -180,4 +180,8 @@ public class GdWholesaleService extends ServiceImpl<GdWholesaleMapper, GdWholesa
return rb.success().setData(gwl);
}
public double amountOfDay(String orderDate) {
return baseMapper.amountOfDay(orderDate);
}
}

33
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/storeinfo/StoreInfoService.java

@ -275,9 +275,11 @@ public class StoreInfoService extends MybatisBaseService<StoreInfoMapper, StoreI
}
private static List<String> cacheCodeListOfYc = null; //烟草门店的门店编号列表
private static List<String> cacheCodeListOfYcNoJmd = null; //烟草门店的门店编号列表(不含加盟店)
public static void clearCacheCodeListOfYc() {
cacheCodeListOfYc = null;
cacheCodeListOfYcNoJmd = null;
}
public boolean containsCodeOfYc(String code) {
@ -289,6 +291,15 @@ public class StoreInfoService extends MybatisBaseService<StoreInfoMapper, StoreI
}
public boolean containsCodeOfYcNoJmd(String code) {
if (StringUtils.isBlank(code))
return false;
if (cacheCodeListOfYcNoJmd == null)
cacheCodeListOfYcNoJmd = listCodeOfYcNoJmd();
return cacheCodeListOfYcNoJmd.contains(code.trim());
}
/**
* 烟草门店列表
*
@ -307,4 +318,26 @@ public class StoreInfoService extends MybatisBaseService<StoreInfoMapper, StoreI
list.forEach(entity -> res.add(entity.getCode().trim()));
return res;
}
/**
* 烟草门店列表(不含加盟店)
*
* @return
*/
public List<StoreInfo> listOfYcNoJmd() {
QueryWrapper<StoreInfo> qw = new QueryWrapper<>();
qw.eq("isycjyfw", "1");
qw.ne("type", "连锁外加盟(销配结算)");
qw.ne("type", "连锁外加盟(销配结算)");
// qw.and(wrapper -> wrapper.ne("type", "连锁外加盟(销配结算)").or().like("remark", query.getName()));
List<StoreInfo> list = super.list(qw);
return list;
}
private List<String> listCodeOfYcNoJmd() {
List<String> res = new ArrayList<>();
List<StoreInfo> list = listOfYcNoJmd();
list.forEach(entity -> res.add(entity.getCode().trim()));
return res;
}
}

BIN
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/xlsx-tmpl/在途商品汇总统计表.xlsx

Binary file not shown.

BIN
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/xlsx-tmpl/销售汇总日报表.xlsx

Binary file not shown.
Loading…
Cancel
Save