便利店

This commit is contained in:
cun-nan 2023-10-30 18:01:53 +08:00
parent ec60b58193
commit 5e06f4582f
44 changed files with 1286 additions and 58 deletions

View File

@ -17,6 +17,15 @@ export function getLJGoods(id) {
})
}
// 根据商品条码查询商品详细
export function queryLJGoods(data) {
return request({
url: '/business/convenience/goods/getGoods',
method: 'post',
data: data
})
}
// 生成13位二维码
export function createGoodsNo() {
return request({

View File

@ -0,0 +1,11 @@
import request from '@/utils/request'
// 查询库存统计列表
export function listSaleDetail(query) {
return request({
url: '/business/convenience/saleDetail/list',
method: 'get',
params: query
})
}

View File

@ -0,0 +1,20 @@
import request from '@/utils/request'
// 查询销售统计信息
export function listSale(query) {
return request({
url: '/business/convenience/saleStatistic/list',
method: 'get',
params: query
})
}
// 导出销售统计信息
export function exportSale(data) {
return request({
url: '/business/convenience/saleStatistic/export',
method: 'post',
responseType:'blob',
data: data
})
}

View File

@ -19,11 +19,12 @@ export function getStock(id) {
// 导出库存统计信息
export function exportStocks() {
export function exportStocks(data) {
return request({
url: '/business/convenience/stockStatistic/export',
method: 'post',
responseType:'blob'
responseType:'blob',
data: data
})
}

View File

@ -17,6 +17,15 @@ export function getSupplier(id) {
})
}
// 新增供应商
export function querySupplier(data) {
return request({
url: '/business/convenience/supplier/byName',
method: 'post',
data: data
})
}
// 新增供应商
export function addSupplier(data) {
return request({

View File

@ -17,6 +17,15 @@ export function getFixingLevel(id) {
})
}
// 根据固定等级名称查询固定等级信息
export function queryFixingLevel(data) {
return request({
url: '/business/userManager/fixingLevel/getName',
method: 'post',
data: data
})
}
// 新增固定等级
export function addFixingLevel(data) {
return request({

View File

@ -7,15 +7,18 @@
<el-tab-pane label="商品回收站" name="recovery"></el-tab-pane>
</el-tabs>
<el-form-item label="商品分类" prop="cvsGoodId">
<!-- <el-cascader :options="cvsGoodOptions" clearable></el-cascader>-->
<el-select
v-model="queryParams.cvsGoodId"
placeholder="全部"
clearable
style="width: 300px"
>
<el-option v-for="item in cvsGoodList" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
<el-cascader v-model="cvsGoodId"
:options="cvsGoodOptions"
:props="{ checkStrictly: true }"
clearable></el-cascader>
<!-- <el-select-->
<!-- v-model="queryParams.cvsGoodId"-->
<!-- placeholder="全部"-->
<!-- clearable-->
<!-- style="width: 300px"-->
<!-- >-->
<!-- <el-option v-for="item in cvsGoodList" :key="item.id" :label="item.name" :value="item.id"/>-->
<!-- </el-select>-->
</el-form-item>
<el-form-item label="供应商" prop="supplierId">
<el-select
@ -182,6 +185,7 @@
<el-form-item label="商品条码" prop="goodsNo">
<el-input v-model="form.goodsNo"
@keydown.enter.native="getGoods(form)"
v-focus
placeholder="商品的条码信息">
<el-button slot="append" @click="getGoods(form)">查询</el-button>
</el-input>
@ -269,9 +273,11 @@
<el-form-item label="供应商" prop="supplierId">
<el-select
v-model="form.supplierId"
filterable
placeholder="全部"
clearable
style="width: 300px"
@change="selectSupplier"
>
<el-option v-for="item in supplierList" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
@ -319,16 +325,24 @@ import {
createGoodsNo,
delLJGoods,
getLJGoods,
listLJGoods, scanCode,
listLJGoods, queryLJGoods, scanCode,
updateLJGoods
} from "@/api/convenienceStore/ljgoods";
import {getSysConfig} from "@/api/staff/user/sysconfig";
import pinyin from "js-pinyin";
import Vue from 'vue'
Vue.directive('focus', {
inserted(el, binding, vnode) {
el.querySelector('input').focus()
},
})
export default {
dicts: ['zhzt','yes_or_no'],
data(){
return {
// id
cvsGoodId:"",
cvsGoodOptions:[],
isAdd:false,
activeName: 'goods',
@ -376,6 +390,7 @@ export default {
rules: {
goodsNo: [
{ required: true, message: "商品条码不能为空", trigger: "blur" },
{ required: true, validator: this.checkGoodsNo, trigger: "blur" },
],
name: [
{ required: true, message: "商品名称不能为空", trigger: "blur" },
@ -414,14 +429,28 @@ export default {
this.getList();
this.getQueryList();
this.getType();
// this.getTree();
this.getTree();
},
computed:{
},
methods:{
checkGoodsNo(rule, value, callback){
queryLJGoods({goodsNo:this.form.goodsNo}).then( response => {
if(response.data!=null){
callback(new Error("商品已存在"))
}else {
callback();
}
})
},
//
selectSupplier(data){
console.log(data)
},
//
getTree(){
cvsGoodsTree().then(response => {
console.log(response)
this.cvsGoodOptions = response.data
})
},
//
@ -520,10 +549,16 @@ export default {
//
handleQuery() {
this.queryParams.page = 1;
if (this.cvsGoodId.length==1){
this.queryParams.cvsGoodId = this.cvsGoodId[0]
}else {
this.queryParams.cvsGoodId = this.cvsGoodId[1]
}
this.getList();
},
//
resetQuery() {
this.cvsGoodId = ""
this.resetForm("queryForm");
this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order);
this.handleQuery();
@ -591,6 +626,7 @@ export default {
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
// console.log(this.form.supplierId)
if (this.form.id) {
updateLJGoods(this.form).then(response => {
this.$modal.msgSuccess("商品信息更新成功");

View File

@ -123,11 +123,12 @@
<el-form :model="form" :inline="true" :rules="rules" ref="form" >
<el-form-item label="上级分类" >
<el-select v-model="form.pid" placeholder="请选择上级分类">
<el-option
v-for="item in goodsOptions"
:label="item.name"
:value="item.id">
</el-option>
<el-option label="无上级" :value="0">无上级</el-option>
<el-option
v-for="item in goodsOptions"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="分类名称" prop="name" style="margin-left: -8px;">
@ -392,7 +393,6 @@ export default {
this.reset();
const id = row.id || this.ids;
selectParentById(id).then(response => {
console.log(response)
this.form = response.data;
this.open = true;
this.title = "编辑分类";

View File

@ -0,0 +1,261 @@
<template>
<div class="app-container">
<!-- 搜索框-->
<el-card >
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="商品名称" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入商品名称"
clearable
style="width: 240px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="拼音码" prop="pinyinCode">
<el-input
v-model="queryParams.pinyinCode"
placeholder="请输入拼音码"
clearable
style="width: 240px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="条形码" prop="goodsNo">
<el-input
v-model="queryParams.goodsNo"
placeholder="请输入商品条形码"
clearable
style="width: 240px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="销售时间">
<el-date-picker
v-model="dateRange"
style="width: 240px"
size="medium"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</el-card>
<!-- 列表-->
<el-card style="margin-top: 20px" >
<div style="display: flex;justify-content: space-between">
<div style="font-size: 18px">列表</div>
<el-button type="primary" @click="dialogVisible = true">导出</el-button>
</div>
<el-table ref="tables" v-loading="loading" :data="list"
@selection-change="handleSelectionChange" :default-sort="defaultSort"
@sort-change="handleSortChange">
<el-table-column label="ID" align="center" prop="id" width="40"/>
<el-table-column label="商品名称" align="center" prop="name" width="300" />
<el-table-column label="条码" align="center" prop="goodsNo" width="160" />
<el-table-column label="拼音码" align="center" prop="pinyinCode" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="销售数量" align="center" prop="saleNumber" />
<el-table-column label="销售总额" align="center" prop="saleTotal" />
<el-table-column label="成本总额" align="center" prop="costTotal" />
<el-table-column label="盈利总额" align="center" prop="profitTotal" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-document"
@click="detail(scope.row)"
>详细信息</el-button>
<!-- -->
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-card>
<el-drawer
title="销售详情信息"
:visible.sync="table"
direction="rtl"
size="60%">
<el-card style="width: 98%;margin: 0px auto">
<el-table ref="tables"
v-loading="loading"
:data="detailList"
:default-sort="defaultSort">
<el-table-column
lable="#"
type="index"
>
</el-table-column>
<el-table-column label="销售商品名称" align="center" prop="name" width="140" />
<el-table-column label="销售数量" align="center" prop="saleNumber" />
<el-table-column label="销售总额" align="center" prop="saleTotal" />
<el-table-column label="销售单价" align="center" prop="retailPrice" />
<el-table-column label="销售会员单价" align="center" prop="memberPrice" width="100" />
<el-table-column label="成本单价" align="center" prop="buyingPrice" />
<el-table-column label="成本总额" align="center" prop="costTotal" />
<el-table-column label="盈利总额" align="center" prop="profitTotal" />
<el-table-column label="销售时间" align="center" prop="createTime" width="150">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total1>0"
:total="total1"
:page.sync="queryParam.page"
:limit.sync="queryParam.pageSize"
@pagination="getDetailList"
/>
</el-card>
</el-drawer>
<el-dialog
title="导出状态"
:visible.sync="dialogVisible"
width="20%"
style="margin-top: 200px"
:before-close="handleClose">
<span>导出文档已生成,请点击下载按钮进行下载</span>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="exportSale">
<!-- <a href="/dev-api/business/convenience/stockStatistic/export"> </a>-->
</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {exportSale, listSale} from "@/api/convenienceStore/salestatistic";
import {addSaleDetail, listSaleDetail} from "@/api/convenienceStore/saledetail";
export default {
data(){
return {
table: false,
//
queryParams: {
page: 1,
pageSize: 10,
id: '',
name: '',
pinyinCode: '',
goodsNo: '',
},
//
queryParam: {
page: 1,
pageSize: 10,
id: '',
saleId: '',
},
//
dateRange: [],
dialogVisible: false,
//
loading: false,
//
defaultSort: {prop: 'createTime', order: 'descending'},
//
total: 0,
total1: 0,
//
list: [],
detailList: [],
}
},
created() {
this.getList()
},
methods: {
//
exportSale(){
exportSale(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
const blob = new Blob([response], { type: 'application/json' })
this.$download.saveAs(blob,'商品销售统计.xlsx')
})
this.dialogVisible = false
},
//
detail(data){
this.table = true;
this.queryParam.saleId = data.id;
listSaleDetail(this.queryParam).then(response => {
this.detailList = response.data.records;
this.total1 = response.data.total;
this.loading = false;
})
},
//
getList(){
this.loading = true;
listSale(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
this.list = response.data.records;
this.total = response.data.total;
this.loading = false;
});
},
//
getDetailList(){
},
//
handleQuery() {
this.queryParams.page = 1;
this.getList();
},
//
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order);
this.handleQuery();
},
//
handleClose(done) {
done();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.multiple = !selection.length
},
//
handleSortChange(column, prop, order) {
this.queryParams.orderByColumn = column.prop;
this.queryParams.isAsc = column.order;
this.getList();
},
}
}
</script>
<style lang="scss" scoped>
.app-container{
width: 100%;
height: 100vh;
background: #f6f8f9;
}
</style>

View File

@ -4,14 +4,18 @@
<el-card >
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="商品分类" prop="cvsGoodId">
<el-select
v-model="queryParams.cvsGoodId"
placeholder="全部"
clearable
style="width: 300px"
>
<el-option v-for="item in cvsGoodList" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
<el-cascader v-model="cvsGoodId"
:options="cvsGoodOptions"
:props="{ checkStrictly: true }"
clearable></el-cascader>
<!-- <el-select-->
<!-- v-model="queryParams.cvsGoodId"-->
<!-- placeholder="全部"-->
<!-- clearable-->
<!-- style="width: 300px"-->
<!-- >-->
<!-- <el-option v-for="item in cvsGoodList" :key="item.id" :label="item.name" :value="item.id"/>-->
<!-- </el-select>-->
</el-form-item>
<el-form-item label="供应商" prop="supplierId">
<el-select
@ -225,7 +229,7 @@
</template>
<script>
import {selectTree} from "@/api/convenienceStore/goods";
import {cvsGoodsTree, selectTree} from "@/api/convenienceStore/goods";
import {listSupplier} from "@/api/convenienceStore/supplier";
import {exportStocks, getStock, listStock} from "@/api/convenienceStore/stockstatistic";
import {listTrack} from "@/api/convenienceStore/stocktrack";
@ -236,6 +240,9 @@ export default {
data() {
return {
// id
cvsGoodId:"",
cvsGoodOptions:[],
dialogVisible: false,
//
showSearch: true,
@ -280,10 +287,18 @@ export default {
created() {
this.getList();
this.getQueryList();
this.getTree();
},
methods: {
//
getTree(){
cvsGoodsTree().then(response => {
this.cvsGoodOptions = response.data
})
},
//
exportStock(){
exportStocks().then(response => {
exportStocks(this.queryParams).then(response => {
const blob = new Blob([response], { type: 'application/json' })
this.$download.saveAs(blob,'商品-库存统计.xlsx')
})
@ -318,6 +333,11 @@ export default {
//
handleQuery() {
this.queryParams.page = 1;
if (this.cvsGoodId.length==1){
this.queryParams.cvsGoodId = this.cvsGoodId[0]
}else {
this.queryParams.cvsGoodId = this.cvsGoodId[1]
}
this.getList();
},
//
@ -331,6 +351,7 @@ export default {
},
//
resetQuery() {
this.cvsGoodId = ""
this.resetForm("queryForm");
this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order);
this.handleQuery();

View File

@ -43,7 +43,7 @@
icon="el-icon-plus"
@click="handleAdd"
v-hasPermi="['member:add']"
>新增会员</el-button>
>新增供应商</el-button>
<el-table ref="tables" v-loading="loading" :data="list"
@selection-change="handleSelectionChange" :default-sort="defaultSort"
@sort-change="handleSortChange">
@ -146,7 +146,14 @@
<script>
import {addSupplier, delSupplier, getSupplier, listSupplier, updateSupplier} from "@/api/convenienceStore/supplier";
import {
addSupplier,
delSupplier,
getSupplier,
listSupplier,
querySupplier,
updateSupplier
} from "@/api/convenienceStore/supplier";
export default {
// dicts: ['zhzt'],
@ -181,6 +188,7 @@ export default {
rules: {
name: [
{ required: true, message: "供应商名称不能为空", trigger: "blur" },
{ required: true, validator: this.checkName, trigger: "blur" },
],
}
}
@ -189,6 +197,15 @@ export default {
this.getList();
},
methods:{
checkName(rule, value, callback){
querySupplier({name:this.form.name}).then( response => {
if(response.data!=null){
callback(new Error("供应商名称已存在"))
}else {
callback();
}
})
},
//
getList() {
this.loading = true;

View File

@ -814,7 +814,7 @@ import {
addFixingLevel,
delFixingLevel,
getFixingLevel,
listFixingLevel,
listFixingLevel, queryFixingLevel,
updateFixingLevel
} from "@/api/staff/user/fixinglevel";
import {
@ -928,6 +928,7 @@ export default {
rules: {
name: [
{ required: true, message: "请填写认证名称", trigger: "blur" },
{ required: true, validator: this.checkName, trigger: "blur" },
],
discountType: [
{ required: true, message: "请选择优惠类型", trigger: "blur" },
@ -993,6 +994,16 @@ export default {
this.getUserList();
},
methods: {
//
checkName(rule, value, callback){
queryFixingLevel({name:this.form.name}).then( response => {
if(response.data!=null){
callback(new Error("固定等级名称不可重复"))
}else {
callback();
}
})
},
handleClick(tab, event) {
// console.log(tab, event);
},

View File

@ -44,11 +44,23 @@ public class LJGoodsController extends BaseController {
* @return
*/
@GetMapping("/{id}")
public ResponseObject staffInfo(@PathVariable Integer id){
public ResponseObject goodsInfo(@PathVariable Integer id){
LJGoods goods = goodsService.selectLJGoodsById(id);
return getSuccessResult(goods);
}
/**
* 根据id查询商品信息
* @param map
* @return
*/
@PostMapping("/getGoods")
public ResponseObject getGoods(@Validated @RequestBody Map<String ,String > map){
String goodsNo = map.get("goodsNo");
LJGoods goods = goodsService.selectLJGoodsByGoodsNo(goodsNo);
return getSuccessResult(goods);
}
/**
* 生成13位数字条码信息
* @return

View File

@ -0,0 +1,38 @@
package com.fuint.business.convenienceSore.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.convenienceSore.entity.SaleDetail;
import com.fuint.business.convenienceSore.service.SaleDetailService;
import com.fuint.business.convenienceSore.vo.SaleDetailVo;
import com.fuint.business.convenienceSore.vo.SaleStatisticVo;
import com.fuint.framework.web.BaseController;
import com.fuint.framework.web.ResponseObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/business/convenience/saleDetail")
public class SaleDetailController extends BaseController {
@Autowired
private SaleDetailService saleDetailService;
/**
* 根据条件查询库存商品信息
* @param saleDetailVo
* @param pageNo
* @param pageSize
* @return
*/
@GetMapping("/list")
public ResponseObject list(SaleDetailVo saleDetailVo,
@RequestParam(value = "page",defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize){
Page page =new Page(pageNo,pageSize);
IPage<SaleDetailVo> list = saleDetailService.selectSaleDetailList(page, saleDetailVo);
return getSuccessResult(list);
}
}

View File

@ -0,0 +1,72 @@
package com.fuint.business.convenienceSore.controller;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.convenienceSore.service.SaleStatisticService;
import com.fuint.business.convenienceSore.vo.SaleStatisticVo;
import com.fuint.business.convenienceSore.vo.StockStatisticVo;
import com.fuint.framework.web.BaseController;
import com.fuint.framework.web.ResponseObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.util.List;
/**
* 销售统计信息 controller层
*/
@RestController
@RequestMapping("/business/convenience/saleStatistic")
public class SaleStatisticController extends BaseController {
@Autowired
private SaleStatisticService saleService;
/**
* 根据条件查询销售统计信息
* @param saleVo
* @param pageNo
* @param pageSize
* @return
*/
@GetMapping("/list")
public ResponseObject list(SaleStatisticVo saleVo,
@RequestParam(value = "page",defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize){
Page page =new Page(pageNo,pageSize);
IPage<SaleStatisticVo> list = saleService.selectSaleList(page, saleVo);
return getSuccessResult(list);
}
/**
* 导出销售统计信息
* @param response
* @param request
*/
@PostMapping("/export")
public void export(@Validated @RequestBody SaleStatisticVo saleVo, HttpServletResponse response, HttpServletRequest request) {
try {
String filenames = "商品销售统计";
String userAgent = request.getHeader("User-Agent");
if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
filenames = URLEncoder.encode(filenames, "UTF-8");
} else {
filenames = new String(filenames.getBytes("UTF-8"), "ISO-8859-1");
}
response.setContentType("application/json.ms-exce");
response.setCharacterEncoding("utf-8");
response.addHeader("Content-Disposition", "filename=" + filenames + ".xlsx");
List<SaleStatisticVo> list = saleService.selectSales(saleVo);
EasyExcel.write(response.getOutputStream(), SaleStatisticVo.class).sheet("sheet").doWrite(list);
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -9,6 +9,7 @@ import com.fuint.business.userManager.listener.EasyExcelListener;
import com.fuint.framework.web.BaseController;
import com.fuint.framework.web.ResponseObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@ -52,7 +53,7 @@ public class StockStatisticController extends BaseController {
}
@PostMapping("/export")
public void export(HttpServletResponse response, HttpServletRequest request) {
public void export(@Validated @RequestBody StockStatisticVo stockStatisticVo, HttpServletResponse response, HttpServletRequest request) {
try {
String filenames = "商品-库存统计";
@ -66,7 +67,7 @@ public class StockStatisticController extends BaseController {
response.setCharacterEncoding("utf-8");
response.addHeader("Content-Disposition", "filename=" + filenames + ".xlsx");
List<StockStatisticVo> list = stockService.selectStocks();
List<StockStatisticVo> list = stockService.selectStocks(stockStatisticVo);
EasyExcel.write(response.getOutputStream(), StockStatisticVo.class).sheet("sheet").doWrite(list);
} catch (Exception e) {

View File

@ -10,6 +10,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 供应商 controller层
*/
@ -41,11 +43,23 @@ public class SupplierController extends BaseController {
* @return
*/
@GetMapping("/{id}")
public ResponseObject staffInfo(@PathVariable Integer id){
public ResponseObject supplierInfo(@PathVariable Integer id){
Supplier supplier = supplierService.selectSupplierById(id);
return getSuccessResult(supplier);
}
/**
* 根据id查询供应商信息
* @param map
* @return
*/
@PostMapping("/byName")
public ResponseObject supplierByName(@Validated @RequestBody Map<String ,String > map){
String name = map.get("name");
Supplier supplier = supplierService.selectSupplierByName(name);
return getSuccessResult(supplier);
}
/**
* 删除供应商信息
* @return

View File

@ -50,10 +50,4 @@ public class CvsGoods extends BaseEntity implements Serializable {
@ApiModelProperty("商品状态")
private String status;
@TableField(exist = false)
private Integer pageNum;
@TableField(exist = false)
private Integer pageSize;
}

View File

@ -0,0 +1,64 @@
package com.fuint.business.convenienceSore.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fuint.framework.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.io.Serializable;
/**
* 销售详情表(SaleDetail)实体类
*/
@Data
@TableName("sale_detail")
@ApiModel(value = "SaleDetail对象", description = "销售详情表")
public class SaleDetail extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ApiModelProperty("自增ID")
@TableId(value = "ID", type = IdType.AUTO)
private Integer id;
/**
* 商品id
*/
@ApiModelProperty("商品id")
private Integer goodsId;
/**
* 销售统计id
*/
@ApiModelProperty("销售统计id")
private Integer saleId;
/**
* 商铺id
*/
@ApiModelProperty("商铺id")
private Integer storeId;
/**
* 销售数量
*/
@ApiModelProperty("销售数量")
private Integer saleNumber;
/**
* 销售总额
*/
@ApiModelProperty("销售总额")
private Double saleTotal;
/**
* 成本总额
*/
@ApiModelProperty("成本总额")
private Double costTotal;
/**
* 盈利总额
*/
@ApiModelProperty("盈利总额")
private Double profitTotal;
}

View File

@ -0,0 +1,60 @@
package com.fuint.business.convenienceSore.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fuint.framework.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.io.Serializable;
/**
* 销售统计表(SaleStatistic)实体类
*/
@Data
@TableName("sale_statistic")
@ApiModel(value = "SaleStatistic对象", description = "销售统计表")
public class SaleStatistic extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ApiModelProperty("自增ID")
@TableId(value = "ID", type = IdType.AUTO)
private Integer id;
/**
* 商品id
*/
@ApiModelProperty("商品id")
private Integer goodsId;
/**
* 商铺id
*/
@ApiModelProperty("商铺id")
private Integer storeId;
/**
* 销售数量
*/
@ApiModelProperty("销售数量")
private Integer saleNumber;
/**
* 销售总额
*/
@ApiModelProperty("销售总额")
private Double saleTotal;
/**
* 成本总额
*/
@ApiModelProperty("成本总额")
private Double costTotal;
/**
* 盈利总额
*/
@ApiModelProperty("盈利总额")
private Double profitTotal;
}

View File

@ -0,0 +1,17 @@
package com.fuint.business.convenienceSore.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.convenienceSore.entity.SaleDetail;
import com.fuint.business.convenienceSore.vo.SaleDetailVo;
import org.apache.ibatis.annotations.Param;
public interface SaleDetailMapper extends BaseMapper<SaleDetail> {
/**
* 根据条件分页查询销售详情信息
* @param page
* @return
*/
public IPage<SaleDetailVo> selectSaleDetailList(Page page, @Param("saleDetail") SaleDetailVo saleDetail);
}

View File

@ -0,0 +1,25 @@
package com.fuint.business.convenienceSore.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.convenienceSore.entity.SaleStatistic;
import com.fuint.business.convenienceSore.vo.SaleStatisticVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface SaleStatisticMapper extends BaseMapper<SaleStatistic> {
/**
* 根据条件分页查询库存统计信息
* @param page
* @return
*/
public IPage<SaleStatisticVo> selectSaleList(Page page, @Param("sale") SaleStatisticVo saleStatisticVo);
/**
* 根据条件分页查询库存统计信息
* @return
*/
public List<SaleStatisticVo> selectSales(@Param("sale") SaleStatisticVo saleStatisticVo);
}

View File

@ -20,10 +20,10 @@ public interface StockStatisticMapper extends BaseMapper<StockStatistic> {
/**
*
* @param storeId
* @param stock
* @return
*/
public List<StockStatisticVo> selectStocks(@Param("storeId") Integer storeId);
public List<StockStatisticVo> selectStocks(@Param("stock") StockStatisticVo stock);
/**
* 根据id查询库存统计信息

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fuint.business.convenienceSore.mapper.SaleDetailMapper">
<sql id="selectSaleDetail">
select sd.*,mg.name,mg.buying_price,mg.retail_price,mg.member_price from sale_detail sd
inner join mt_goods mg on sd.goods_id = mg.id
</sql>
<select id="selectSaleDetailList" resultType="com.fuint.business.convenienceSore.vo.SaleDetailVo">
<include refid="selectSaleDetail"></include>
<where>
sd.store_id = #{saleDetail.storeId}
and sd.sale_id = #{saleDetail.saleId}
</where>
</select>
</mapper>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fuint.business.convenienceSore.mapper.SaleStatisticMapper">
<sql id="selectSale">
select sa.*,mg.name,mg.goods_no,mg.pinyin_code,mg.unit from sale_statistic sa
inner join mt_goods mg on sa.goods_id = mg.id
</sql>
<select id="selectSaleList" resultType="com.fuint.business.convenienceSore.vo.SaleStatisticVo">
<include refid="selectSale"></include>
<where>
sa.store_id = #{sale.storeId}
<if test="sale.name != null and sale.name != ''">
and mg.name like concat('%', #{sale.name}, '%')
</if>
<if test="sale.pinyinCode != null and sale.pinyinCode != ''">
and mg.pinyin_code like concat('%', #{sale.pinyinCode}, '%')
</if>
<if test="sale.goodsNo != null and sale.goodsNo != ''">
and mg.goods_no like concat('%', #{sale.goodsNo}, '%')
</if>
<if test="sale.params.beginTime != null and sale.params.beginTime != ''"><!-- 开始时间检索 -->
and date_format(sa.update_time,'%y%m%d') &gt;= date_format(#{sale.params.beginTime},'%y%m%d')
</if>
<if test="sale.params.endTime != null and sale.params.endTime != ''"><!-- 结束时间检索 -->
and date_format(sa.update_time,'%y%m%d') &lt;= date_format(#{sale.params.endTime},'%y%m%d')
</if>
</where>
</select>
<select id="selectSales" resultType="com.fuint.business.convenienceSore.vo.SaleStatisticVo"
parameterType="com.fuint.business.convenienceSore.vo.SaleStatisticVo">
<include refid="selectSale"></include>
<where>
sa.store_id = #{sale.storeId}
<if test="sale.name != null and sale.name != ''">
and mg.name like concat('%', #{sale.name}, '%')
</if>
<if test="sale.pinyinCode != null and sale.pinyinCode != ''">
and mg.pinyin_code like concat('%', #{sale.pinyinCode}, '%')
</if>
<if test="sale.goodsNo != null and sale.goodsNo != ''">
and mg.goods_no like concat('%', #{sale.goodsNo}, '%')
</if>
<if test="sale.params.beginTime != null and sale.params.beginTime != ''"><!-- 开始时间检索 -->
and date_format(sa.update_time,'%y%m%d') &gt;= date_format(#{sale.params.beginTime},'%y%m%d')
</if>
<if test="sale.params.endTime != null and sale.params.endTime != ''"><!-- 结束时间检索 -->
and date_format(sa.update_time,'%y%m%d') &lt;= date_format(#{sale.params.endTime},'%y%m%d')
</if>
</where>
</select>
</mapper>

View File

@ -46,7 +46,28 @@
parameterType="java.lang.Integer">
<include refid="selectStock"></include>
<where>
st.store_id = #{storeId}
st.store_id = #{stock.storeId}
<if test="stock.cvsGoodId != null and stock.cvsGoodId != ''">
and st.cvs_good_id = #{stock.cvsGoodId}
</if>
<if test="stock.supplierId != null and stock.supplierId != ''">
and st.supplier_id = #{stock.supplierId}
</if>
<if test="stock.name != null and stock.name != ''">
and mg.name like concat('%', #{stock.name}, '%')
</if>
<if test="stock.pinyinCode != null and stock.pinyinCode != ''">
and mg.pinyin_code like concat('%', #{stock.pinyinCode}, '%')
</if>
<if test="stock.goodsNo != null and stock.goodsNo != ''">
and mg.goods_no like concat('%', #{stock.goodsNo}, '%')
</if>
<if test="stock.shelfNumber != null and stock.shelfNumber != ''">
and mg.shelf_number like concat('%', #{stock.shelfNumber}, '%')
</if>
<if test="stock.status != null and stock.status != ''">
and mg.status = #{stock.status}
</if>
</where>
</select>
</mapper>

View File

@ -24,6 +24,13 @@ public interface LJGoodsService extends IService<LJGoods> {
*/
public LJGoods selectLJGoodsById(int id);
/**
* 根据条码查询商品信息
* @param goodsNo
* @return
*/
public LJGoods selectLJGoodsByGoodsNo(String goodsNo);
/**
* 生成13位条码数字信息
* @return

View File

@ -0,0 +1,26 @@
package com.fuint.business.convenienceSore.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fuint.business.convenienceSore.entity.SaleDetail;
import com.fuint.business.convenienceSore.vo.SaleDetailVo;
/**
* 销售详情信息 业务层
*/
public interface SaleDetailService extends IService<SaleDetail> {
/**
* 根据条件分页查询销售详情信息
* @param page
* @return
*/
public IPage<SaleDetailVo> selectSaleDetailList(Page page, SaleDetailVo saleDetail);
/**
* 添加销售详情信息
* @param saleDetail
* @return
*/
public int insertSaleDetail(SaleDetail saleDetail);
}

View File

@ -0,0 +1,55 @@
package com.fuint.business.convenienceSore.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fuint.business.convenienceSore.entity.SaleStatistic;
import com.fuint.business.convenienceSore.vo.SaleStatisticVo;
import java.util.List;
/**
* 销售统计信息 业务层
*/
public interface SaleStatisticService extends IService<SaleStatistic> {
/**
* 根据条件分页查询销售统计信息
* @param page
* @return
*/
public IPage<SaleStatisticVo> selectSaleList(Page page, SaleStatisticVo saleStatisticVo);
/**
* 根据条件查询销售统计信息
* @return
*/
public List<SaleStatisticVo> selectSales(SaleStatisticVo saleStatisticVo);
/**
* 根据id查询销售统计信息
* @param id
* @return
*/
public SaleStatistic selectSaleById(int id);
/**
* 根据商品id查询销售统计信息
* @param goodsId
* @return
*/
public SaleStatistic selectSaleByGoodsId(int goodsId);
/**
* 增加销售统计信息
* @param saleStatistic
* @return
*/
public int insertSale(SaleStatistic saleStatistic);
/**
* 修改销售统计信息
* @param saleStatistic
* @return
*/
public int updateSales(SaleStatistic saleStatistic);
}

View File

@ -24,7 +24,7 @@ public interface StockStatisticService extends IService<StockStatistic> {
* 查询所有库存统计信息
* @return
*/
public List<StockStatisticVo> selectStocks();
public List<StockStatisticVo> selectStocks(StockStatisticVo stockStatisticVo);
/**
* 根据id查询库存统计信息

View File

@ -23,6 +23,13 @@ public interface SupplierService extends IService<Supplier> {
*/
public Supplier selectSupplierById(int id);
/**
* 根据供应商名称查询供应商信息
* @param name
* @return
*/
public Supplier selectSupplierByName(String name);
/**
* 根据id删除供应商信息
* @param id

View File

@ -132,26 +132,21 @@ public class CvsGoodsServiceImpl extends ServiceImpl<CvsGoodsMapper,CvsGoods> im
queryWrapper.eq("store_id",storeId);
List<CvsGoods> cvsGoods = baseMapper.selectList(queryWrapper);
List<CvsGoodsTree> list = new ArrayList<>();
List<CvsGoodsVo> goodsVos = new ArrayList<>();
for (CvsGoods cvsGood : cvsGoods) {
if (cvsGood.getPid()==0){
CvsGoodsTree cvsGoodsTree = new CvsGoodsTree();
CvsGoodsVo cvsGoodsVo = new CvsGoodsVo();
cvsGoodsVo.setPid(cvsGood.getPid());
cvsGoodsTree.setValue(cvsGood.getId());
cvsGoodsTree.setLabel(cvsGood.getName());
cvsGoodsTree.setChildren(new ArrayList<>());
list.add(cvsGoodsTree);
goodsVos.add(cvsGoodsVo);
}
}
for (int i = 0; i < cvsGoods.size(); i++){
for (int i = 0; i < list.size(); i++){
List<CvsGoodsTree> children = new ArrayList<>();
for (CvsGoods cvsGood : cvsGoods) {
if (goodsVos.get(i).getPid()==cvsGood.getPid()){
if (list.get(i).getValue()==cvsGood.getPid()){
CvsGoodsTree cvsGoodsTree = new CvsGoodsTree();
cvsGoodsTree.setValue(cvsGood.getId());
cvsGoodsTree.setLabel(cvsGood.getName());

View File

@ -2,6 +2,7 @@ package com.fuint.business.convenienceSore.service.impl;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -53,6 +54,22 @@ public class LJGoodsServiceImpl extends ServiceImpl<LJGoodsMapper, LJGoods> impl
return baseMapper.selectById(id);
}
/**
* 根据条码查询商品信息
* @param goodsNo
* @return
*/
@Override
public LJGoods selectLJGoodsByGoodsNo(String goodsNo) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("goods_no",goodsNo);
queryWrapper.eq("store_id",storeId);
LJGoods ljGoods = baseMapper.selectOne(queryWrapper);
return ljGoods;
}
/**
* 生成13位条码数字信息
* @return

View File

@ -0,0 +1,97 @@
package com.fuint.business.convenienceSore.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fuint.business.convenienceSore.entity.LJGoods;
import com.fuint.business.convenienceSore.entity.SaleDetail;
import com.fuint.business.convenienceSore.entity.SaleStatistic;
import com.fuint.business.convenienceSore.mapper.SaleDetailMapper;
import com.fuint.business.convenienceSore.service.LJGoodsService;
import com.fuint.business.convenienceSore.service.SaleDetailService;
import com.fuint.business.convenienceSore.service.SaleStatisticService;
import com.fuint.business.convenienceSore.vo.SaleDetailVo;
import com.fuint.common.dto.AccountInfo;
import com.fuint.common.util.TokenUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 销售详情信息 业务层
*/
@Service
public class SaleDetailServiceImpl extends ServiceImpl<SaleDetailMapper, SaleDetail> implements SaleDetailService {
@Autowired
private SaleStatisticService saleStatisticService;
@Autowired
private LJGoodsService goodsService;
/**
* 根据条件分页查询销售详情信息
* @param page
* @return
*/
@Override
public IPage<SaleDetailVo> selectSaleDetailList(Page page, SaleDetailVo saleDetail) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
saleDetail.setStoreId(storeId);
IPage<SaleDetailVo> saleDetailVoIPage = baseMapper.selectSaleDetailList(page, saleDetail);
return saleDetailVoIPage;
}
/**
* 添加销售详情信息
* @param saleDetail
* @return
*/
@Override
public int insertSaleDetail(SaleDetail saleDetail) {
// 修改商品库存 库存不可小于0 小于0的话返回-1
LJGoods ljGoods = goodsService.selectLJGoodsById(saleDetail.getGoodsId());
int stock = ljGoods.getStock() - saleDetail.getSaleNumber();
if (stock>=0){
LJGoods goods = new LJGoods();
goods.setStock(stock);
goods.setId(ljGoods.getId());
goodsService.updateLJGoods(goods);
}else {
return -1;
}
// 根据商品id查询销售信息是否存在
SaleStatistic saleStatistic = saleStatisticService.selectSaleByGoodsId(saleDetail.getGoodsId());
SaleStatistic saleStatistic1 = new SaleStatistic();
SaleStatistic saleStatistic2 = null;
// 判断商品是否是第一次出售
if (saleStatistic==null){
// 为空则为第一次销售 添加销售统计记录
saleStatistic1.setGoodsId(saleDetail.getGoodsId());
saleStatistic1.setStoreId(saleDetail.getStoreId());
saleStatistic1.setSaleNumber(saleDetail.getSaleNumber());
saleStatistic1.setSaleTotal(saleDetail.getSaleTotal());
saleStatistic1.setCostTotal(saleDetail.getCostTotal());
saleStatistic1.setProfitTotal(saleDetail.getProfitTotal());
saleStatisticService.insertSale(saleStatistic1);
saleStatistic2 = saleStatisticService.selectSaleByGoodsId(saleDetail.getGoodsId());
saleDetail.setSaleId(saleStatistic2.getId());
}else {
// 不为空则修改销售统计记录
saleStatistic1.setGoodsId(saleDetail.getGoodsId());
saleStatistic1.setStoreId(saleDetail.getStoreId());
Integer saleNumber = saleStatistic.getSaleNumber() + saleDetail.getSaleNumber();
saleStatistic1.setSaleNumber(saleNumber);
Double saleTotal = saleStatistic.getSaleTotal() + saleDetail.getSaleTotal();
saleStatistic1.setSaleTotal(saleTotal);
Double costTotal = saleStatistic.getCostTotal() + saleDetail.getCostTotal();
saleStatistic1.setCostTotal(costTotal);
Double profitTotal = saleStatistic.getProfitTotal() + saleDetail.getProfitTotal();
saleStatistic1.setProfitTotal(profitTotal);
saleStatistic2 = saleStatisticService.selectSaleByGoodsId(saleDetail.getGoodsId());
saleStatistic1.setId(saleStatistic2.getId());
saleStatisticService.updateSales(saleStatistic1);
saleDetail.setSaleId(saleStatistic2.getId());
}
int row = baseMapper.insert(saleDetail);
return row;
}
}

View File

@ -0,0 +1,94 @@
package com.fuint.business.convenienceSore.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fuint.business.convenienceSore.entity.SaleStatistic;
import com.fuint.business.convenienceSore.mapper.SaleStatisticMapper;
import com.fuint.business.convenienceSore.service.SaleStatisticService;
import com.fuint.business.convenienceSore.vo.SaleStatisticVo;
import com.fuint.common.dto.AccountInfo;
import com.fuint.common.util.TokenUtil;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 销售统计信息 业务层
*/
@Service
public class SaleStatisticServiceImpl extends ServiceImpl<SaleStatisticMapper, SaleStatistic> implements SaleStatisticService {
/**
* 根据条件分页查询销售统计信息
* @param page
* @return
*/
@Override
public IPage<SaleStatisticVo> selectSaleList(Page page, SaleStatisticVo saleStatisticVo) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
saleStatisticVo.setStoreId(storeId);
IPage<SaleStatisticVo> saleStatisticVoIPage = baseMapper.selectSaleList(page, saleStatisticVo);
return saleStatisticVoIPage;
}
/**
* 根据条件查询销售统计信息
* @return
*/
@Override
public List<SaleStatisticVo> selectSales(SaleStatisticVo saleStatisticVo) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
saleStatisticVo.setStoreId(storeId);
List<SaleStatisticVo> list = baseMapper.selectSales(saleStatisticVo);
return list;
}
/**
* 根据id查询销售统计信息
* @param id
* @return
*/
@Override
public SaleStatistic selectSaleById(int id) {
SaleStatistic saleStatistic = baseMapper.selectById(id);
return saleStatistic;
}
/**
* 根据商品id查询销售统计信息
* @param goodsId
* @return
*/
@Override
public SaleStatistic selectSaleByGoodsId(int goodsId) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("goods_id",goodsId);
SaleStatistic saleStatistic = baseMapper.selectOne(queryWrapper);
return saleStatistic;
}
/**
* 增加销售统计信息
* @param saleStatistic
* @return
*/
@Override
public int insertSale(SaleStatistic saleStatistic) {
int row = baseMapper.insert(saleStatistic);
return row;
}
/**
* 修改销售统计信息
* @param saleStatistic
* @return
*/
@Override
public int updateSales(SaleStatistic saleStatistic) {
int row = baseMapper.updateById(saleStatistic);
return row;
}
}

View File

@ -38,10 +38,11 @@ public class StockStatisticServiceImpl extends ServiceImpl<StockStatisticMapper,
* @return
*/
@Override
public List<StockStatisticVo> selectStocks() {
public List<StockStatisticVo> selectStocks(StockStatisticVo stockStatisticVo) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
List<StockStatisticVo> list = baseMapper.selectStocks(storeId);
stockStatisticVo.setStoreId(storeId);
List<StockStatisticVo> list = baseMapper.selectStocks(stockStatisticVo);
return list;
}

View File

@ -1,5 +1,6 @@
package com.fuint.business.convenienceSore.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -39,6 +40,22 @@ public class SupplierServiceImpl extends ServiceImpl<SupplierMapper, Supplier> i
return baseMapper.selectById(id);
}
/**
* 根据供应商名称查询供应商信息
* @param name
* @return
*/
@Override
public Supplier selectSupplierByName(String name) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name",name);
queryWrapper.eq("store_id",storeId);
Supplier supplier = baseMapper.selectOne(queryWrapper);
return supplier;
}
/**
* 根据id删除供应商信息
* @param id

View File

@ -1,10 +1,14 @@
package com.fuint.business.convenienceSore.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CvsGoodsTree {
private Integer value;
private String label;

View File

@ -0,0 +1,32 @@
package com.fuint.business.convenienceSore.vo;
import com.fuint.framework.entity.BaseEntity;
import lombok.Data;
@Data
public class SaleDetailVo extends BaseEntity {
// id
private Integer id;
// 店铺id
private Integer storeId;
// 商品id
private Integer goodsId;
// 销售统计id
private Integer saleId;
// 商品名称
private String name;
// 销售数量
private Integer saleNumber;
// 销售总额
private Double saleTotal;
// 成本总额
private Double costTotal;
// 盈利总额
private Double profitTotal;
// 成本单价
private Double buyingPrice;
// 销售单价
private Double retailPrice;
// 销售会员单价
private Double memberPrice;
}

View File

@ -0,0 +1,50 @@
package com.fuint.business.convenienceSore.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fuint.framework.entity.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
@ExcelIgnoreUnannotated
public class SaleStatisticVo extends BaseEntity {
// id
private Integer id;
// 店铺id
private Integer storeId;
// 商品id
private Integer goodsId;
// 商品名称
@ExcelProperty(value = "商品名称")
private String name;
// 条码
@ExcelProperty(value = "条码")
private String goodsNo;
// 拼音码
@ExcelProperty(value = "拼音码")
private String pinyinCode;
// 单位
@ExcelProperty(value = "单位")
private String unit;
// 销售数量
@ExcelProperty(value = "销售数量")
private Integer saleNumber;
// 销售总额
@ExcelProperty(value = "销售总额")
private Double saleTotal;
// 成本总额
@ExcelProperty(value = "成本总额")
private Double costTotal;
// 盈利总额
@ExcelProperty(value = "盈利总额")
private Double profitTotal;
// 销售时间
@ExcelProperty(value = "销售时间")
private Date createTime;
}

View File

@ -10,6 +10,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 固定等级 controller层
*/
@ -41,11 +43,23 @@ public class FixingLevelController extends BaseController {
* @return
*/
@GetMapping("/{id}")
public ResponseObject staffInfo(@PathVariable Integer id){
public ResponseObject fixingLevelInfo(@PathVariable Integer id){
FixingLevel fixingLevel = fixingLevelService.selectFixingLevelById(id);
return getSuccessResult(fixingLevel);
}
/**
* 根据固定等级名称查询固定等级信息
* @param map
* @return
*/
@PostMapping("/getName")
public ResponseObject fixingLevelByName(@Validated @RequestBody Map<String ,String> map){
String name = map.get("name");
FixingLevel fixingLevel = fixingLevelService.selectFixingLevelByName(name);
return getSuccessResult(fixingLevel);
}
/**
* 删除固定等级信息
* @return

View File

@ -23,6 +23,13 @@ public interface FixingLevelService extends IService<FixingLevel> {
*/
public FixingLevel selectFixingLevelById(int id);
/**
* 根据固定等级名称查询固定等级信息
* @param name
* @return
*/
public FixingLevel selectFixingLevelByName(String name);
/**
* 根据id删除固定等级信息
* @param id

View File

@ -2,6 +2,7 @@ package com.fuint.business.userManager.service.impl;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -59,6 +60,19 @@ public class FixingLevelServiceImpl extends ServiceImpl<FixingLevelMapper, Fixin
return baseMapper.selectById(id);
}
/**
* 根据固定等级名称查询固定等级信息
* @param name
* @return
*/
@Override
public FixingLevel selectFixingLevelByName(String name) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name",name);
FixingLevel fixingLevel = baseMapper.selectOne(queryWrapper);
return fixingLevel;
}
/**
* 根据id删除固定等级信息
* @param id

View File

@ -37,7 +37,7 @@ public class SysDictDataController extends BaseController
@GetMapping("/list")
public ResponseObject list(SysDictData dictData,
@RequestParam(value = "pageNum",defaultValue = "1") Integer pageNo,
@RequestParam(value = "page",defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize)
{
Page page =new Page(pageNo,pageSize);