Merge remote-tracking branch 'origin/0.8.X' into 0.8.X

This commit is contained in:
2025-08-13 13:58:16 +08:00
74 changed files with 6035 additions and 27 deletions

View File

@@ -6,7 +6,6 @@ import java.util.Arrays;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.klp.common.annotation.RepeatSubmit;

View File

@@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询会计科目列表
export function listAccount(query) {
return request({
url: '/klp/account/list',
method: 'get',
params: query
})
}
// 查询会计科目详细
export function getAccount(accountId) {
return request({
url: '/klp/account/' + accountId,
method: 'get'
})
}
// 新增会计科目
export function addAccount(data) {
return request({
url: '/klp/account',
method: 'post',
data: data
})
}
// 修改会计科目
export function updateAccount(data) {
return request({
url: '/klp/account',
method: 'put',
data: data
})
}
// 删除会计科目
export function delAccount(accountId) {
return request({
url: '/klp/account/' + accountId,
method: 'delete'
})
}

View File

@@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询财务单据列表
export function listFinancialDocument(query) {
return request({
url: '/klp/financialDocument/list',
method: 'get',
params: query
})
}
// 查询财务单据详细
export function getFinancialDocument(documentId) {
return request({
url: '/klp/financialDocument/' + documentId,
method: 'get'
})
}
// 新增财务单据
export function addFinancialDocument(data) {
return request({
url: '/klp/financialDocument',
method: 'post',
data: data
})
}
// 修改财务单据
export function updateFinancialDocument(data) {
return request({
url: '/klp/financialDocument',
method: 'put',
data: data
})
}
// 删除财务单据
export function delFinancialDocument(documentId) {
return request({
url: '/klp/financialDocument/' + documentId,
method: 'delete'
})
}

View File

@@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询日记账凭证(宽松版)列表
export function listJournalEntry(query) {
return request({
url: '/klp/journalEntry/list',
method: 'get',
params: query
})
}
// 查询日记账凭证(宽松版)详细
export function getJournalEntry(entryId) {
return request({
url: '/klp/journalEntry/' + entryId,
method: 'get'
})
}
// 新增日记账凭证(宽松版)
export function addJournalEntry(data) {
return request({
url: '/klp/journalEntry',
method: 'post',
data: data
})
}
// 修改日记账凭证(宽松版)
export function updateJournalEntry(data) {
return request({
url: '/klp/journalEntry',
method: 'put',
data: data
})
}
// 删除日记账凭证(宽松版)
export function delJournalEntry(entryId) {
return request({
url: '/klp/journalEntry/' + entryId,
method: 'delete'
})
}

View File

@@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询资金日记账列表
export function listJournal(query) {
return request({
url: '/klp/journal/list',
method: 'get',
params: query
})
}
// 查询资金日记账详细
export function getJournal(journalId) {
return request({
url: '/klp/journal/' + journalId,
method: 'get'
})
}
// 新增资金日记账
export function addJournal(data) {
return request({
url: '/klp/journal',
method: 'post',
data: data
})
}
// 修改资金日记账
export function updateJournal(data) {
return request({
url: '/klp/journal',
method: 'put',
data: data
})
}
// 删除资金日记账
export function delJournal(journalId) {
return request({
url: '/klp/journal/' + journalId,
method: 'delete'
})
}

View File

@@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询应付款管理(宽松版)列表
export function listPayable(query) {
return request({
url: '/klp/payable/list',
method: 'get',
params: query
})
}
// 查询应付款管理(宽松版)详细
export function getPayable(payableId) {
return request({
url: '/klp/payable/' + payableId,
method: 'get'
})
}
// 新增应付款管理(宽松版)
export function addPayable(data) {
return request({
url: '/klp/payable',
method: 'post',
data: data
})
}
// 修改应付款管理(宽松版)
export function updatePayable(data) {
return request({
url: '/klp/payable',
method: 'put',
data: data
})
}
// 删除应付款管理(宽松版)
export function delPayable(payableId) {
return request({
url: '/klp/payable/' + payableId,
method: 'delete'
})
}

View File

@@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询应收款管理(宽松版)列表
export function listReceivable(query) {
return request({
url: '/klp/receivable/list',
method: 'get',
params: query
})
}
// 查询应收款管理(宽松版)详细
export function getReceivable(receivableId) {
return request({
url: '/klp/receivable/' + receivableId,
method: 'get'
})
}
// 新增应收款管理(宽松版)
export function addReceivable(data) {
return request({
url: '/klp/receivable',
method: 'post',
data: data
})
}
// 修改应收款管理(宽松版)
export function updateReceivable(data) {
return request({
url: '/klp/receivable',
method: 'put',
data: data
})
}
// 删除应收款管理(宽松版)
export function delReceivable(receivableId) {
return request({
url: '/klp/receivable/' + receivableId,
method: 'delete'
})
}

View File

@@ -0,0 +1,51 @@
<template>
<el-select remote filterable v-model="_value" :remote-method="remoteSearchVendor" :loading="vendorLoading" placeholder="请选择供应商">
<el-option v-for="item in vendorList" :key="item.supplierId" :label="item.name" :value="item.supplierId" />
</el-select>
</template>
<script>
import { listSupplier } from "@/api/wms/supplier";
export default {
name: "VendorSelect",
data() {
return {
vendorList: [],
vendorLoading: false,
}
},
props: {
value: {
type: String,
default: ""
}
},
computed: {
_value: {
get() {
return this.value;
},
set(val) {
this.$emit("input", val);
}
}
},
mounted() {
this.remoteSearchVendor("");
},
methods: {
remoteSearchVendor(query) {
this.vendorLoading = true;
listSupplier({
pageNum: 1,
pageSize: 10,
name: query
}).then(response => {
this.vendorList = response.rows;
this.vendorLoading = false;
});
}
}
}
</script>

View File

@@ -0,0 +1,323 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="科目编码" prop="accountCode">
<el-input
v-model="queryParams.accountCode"
placeholder="请输入科目编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="科目名称" prop="accountName">
<el-input
v-model="queryParams.accountName"
placeholder="请输入科目名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="科目类型" prop="accountType">
<el-select v-model="queryParams.accountType" placeholder="请选择科目类型" clearable>
<el-option
v-for="dict in dict.type.finance_account_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="info"
plain
icon="el-icon-sort"
size="mini"
@click="toggleExpandAll"
>展开/折叠</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table
v-if="refreshTable"
v-loading="loading"
:data="accountList"
row-key="accountId"
:default-expand-all="isExpandAll"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
>
<el-table-column label="科目编码" prop="accountCode" />
<el-table-column label="科目名称" align="center" prop="accountName" />
<el-table-column label="科目类型" align="center" prop="accountType">
<template slot-scope="scope">
<dict-tag :options="dict.type.finance_account_type" :value="scope.row.accountType"/>
</template>
</el-table-column>
<el-table-column label="上级科目ID" align="center" prop="parentId" />
<el-table-column label="当前余额" align="center" prop="balance" />
<el-table-column label="备注" align="center" prop="remark" />
<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-edit"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-plus"
@click="handleAdd(scope.row)"
>新增</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 添加或修改会计科目对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="科目编码" prop="accountCode">
<el-input v-model="form.accountCode" placeholder="请输入科目编码" />
</el-form-item>
<el-form-item label="科目名称" prop="accountName">
<el-input v-model="form.accountName" placeholder="请输入科目名称" />
</el-form-item>
<el-form-item label="科目类型" prop="accountType">
<el-select v-model="form.accountType" placeholder="请选择科目类型">
<el-option
v-for="dict in dict.type.finance_account_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="上级科目ID" prop="parentId">
<treeselect v-model="form.parentId" :options="accountOptions" :normalizer="normalizer" placeholder="请选择上级科目ID" />
</el-form-item>
<el-form-item label="当前余额" prop="balance">
<el-input v-model="form.balance" placeholder="请输入当前余额" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listAccount, getAccount, delAccount, addAccount, updateAccount } from "@/api/finance/account";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
name: "Account",
dicts: ['finance_account_type'],
components: {
Treeselect
},
data() {
return {
// 按钮loading
buttonLoading: false,
// 遮罩层
loading: true,
// 显示搜索条件
showSearch: true,
// 会计科目表格数据
accountList: [],
// 会计科目树选项
accountOptions: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 是否展开,默认全部展开
isExpandAll: true,
// 重新渲染表格状态
refreshTable: true,
// 查询参数
queryParams: {
accountCode: undefined,
accountName: undefined,
accountType: undefined,
parentId: undefined,
balance: undefined,
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询会计科目列表 */
getList() {
this.loading = true;
listAccount(this.queryParams).then(response => {
this.accountList = this.handleTree(response.data, "accountId", "parentId");
this.loading = false;
});
},
/** 转换会计科目数据结构 */
normalizer(node) {
if (node.children && !node.children.length) {
delete node.children;
}
return {
id: node.accountId,
label: node.accountName,
children: node.children
};
},
/** 查询会计科目下拉树结构 */
getTreeselect() {
listAccount().then(response => {
this.accountOptions = [];
const data = { accountId: null, accountName: '顶级节点', children: [] };
data.children = this.handleTree(response.data, "accountId", "parentId");
this.accountOptions.push(data);
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
accountId: null,
accountCode: null,
accountName: null,
accountType: null,
parentId: null,
balance: null,
delFlag: null,
remark: null,
createTime: null,
createBy: null,
updateTime: null,
updateBy: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd(row) {
this.reset();
this.getTreeselect();
if (row != null && row.accountId) {
this.form.parentId = row.accountId;
} else {
this.form.parentId = 0;
}
this.open = true;
this.title = "添加会计科目";
},
/** 展开/折叠操作 */
toggleExpandAll() {
this.refreshTable = false;
this.isExpandAll = !this.isExpandAll;
this.$nextTick(() => {
this.refreshTable = true;
});
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
this.getTreeselect();
if (row != null) {
this.form.parentId = row.accountId;
}
getAccount(row.accountId).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
this.title = "修改会计科目";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.accountId != null) {
updateAccount(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addAccount(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
this.$modal.confirm('是否确认删除会计科目编号为"' + row.accountId + '"的数据项?').then(() => {
this.loading = true;
return delAccount(row.accountId);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
}
}
};
</script>

View File

@@ -0,0 +1,373 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="凭证编号" prop="voucherNo">
<el-input
v-model="queryParams.voucherNo"
placeholder="请输入凭证编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="分录行号" prop="lineNo">
<el-input
v-model="queryParams.lineNo"
placeholder="请输入分录行号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="记账日期" prop="entryDate">
<el-date-picker clearable
v-model="queryParams.entryDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择记账日期">
</el-date-picker>
</el-form-item>
<el-form-item label="科目ID" prop="accountId">
<el-input
v-model="queryParams.accountId"
placeholder="请输入科目ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="借方金额" prop="debitAmount">
<el-input
v-model="queryParams.debitAmount"
placeholder="请输入借方金额"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="贷方金额" prop="creditAmount">
<el-input
v-model="queryParams.creditAmount"
placeholder="请输入贷方金额"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="参考单据号" prop="referenceNo">
<el-input
v-model="queryParams.referenceNo"
placeholder="请输入参考单据号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="关联订单ID" prop="relatedOrderId">
<el-input
v-model="queryParams.relatedOrderId"
placeholder="请输入关联订单ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="journalEntryList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="分录ID" align="center" prop="entryId" v-if="true"/>
<el-table-column label="凭证编号" align="center" prop="voucherNo" />
<el-table-column label="分录行号" align="center" prop="lineNo" />
<el-table-column label="记账日期" align="center" prop="entryDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.entryDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="科目ID" align="center" prop="accountId" />
<el-table-column label="借方金额" align="center" prop="debitAmount" />
<el-table-column label="贷方金额" align="center" prop="creditAmount" />
<el-table-column label="参考单据号" align="center" prop="referenceNo" />
<el-table-column label="关联订单ID" align="center" prop="relatedOrderId" />
<el-table-column label="状态" align="center" prop="status" />
<el-table-column label="备注" align="center" prop="remark" />
<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-edit"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改日记账凭证宽松版对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="凭证编号" prop="voucherNo">
<el-input v-model="form.voucherNo" placeholder="请输入凭证编号" />
</el-form-item>
<el-form-item label="分录行号" prop="lineNo">
<el-input v-model="form.lineNo" placeholder="请输入分录行号" />
</el-form-item>
<el-form-item label="记账日期" prop="entryDate">
<el-date-picker clearable
v-model="form.entryDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择记账日期">
</el-date-picker>
</el-form-item>
<el-form-item label="科目ID" prop="accountId">
<el-input v-model="form.accountId" placeholder="请输入科目ID" />
</el-form-item>
<el-form-item label="借方金额" prop="debitAmount">
<el-input v-model="form.debitAmount" placeholder="请输入借方金额" />
</el-form-item>
<el-form-item label="贷方金额" prop="creditAmount">
<el-input v-model="form.creditAmount" placeholder="请输入贷方金额" />
</el-form-item>
<el-form-item label="参考单据号" prop="referenceNo">
<el-input v-model="form.referenceNo" placeholder="请输入参考单据号" />
</el-form-item>
<el-form-item label="关联订单ID" prop="relatedOrderId">
<el-input v-model="form.relatedOrderId" placeholder="请输入关联订单ID" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listJournalEntry, getJournalEntry, delJournalEntry, addJournalEntry, updateJournalEntry } from "@/api/finance/jouneryEntry";
export default {
name: "JournalEntry",
data() {
return {
// 按钮loading
buttonLoading: false,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 日记账凭证(宽松版)表格数据
journalEntryList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
voucherNo: undefined,
lineNo: undefined,
entryDate: undefined,
accountId: undefined,
debitAmount: undefined,
creditAmount: undefined,
referenceNo: undefined,
relatedOrderId: undefined,
status: undefined,
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询日记账凭证(宽松版)列表 */
getList() {
this.loading = true;
listJournalEntry(this.queryParams).then(response => {
this.journalEntryList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
entryId: undefined,
voucherNo: undefined,
lineNo: undefined,
entryDate: undefined,
accountId: undefined,
debitAmount: undefined,
creditAmount: undefined,
referenceNo: undefined,
relatedOrderId: undefined,
status: undefined,
delFlag: undefined,
remark: undefined,
createTime: undefined,
createBy: undefined,
updateTime: undefined,
updateBy: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.entryId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加日记账凭证(宽松版)";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
const entryId = row.entryId || this.ids
getJournalEntry(entryId).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
this.title = "修改日记账凭证(宽松版)";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.entryId != null) {
updateJournalEntry(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addJournalEntry(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const entryIds = row.entryId || this.ids;
this.$modal.confirm('是否确认删除日记账凭证(宽松版)编号为"' + entryIds + '"的数据项?').then(() => {
this.loading = true;
return delJournalEntry(entryIds);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('klp/journalEntry/export', {
...this.queryParams
}, `journalEntry_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@@ -0,0 +1,312 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="单据编号" prop="docNo">
<el-input
v-model="queryParams.docNo"
placeholder="请输入单据编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="单据日期" prop="docDate">
<el-date-picker clearable
v-model="queryParams.docDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择单据日期">
</el-date-picker>
</el-form-item>
<el-form-item label="订单ID" prop="relatedOrderId">
<el-input
v-model="queryParams.relatedOrderId"
placeholder="请输入关联订单ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="financialDocumentList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="单据ID" align="center" prop="documentId" v-if="true"/>
<el-table-column label="单据编号" align="center" prop="docNo" />
<el-table-column label="单据类型" align="center" prop="docType" />
<el-table-column label="单据日期" align="center" prop="docDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.docDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="单据金额" align="center" prop="amount" />
<el-table-column label="关联订单ID" align="center" prop="relatedOrderId" />
<el-table-column label="单据状态" align="center" prop="status" />
<el-table-column label="备注" align="center" prop="remark" />
<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-edit"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改财务单据对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="单据编号" prop="docNo">
<el-input v-model="form.docNo" placeholder="请输入单据编号" />
</el-form-item>
<el-form-item label="单据日期" prop="docDate">
<el-date-picker clearable
v-model="form.docDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择单据日期">
</el-date-picker>
</el-form-item>
<el-form-item label="单据金额" prop="amount">
<el-input v-model="form.amount" placeholder="请输入单据金额" />
</el-form-item>
<el-form-item label="关联订单ID" prop="relatedOrderId">
<el-input v-model="form.relatedOrderId" placeholder="请输入关联订单ID" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listFinancialDocument, getFinancialDocument, delFinancialDocument, addFinancialDocument, updateFinancialDocument } from "@/api/finance/financialDocument";
export default {
name: "FinancialDocument",
data() {
return {
// 按钮loading
buttonLoading: false,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 财务单据表格数据
financialDocumentList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
docNo: undefined,
docType: undefined,
docDate: undefined,
amount: undefined,
relatedOrderId: undefined,
status: undefined,
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询财务单据列表 */
getList() {
this.loading = true;
listFinancialDocument(this.queryParams).then(response => {
this.financialDocumentList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
documentId: undefined,
docNo: undefined,
docType: undefined,
docDate: undefined,
amount: undefined,
relatedOrderId: undefined,
status: undefined,
delFlag: undefined,
remark: undefined,
createTime: undefined,
createBy: undefined,
updateTime: undefined,
updateBy: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.documentId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加财务单据";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
const documentId = row.documentId || this.ids
getFinancialDocument(documentId).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
this.title = "修改财务单据";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.documentId != null) {
updateFinancialDocument(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addFinancialDocument(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const documentIds = row.documentId || this.ids;
this.$modal.confirm('是否确认删除财务单据编号为"' + documentIds + '"的数据项?').then(() => {
this.loading = true;
return delFinancialDocument(documentIds);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('klp/financialDocument/export', {
...this.queryParams
}, `financialDocument_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@@ -0,0 +1,353 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="日期" prop="journalDate">
<el-date-picker clearable
v-model="queryParams.journalDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="摘要" prop="summary">
<el-input
v-model="queryParams.summary"
placeholder="请输入摘要"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="收支类型" prop="transType">
<el-input
v-model="queryParams.transType"
placeholder="请输入收支类型"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="对方户名" prop="counterpart">
<el-input
v-model="queryParams.counterpart"
placeholder="请输入对方户名"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="收入金额" prop="incomeAmount">
<el-input
v-model="queryParams.incomeAmount"
placeholder="请输入收入金额"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="支出金额" prop="expenseAmount">
<el-input
v-model="queryParams.expenseAmount"
placeholder="请输入支出金额"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="余额" prop="balanceAmount">
<el-input
v-model="queryParams.balanceAmount"
placeholder="请输入余额"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="journalList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键ID" align="center" prop="journalId" v-if="false" />
<el-table-column label="日期" align="center" prop="journalDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.journalDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="摘要" align="center" prop="summary" />
<el-table-column label="收支类型" align="center" prop="transType" />
<el-table-column label="对方户名" align="center" prop="counterpart" />
<el-table-column label="收入金额" align="center" prop="incomeAmount" />
<el-table-column label="支出金额" align="center" prop="expenseAmount" />
<el-table-column label="余额" align="center" prop="balanceAmount" />
<el-table-column label="备注" align="center" prop="remark" />
<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-edit"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改资金日记账对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="日期" prop="journalDate">
<el-date-picker clearable
v-model="form.journalDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="摘要" prop="summary">
<el-input v-model="form.summary" placeholder="请输入摘要" />
</el-form-item>
<el-form-item label="收支类型" prop="transType">
<el-input v-model="form.transType" placeholder="请输入收支类型" />
</el-form-item>
<el-form-item label="对方户名" prop="counterpart">
<el-input v-model="form.counterpart" placeholder="请输入对方户名" />
</el-form-item>
<el-form-item label="收入金额" prop="incomeAmount">
<el-input v-model="form.incomeAmount" placeholder="请输入收入金额" />
</el-form-item>
<el-form-item label="支出金额" prop="expenseAmount">
<el-input v-model="form.expenseAmount" placeholder="请输入支出金额" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listJournal, getJournal, delJournal, addJournal, updateJournal } from "@/api/finance/journal";
export default {
name: "Journal",
data() {
return {
// 按钮loading
buttonLoading: false,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 资金日记账表格数据
journalList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
journalDate: undefined,
summary: undefined,
transType: undefined,
counterpart: undefined,
incomeAmount: undefined,
expenseAmount: undefined,
balanceAmount: undefined,
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询资金日记账列表 */
getList() {
this.loading = true;
listJournal(this.queryParams).then(response => {
this.journalList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
journalId: undefined,
journalDate: undefined,
summary: undefined,
transType: undefined,
counterpart: undefined,
incomeAmount: undefined,
expenseAmount: undefined,
balanceAmount: undefined,
remark: undefined,
createBy: undefined,
createTime: undefined,
updateBy: undefined,
updateTime: undefined,
delFlag: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.journalId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加资金日记账";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
const journalId = row.journalId || this.ids
getJournal(journalId).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
this.title = "修改资金日记账";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.journalId != null) {
updateJournal(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addJournal(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const journalIds = row.journalId || this.ids;
this.$modal.confirm('是否确认删除资金日记账编号为"' + journalIds + '"的数据项?').then(() => {
this.loading = true;
return delJournal(journalIds);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('klp/journal/export', {
...this.queryParams
}, `journal_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

View File

@@ -0,0 +1,320 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="供应商" prop="supplierId">
<VendorSelect v-model="queryParams.supplierId" />
</el-form-item>
<el-form-item label="订单编号" prop="orderCode">
<el-input
v-model="queryParams.orderCode"
placeholder="请输入订单ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="到期日" prop="dueDate">
<el-date-picker clearable
v-model="queryParams.dueDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择到期日">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="payableList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="应付ID" align="center" prop="payableId" v-if="false"/>
<el-table-column label="供应商" align="center" prop="supplierName" />
<el-table-column label="订单ID" align="center" prop="orderId" />
<el-table-column label="到期日" align="center" prop="dueDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.dueDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="应付金额" align="center" prop="amount" />
<el-table-column label="已付金额" align="center" prop="paidAmount" />
<el-table-column label="未付金额" align="center" prop="balanceAmount" />
<el-table-column label="状态" align="center" prop="status" />
<el-table-column label="备注" align="center" prop="remark" />
<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-edit"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改应付款管理宽松版对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="供应商ID" prop="supplierId">
<VendorSelect v-model="form.supplierId" />
</el-form-item>
<el-form-item label="订单ID" prop="orderId">
<el-input v-model="form.orderId" placeholder="请输入订单ID" />
</el-form-item>
<el-form-item label="到期日" prop="dueDate">
<el-date-picker clearable
v-model="form.dueDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择到期日">
</el-date-picker>
</el-form-item>
<el-form-item label="应付金额" prop="amount">
<el-input v-model="form.amount" placeholder="请输入应付金额" />
</el-form-item>
<el-form-item label="已付金额" prop="paidAmount">
<el-input v-model="form.paidAmount" placeholder="请输入已付金额" />
</el-form-item>
<!-- <el-form-item label="未付金额" prop="balanceAmount">
<el-input v-model="form.balanceAmount" placeholder="请输入未付金额" />
</el-form-item> -->
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listPayable, getPayable, delPayable, addPayable, updatePayable } from "@/api/finance/payable";
import VendorSelect from '@/components/KLPService/VendorSelect/index.vue';
export default {
name: "Payable",
components: {
VendorSelect
},
data() {
return {
// 按钮loading
buttonLoading: false,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 应付款管理(宽松版)表格数据
payableList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
supplierId: undefined,
orderCode: undefined,
dueDate: undefined,
amount: undefined,
paidAmount: undefined,
balanceAmount: undefined,
status: undefined,
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询应付款管理(宽松版)列表 */
getList() {
this.loading = true;
listPayable(this.queryParams).then(response => {
this.payableList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
payableId: undefined,
supplierId: undefined,
orderId: undefined,
dueDate: undefined,
amount: undefined,
paidAmount: undefined,
balanceAmount: undefined,
status: undefined,
delFlag: undefined,
remark: undefined,
createTime: undefined,
createBy: undefined,
updateTime: undefined,
updateBy: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.payableId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加应付款管理(宽松版)";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
const payableId = row.payableId || this.ids
getPayable(payableId).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
this.title = "修改应付款管理(宽松版)";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.payableId != null) {
updatePayable(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addPayable(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const payableIds = row.payableId || this.ids;
this.$modal.confirm('是否确认删除应付款管理(宽松版)编号为"' + payableIds + '"的数据项?').then(() => {
this.loading = true;
return delPayable(payableIds);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('klp/payable/export', {
...this.queryParams
}, `payable_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@@ -0,0 +1,320 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="客户名称" prop="customerId">
<CustomerSelect v-model="queryParams.customerId" />
</el-form-item>
<el-form-item label="订单ID" prop="orderCode">
<el-input
v-model="queryParams.orderCode"
placeholder="请输入订单ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="到期日" prop="dueDate">
<el-date-picker clearable
v-model="queryParams.dueDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择到期日">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="receivableList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="应收ID" align="center" prop="receivableId" v-if="false"/>
<el-table-column label="客户" align="center" prop="customerName" />
<el-table-column label="订单ID" align="center" prop="orderId" />
<el-table-column label="到期日" align="center" prop="dueDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.dueDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="应收金额" align="center" prop="amount" />
<el-table-column label="已收金额" align="center" prop="paidAmount" />
<el-table-column label="未收金额" align="center" prop="balanceAmount" />
<el-table-column label="状态" align="center" prop="status" />
<el-table-column label="备注" align="center" prop="remark" />
<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-edit"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改应收款管理宽松版对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="客户ID" prop="customerId">
<CustomerSelect v-model="form.customerId" />
</el-form-item>
<el-form-item label="订单ID" prop="orderId">
<el-input v-model="form.orderId" placeholder="请输入订单ID" />
</el-form-item>
<el-form-item label="到期日" prop="dueDate">
<el-date-picker clearable
v-model="form.dueDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择到期日">
</el-date-picker>
</el-form-item>
<el-form-item label="应收金额" prop="amount">
<el-input v-model="form.amount" placeholder="请输入应收金额" />
</el-form-item>
<el-form-item label="已收金额" prop="paidAmount">
<el-input v-model="form.paidAmount" placeholder="请输入已收金额" />
</el-form-item>
<!-- <el-form-item label="未收金额" prop="balanceAmount">
<el-input v-model="form.balanceAmount" placeholder="请输入未收金额" />
</el-form-item> -->
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listReceivable, getReceivable, delReceivable, addReceivable, updateReceivable } from "@/api/finance/receivable";
import CustomerSelect from '@/components/KLPService/CustomerSelect/index.vue';
export default {
name: "Receivable",
components: {
CustomerSelect
},
data() {
return {
// 按钮loading
buttonLoading: false,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 应收款管理(宽松版)表格数据
receivableList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
customerId: undefined,
orderCode: undefined,
dueDate: undefined,
amount: undefined,
paidAmount: undefined,
balanceAmount: undefined,
status: undefined,
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询应收款管理(宽松版)列表 */
getList() {
this.loading = true;
listReceivable(this.queryParams).then(response => {
this.receivableList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
receivableId: undefined,
customerId: undefined,
orderId: undefined,
dueDate: undefined,
amount: undefined,
paidAmount: undefined,
balanceAmount: undefined,
status: undefined,
delFlag: undefined,
remark: undefined,
createTime: undefined,
createBy: undefined,
updateTime: undefined,
updateBy: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.receivableId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加应收款管理(宽松版)";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
const receivableId = row.receivableId || this.ids
getReceivable(receivableId).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
this.title = "修改应收款管理(宽松版)";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.receivableId != null) {
updateReceivable(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addReceivable(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const receivableIds = row.receivableId || this.ids;
this.$modal.confirm('是否确认删除应收款管理(宽松版)编号为"' + receivableIds + '"的数据项?').then(() => {
this.loading = true;
return delReceivable(receivableIds);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('klp/receivable/export', {
...this.queryParams
}, `receivable_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@@ -120,6 +120,12 @@
icon="el-icon-document"
@click="showDetail(scope.row)"
>明细</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-document"
@click="copyOrderId(scope.row)"
>复制订单ID</el-button>
<!-- <el-button
size="mini"
type="text"
@@ -304,6 +310,16 @@ export default {
this.single = selection.length!==1
this.multiple = !selection.length
},
copyOrderId(row) {
// 获取浏览器剪切板对象并复制row.orderId
// 先检查是否支持
if (navigator.clipboard) {
navigator.clipboard.writeText(row.orderId);
this.$modal.msgSuccess("复制成功");
} else {
this.$modal.msgError("浏览器不支持复制功能");
}
},
/** 新增按钮操作 */
handleAdd() {
this.reset();

View File

@@ -110,6 +110,12 @@
icon="el-icon-document"
@click="showDetail(scope.row)"
>明细</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-document"
@click="copyOrderId(scope.row)"
>复制订单ID</el-button>
<el-button
size="mini"
type="text"
@@ -296,6 +302,16 @@ export default {
this.single = selection.length!==1
this.multiple = !selection.length
},
copyOrderId(row) {
// 获取浏览器剪切板对象并复制row.orderId
// 先检查是否支持
if (navigator.clipboard) {
navigator.clipboard.writeText(row.orderId);
this.$modal.msgSuccess("复制成功");
} else {
this.$modal.msgError("浏览器不支持复制功能");
}
},
/** 新增按钮操作 */
handleAdd() {
this.reset();

View File

@@ -158,9 +158,7 @@
</el-form-item>
<!-- 远程搜索供应商 -->
<el-form-item label="供应商" prop="supplierId">
<el-select remote filterable v-model="form.supplierId" placeholder="请选择供应商" :remote-method="remoteSearchVendor" :loading="vendorLoading">
<el-option v-for="item in vendorList" :key="item.supplierId" :label="item.name" :value="item.supplierId" />
</el-select>
<VendorSelect v-model="form.supplierId" />
</el-form-item>
<!-- 远程搜索合同 -->
<el-form-item label="合同" prop="contractId">
@@ -208,6 +206,7 @@ import UserSelect from '@/components/KLPService/UserSelect'
import { RawMaterialInfo } from '@/components/KLPService';
import BomInfoMini from '@/components/KLPService/Renderer/BomInfoMini.vue';
import QualityCerticate from './qualityCerticate.vue'
import VendorSelect from '@/components/KLPService/VendorSelect/index.vue';
export default {
name: "PurchasePlanDetail",
@@ -217,7 +216,8 @@ export default {
UserSelect,
RawMaterialInfo,
BomInfoMini,
QualityCerticate
QualityCerticate,
VendorSelect
},
props: {
planId: {
@@ -299,10 +299,7 @@ export default {
},
created() {
this.getList();
this.remoteSearchVendor('');
this.remoteSearchContract('');
// this.getVendorList();
// this.getContractList();
},
watch: {
planId: {
@@ -316,15 +313,6 @@ export default {
}
},
methods: {
// 默认执行一次
remoteSearchVendor(query) {
this.vendorLoading = true;
listSupplier({ name: query, pageNum: 1, pageSize: 10 }).then(response => {
this.vendorList = response.rows;
}).finally(() => {
this.vendorLoading = false;
});
},
remoteSearchContract(query) {
this.contractLoading = true;
listContract({ contractNo: query, pageNum: 1, pageSize: 10 }).then(response => {
@@ -333,16 +321,6 @@ export default {
this.contractLoading = false;
});
},
// getVendorList() {
// listSupplier().then(response => {
// this.vendorList = response.rows;
// });
// },
// getContractList() {
// listContract({ type: 'purchase' }).then(response => {
// this.contractList = response.rows;
// });
// },
/** 查询采购计划明细列表 */
getList() {
this.loading = true;

View File

@@ -0,0 +1,98 @@
package com.klp.controller;
import java.util.List;
import java.util.Arrays;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.annotation.Log;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.R;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.domain.vo.WmsAccountVo;
import com.klp.domain.bo.WmsAccountBo;
import com.klp.service.IWmsAccountService;
/**
* 会计科目
*
* @author klp
* @date 2025-08-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/klp/account")
public class WmsAccountController extends BaseController {
private final IWmsAccountService iWmsAccountService;
/**
* 查询会计科目列表
*/
@GetMapping("/list")
public R<List<WmsAccountVo>> list(WmsAccountBo bo) {
List<WmsAccountVo> list = iWmsAccountService.queryList(bo);
return R.ok(list);
}
/**
* 导出会计科目列表
*/
@Log(title = "会计科目", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsAccountBo bo, HttpServletResponse response) {
List<WmsAccountVo> list = iWmsAccountService.queryList(bo);
ExcelUtil.exportExcel(list, "会计科目", WmsAccountVo.class, response);
}
/**
* 获取会计科目详细信息
*
* @param accountId 主键
*/
@GetMapping("/{accountId}")
public R<WmsAccountVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long accountId) {
return R.ok(iWmsAccountService.queryById(accountId));
}
/**
* 新增会计科目
*/
@Log(title = "会计科目", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsAccountBo bo) {
return toAjax(iWmsAccountService.insertByBo(bo));
}
/**
* 修改会计科目
*/
@Log(title = "会计科目", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsAccountBo bo) {
return toAjax(iWmsAccountService.updateByBo(bo));
}
/**
* 删除会计科目
*
* @param accountIds 主键串
*/
@Log(title = "会计科目", businessType = BusinessType.DELETE)
@DeleteMapping("/{accountIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] accountIds) {
return toAjax(iWmsAccountService.deleteWithValidByIds(Arrays.asList(accountIds), true));
}
}

View File

@@ -0,0 +1,99 @@
package com.klp.controller;
import java.util.List;
import java.util.Arrays;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.annotation.Log;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.domain.vo.WmsFinancialDocumentVo;
import com.klp.domain.bo.WmsFinancialDocumentBo;
import com.klp.service.IWmsFinancialDocumentService;
import com.klp.common.core.page.TableDataInfo;
/**
* 财务单据
*
* @author klp
* @date 2025-08-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/klp/financialDocument")
public class WmsFinancialDocumentController extends BaseController {
private final IWmsFinancialDocumentService iWmsFinancialDocumentService;
/**
* 查询财务单据列表
*/
@GetMapping("/list")
public TableDataInfo<WmsFinancialDocumentVo> list(WmsFinancialDocumentBo bo, PageQuery pageQuery) {
return iWmsFinancialDocumentService.queryPageList(bo, pageQuery);
}
/**
* 导出财务单据列表
*/
@Log(title = "财务单据", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsFinancialDocumentBo bo, HttpServletResponse response) {
List<WmsFinancialDocumentVo> list = iWmsFinancialDocumentService.queryList(bo);
ExcelUtil.exportExcel(list, "财务单据", WmsFinancialDocumentVo.class, response);
}
/**
* 获取财务单据详细信息
*
* @param documentId 主键
*/
@GetMapping("/{documentId}")
public R<WmsFinancialDocumentVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long documentId) {
return R.ok(iWmsFinancialDocumentService.queryById(documentId));
}
/**
* 新增财务单据
*/
@Log(title = "财务单据", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsFinancialDocumentBo bo) {
return toAjax(iWmsFinancialDocumentService.insertByBo(bo));
}
/**
* 修改财务单据
*/
@Log(title = "财务单据", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsFinancialDocumentBo bo) {
return toAjax(iWmsFinancialDocumentService.updateByBo(bo));
}
/**
* 删除财务单据
*
* @param documentIds 主键串
*/
@Log(title = "财务单据", businessType = BusinessType.DELETE)
@DeleteMapping("/{documentIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] documentIds) {
return toAjax(iWmsFinancialDocumentService.deleteWithValidByIds(Arrays.asList(documentIds), true));
}
}

View File

@@ -0,0 +1,99 @@
package com.klp.controller;
import java.util.List;
import java.util.Arrays;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.annotation.Log;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.domain.vo.WmsJournalVo;
import com.klp.domain.bo.WmsJournalBo;
import com.klp.service.IWmsJournalService;
import com.klp.common.core.page.TableDataInfo;
/**
* 资金日记账
*
* @author klp
* @date 2025-08-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/klp/journal")
public class WmsJournalController extends BaseController {
private final IWmsJournalService iWmsJournalService;
/**
* 查询资金日记账列表
*/
@GetMapping("/list")
public TableDataInfo<WmsJournalVo> list(WmsJournalBo bo, PageQuery pageQuery) {
return iWmsJournalService.queryPageList(bo, pageQuery);
}
/**
* 导出资金日记账列表
*/
@Log(title = "资金日记账", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsJournalBo bo, HttpServletResponse response) {
List<WmsJournalVo> list = iWmsJournalService.queryList(bo);
ExcelUtil.exportExcel(list, "资金日记账", WmsJournalVo.class, response);
}
/**
* 获取资金日记账详细信息
*
* @param journalId 主键
*/
@GetMapping("/{journalId}")
public R<WmsJournalVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long journalId) {
return R.ok(iWmsJournalService.queryById(journalId));
}
/**
* 新增资金日记账
*/
@Log(title = "资金日记账", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsJournalBo bo) {
return toAjax(iWmsJournalService.insertByBo(bo));
}
/**
* 修改资金日记账
*/
@Log(title = "资金日记账", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsJournalBo bo) {
return toAjax(iWmsJournalService.updateByBo(bo));
}
/**
* 删除资金日记账
*
* @param journalIds 主键串
*/
@Log(title = "资金日记账", businessType = BusinessType.DELETE)
@DeleteMapping("/{journalIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] journalIds) {
return toAjax(iWmsJournalService.deleteWithValidByIds(Arrays.asList(journalIds), true));
}
}

View File

@@ -0,0 +1,99 @@
package com.klp.controller;
import java.util.List;
import java.util.Arrays;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.annotation.Log;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.domain.vo.WmsJournalEntryVo;
import com.klp.domain.bo.WmsJournalEntryBo;
import com.klp.service.IWmsJournalEntryService;
import com.klp.common.core.page.TableDataInfo;
/**
* 日记账凭证(宽松版)
*
* @author klp
* @date 2025-08-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/klp/journalEntry")
public class WmsJournalEntryController extends BaseController {
private final IWmsJournalEntryService iWmsJournalEntryService;
/**
* 查询日记账凭证(宽松版)列表
*/
@GetMapping("/list")
public TableDataInfo<WmsJournalEntryVo> list(WmsJournalEntryBo bo, PageQuery pageQuery) {
return iWmsJournalEntryService.queryPageList(bo, pageQuery);
}
/**
* 导出日记账凭证(宽松版)列表
*/
@Log(title = "日记账凭证(宽松版)", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsJournalEntryBo bo, HttpServletResponse response) {
List<WmsJournalEntryVo> list = iWmsJournalEntryService.queryList(bo);
ExcelUtil.exportExcel(list, "日记账凭证(宽松版)", WmsJournalEntryVo.class, response);
}
/**
* 获取日记账凭证(宽松版)详细信息
*
* @param entryId 主键
*/
@GetMapping("/{entryId}")
public R<WmsJournalEntryVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long entryId) {
return R.ok(iWmsJournalEntryService.queryById(entryId));
}
/**
* 新增日记账凭证(宽松版)
*/
@Log(title = "日记账凭证(宽松版)", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsJournalEntryBo bo) {
return toAjax(iWmsJournalEntryService.insertByBo(bo));
}
/**
* 修改日记账凭证(宽松版)
*/
@Log(title = "日记账凭证(宽松版)", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsJournalEntryBo bo) {
return toAjax(iWmsJournalEntryService.updateByBo(bo));
}
/**
* 删除日记账凭证(宽松版)
*
* @param entryIds 主键串
*/
@Log(title = "日记账凭证(宽松版)", businessType = BusinessType.DELETE)
@DeleteMapping("/{entryIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] entryIds) {
return toAjax(iWmsJournalEntryService.deleteWithValidByIds(Arrays.asList(entryIds), true));
}
}

View File

@@ -0,0 +1,99 @@
package com.klp.controller;
import java.util.List;
import java.util.Arrays;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.annotation.Log;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.domain.vo.WmsOrderProfitVo;
import com.klp.domain.bo.WmsOrderProfitBo;
import com.klp.service.IWmsOrderProfitService;
import com.klp.common.core.page.TableDataInfo;
/**
* 订单盈亏
*
* @author klp
* @date 2025-08-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/klp/orderProfit")
public class WmsOrderProfitController extends BaseController {
private final IWmsOrderProfitService iWmsOrderProfitService;
/**
* 查询订单盈亏列表
*/
@GetMapping("/list")
public TableDataInfo<WmsOrderProfitVo> list(WmsOrderProfitBo bo, PageQuery pageQuery) {
return iWmsOrderProfitService.queryPageList(bo, pageQuery);
}
/**
* 导出订单盈亏列表
*/
@Log(title = "订单盈亏", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsOrderProfitBo bo, HttpServletResponse response) {
List<WmsOrderProfitVo> list = iWmsOrderProfitService.queryList(bo);
ExcelUtil.exportExcel(list, "订单盈亏", WmsOrderProfitVo.class, response);
}
/**
* 获取订单盈亏详细信息
*
* @param profitId 主键
*/
@GetMapping("/{profitId}")
public R<WmsOrderProfitVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long profitId) {
return R.ok(iWmsOrderProfitService.queryById(profitId));
}
/**
* 新增订单盈亏
*/
@Log(title = "订单盈亏", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsOrderProfitBo bo) {
return toAjax(iWmsOrderProfitService.insertByBo(bo));
}
/**
* 修改订单盈亏
*/
@Log(title = "订单盈亏", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsOrderProfitBo bo) {
return toAjax(iWmsOrderProfitService.updateByBo(bo));
}
/**
* 删除订单盈亏
*
* @param profitIds 主键串
*/
@Log(title = "订单盈亏", businessType = BusinessType.DELETE)
@DeleteMapping("/{profitIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] profitIds) {
return toAjax(iWmsOrderProfitService.deleteWithValidByIds(Arrays.asList(profitIds), true));
}
}

View File

@@ -0,0 +1,99 @@
package com.klp.controller;
import java.util.List;
import java.util.Arrays;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.annotation.Log;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.domain.vo.WmsPayableVo;
import com.klp.domain.bo.WmsPayableBo;
import com.klp.service.IWmsPayableService;
import com.klp.common.core.page.TableDataInfo;
/**
* 应付款管理(宽松版)
*
* @author klp
* @date 2025-08-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/klp/payable")
public class WmsPayableController extends BaseController {
private final IWmsPayableService iWmsPayableService;
/**
* 查询应付款管理(宽松版)列表
*/
@GetMapping("/list")
public TableDataInfo<WmsPayableVo> list(WmsPayableBo bo, PageQuery pageQuery) {
return iWmsPayableService.queryPageList(bo, pageQuery);
}
/**
* 导出应付款管理(宽松版)列表
*/
@Log(title = "应付款管理(宽松版)", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsPayableBo bo, HttpServletResponse response) {
List<WmsPayableVo> list = iWmsPayableService.queryList(bo);
ExcelUtil.exportExcel(list, "应付款管理(宽松版)", WmsPayableVo.class, response);
}
/**
* 获取应付款管理(宽松版)详细信息
*
* @param payableId 主键
*/
@GetMapping("/{payableId}")
public R<WmsPayableVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long payableId) {
return R.ok(iWmsPayableService.queryById(payableId));
}
/**
* 新增应付款管理(宽松版)
*/
@Log(title = "应付款管理(宽松版)", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsPayableBo bo) {
return toAjax(iWmsPayableService.insertByBo(bo));
}
/**
* 修改应付款管理(宽松版)
*/
@Log(title = "应付款管理(宽松版)", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsPayableBo bo) {
return toAjax(iWmsPayableService.updateByBo(bo));
}
/**
* 删除应付款管理(宽松版)
*
* @param payableIds 主键串
*/
@Log(title = "应付款管理(宽松版)", businessType = BusinessType.DELETE)
@DeleteMapping("/{payableIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] payableIds) {
return toAjax(iWmsPayableService.deleteWithValidByIds(Arrays.asList(payableIds), true));
}
}

View File

@@ -0,0 +1,99 @@
package com.klp.controller;
import java.util.List;
import java.util.Arrays;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.annotation.Log;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
import com.klp.common.core.domain.R;
import com.klp.common.core.validate.AddGroup;
import com.klp.common.core.validate.EditGroup;
import com.klp.common.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.domain.vo.WmsReceivableVo;
import com.klp.domain.bo.WmsReceivableBo;
import com.klp.service.IWmsReceivableService;
import com.klp.common.core.page.TableDataInfo;
/**
* 应收款管理(宽松版)
*
* @author klp
* @date 2025-08-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/klp/receivable")
public class WmsReceivableController extends BaseController {
private final IWmsReceivableService iWmsReceivableService;
/**
* 查询应收款管理(宽松版)列表
*/
@GetMapping("/list")
public TableDataInfo<WmsReceivableVo> list(WmsReceivableBo bo, PageQuery pageQuery) {
return iWmsReceivableService.queryPageList(bo, pageQuery);
}
/**
* 导出应收款管理(宽松版)列表
*/
@Log(title = "应收款管理(宽松版)", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsReceivableBo bo, HttpServletResponse response) {
List<WmsReceivableVo> list = iWmsReceivableService.queryList(bo);
ExcelUtil.exportExcel(list, "应收款管理(宽松版)", WmsReceivableVo.class, response);
}
/**
* 获取应收款管理(宽松版)详细信息
*
* @param receivableId 主键
*/
@GetMapping("/{receivableId}")
public R<WmsReceivableVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long receivableId) {
return R.ok(iWmsReceivableService.queryById(receivableId));
}
/**
* 新增应收款管理(宽松版)
*/
@Log(title = "应收款管理(宽松版)", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsReceivableBo bo) {
return toAjax(iWmsReceivableService.insertByBo(bo));
}
/**
* 修改应收款管理(宽松版)
*/
@Log(title = "应收款管理(宽松版)", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsReceivableBo bo) {
return toAjax(iWmsReceivableService.updateByBo(bo));
}
/**
* 删除应收款管理(宽松版)
*
* @param receivableIds 主键串
*/
@Log(title = "应收款管理(宽松版)", businessType = BusinessType.DELETE)
@DeleteMapping("/{receivableIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] receivableIds) {
return toAjax(iWmsReceivableService.deleteWithValidByIds(Arrays.asList(receivableIds), true));
}
}

View File

@@ -0,0 +1,54 @@
package com.klp.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import com.klp.common.core.domain.TreeEntity;
/**
* 会计科目对象 wms_account
*
* @author klp
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_account")
public class WmsAccount extends TreeEntity<WmsAccount> {
private static final long serialVersionUID=1L;
/**
* 科目ID主键
*/
@TableId(value = "account_id")
private Long accountId;
/**
* 科目编码
*/
private String accountCode;
/**
* 科目名称
*/
private String accountName;
/**
* 科目类型
*/
private String accountType;
/**
* 当前余额(可容忍暂时不准确,过账汇总)
*/
private BigDecimal balance;
/**
* 删除标志0=正常1=已删除)
*/
@TableLogic
private Integer delFlag;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,64 @@
package com.klp.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 财务单据对象 wms_financial_document
*
* @author klp
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_financial_document")
public class WmsFinancialDocument extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 单据ID主键
*/
@TableId(value = "document_id")
private Long documentId;
/**
* 单据编号
*/
private String docNo;
/**
* 单据类型
*/
private String docType;
/**
* 单据日期
*/
private Date docDate;
/**
* 单据金额
*/
private BigDecimal amount;
/**
* 关联订单ID
*/
private Long relatedOrderId;
/**
* 单据状态
*/
private String status;
/**
* 删除标志0=正常1=已删除)
*/
@TableLogic
private Integer delFlag;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,67 @@
package com.klp.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
/**
* 资金日记账对象 wms_journal
*
* @author klp
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_journal")
public class WmsJournal extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 主键ID
*/
@TableId(value = "journal_id")
private Long journalId;
/**
* 日期
*/
private Date journalDate;
/**
* 摘要
*/
private String summary;
/**
* 收支类型
*/
private String transType;
/**
* 对方户名
*/
private String counterpart;
/**
* 收入金额
*/
private BigDecimal incomeAmount;
/**
* 支出金额
*/
private BigDecimal expenseAmount;
/**
* 余额
*/
private BigDecimal balanceAmount;
/**
* 备注
*/
private String remark;
/**
* 删除标志0正常 1删除
*/
@TableLogic
private Long delFlag;
}

View File

@@ -0,0 +1,75 @@
package com.klp.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
/**
* 日记账凭证(宽松版)对象 wms_journal_entry
*
* @author klp
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_journal_entry")
public class WmsJournalEntry extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 分录ID主键
*/
@TableId(value = "entry_id")
private Long entryId;
/**
* 凭证编号
*/
private String voucherNo;
/**
* 分录行号(同一凭证内序号)
*/
private Long lineNo;
/**
* 记账日期
*/
private Date entryDate;
/**
* 科目ID
*/
private Long accountId;
/**
* 借方金额可为0或负数用于调账/红冲)
*/
private BigDecimal debitAmount;
/**
* 贷方金额可为0或负数用于调账/红冲)
*/
private BigDecimal creditAmount;
/**
* 参考单据号
*/
private String referenceNo;
/**
* 关联订单ID
*/
private Long relatedOrderId;
/**
* 状态
*/
private String status;
/**
* 删除标志0=正常1=已删除)
*/
@TableLogic
private Integer delFlag;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,58 @@
package com.klp.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
* 订单盈亏对象 wms_order_profit
*
* @author klp
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_order_profit")
public class WmsOrderProfit extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 盈亏ID主键
*/
@TableId(value = "profit_id")
private Long profitId;
/**
* 订单ID
*/
private Long orderId;
/**
* 成本金额
*/
private BigDecimal costAmount;
/**
* 收入金额
*/
private BigDecimal revenueAmount;
/**
* 利润金额
*/
private BigDecimal profitAmount;
/**
* 利润率(%)
*/
private BigDecimal profitRate;
/**
* 删除标志0=正常1=已删除)
*/
@TableLogic
private Integer delFlag;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,68 @@
package com.klp.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 应付款管理(宽松版)对象 wms_payable
*
* @author klp
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_payable")
public class WmsPayable extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 应付ID主键
*/
@TableId(value = "payable_id")
private Long payableId;
/**
* 供应商ID
*/
private Long supplierId;
/**
* 订单ID
*/
private Long orderId;
/**
* 到期日
*/
private Date dueDate;
/**
* 应付金额(可为负数用于调整)
*/
private BigDecimal amount;
/**
* 已付金额(可为负数用于冲销)
*/
private BigDecimal paidAmount;
/**
* 未付金额
*/
private BigDecimal balanceAmount;
/**
* 状态
*/
private String status;
/**
* 删除标志0=正常1=已删除)
*/
@TableLogic
private Integer delFlag;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,68 @@
package com.klp.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 应收款管理(宽松版)对象 wms_receivable
*
* @author klp
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_receivable")
public class WmsReceivable extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 应收ID主键
*/
@TableId(value = "receivable_id")
private Long receivableId;
/**
* 客户ID
*/
private Long customerId;
/**
* 订单ID
*/
private Long orderId;
/**
* 到期日
*/
private Date dueDate;
/**
* 应收金额(可为负数用于调整)
*/
private BigDecimal amount;
/**
* 已收金额(可为负数用于冲销)
*/
private BigDecimal paidAmount;
/**
* 未收金额
*/
private BigDecimal balanceAmount;
/**
* 状态
*/
private String status;
/**
* 删除标志0=正常1=已删除)
*/
@TableLogic
private Integer delFlag;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,51 @@
package com.klp.domain.bo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import com.klp.common.core.domain.TreeEntity;
/**
* 会计科目业务对象 wms_account
*
* @author klp
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WmsAccountBo extends TreeEntity<WmsAccountBo> {
/**
* 科目ID主键
*/
private Long accountId;
/**
* 科目编码
*/
private String accountCode;
/**
* 科目名称
*/
private String accountName;
/**
* 科目类型
*/
private String accountType;
/**
* 当前余额(可容忍暂时不准确,过账汇总)
*/
private BigDecimal balance;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,66 @@
package com.klp.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 财务单据业务对象 wms_financial_document
*
* @author klp
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WmsFinancialDocumentBo extends BaseEntity {
/**
* 单据ID主键
*/
private Long documentId;
/**
* 单据编号
*/
private String docNo;
/**
* 单据类型
*/
private String docType;
/**
* 单据日期
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date docDate;
/**
* 单据金额
*/
private BigDecimal amount;
/**
* 关联订单ID
*/
private Long relatedOrderId;
/**
* 单据状态
*/
private String status;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,71 @@
package com.klp.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 资金日记账业务对象 wms_journal
*
* @author klp
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WmsJournalBo extends BaseEntity {
/**
* 主键ID
*/
private Long journalId;
/**
* 日期
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date journalDate;
/**
* 摘要
*/
private String summary;
/**
* 收支类型
*/
private String transType;
/**
* 对方户名
*/
private String counterpart;
/**
* 收入金额
*/
private BigDecimal incomeAmount;
/**
* 支出金额
*/
private BigDecimal expenseAmount;
/**
* 余额
*/
private BigDecimal balanceAmount;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,82 @@
package com.klp.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 日记账凭证(宽松版)业务对象 wms_journal_entry
*
* @author klp
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WmsJournalEntryBo extends BaseEntity {
/**
* 分录ID主键
*/
private Long entryId;
/**
* 凭证编号
*/
private String voucherNo;
/**
* 分录行号(同一凭证内序号)
*/
private Long lineNo;
/**
* 记账日期
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date entryDate;
/**
* 科目ID
*/
private Long accountId;
/**
* 借方金额可为0或负数用于调账/红冲)
*/
private BigDecimal debitAmount;
/**
* 贷方金额可为0或负数用于调账/红冲)
*/
private BigDecimal creditAmount;
/**
* 参考单据号
*/
private String referenceNo;
/**
* 关联订单ID
*/
private Long relatedOrderId;
/**
* 状态
*/
private String status;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,56 @@
package com.klp.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
* 订单盈亏业务对象 wms_order_profit
*
* @author klp
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WmsOrderProfitBo extends BaseEntity {
/**
* 盈亏ID主键
*/
private Long profitId;
/**
* 订单ID
*/
private Long orderId;
/**
* 成本金额
*/
private BigDecimal costAmount;
/**
* 收入金额
*/
private BigDecimal revenueAmount;
/**
* 利润金额
*/
private BigDecimal profitAmount;
/**
* 利润率(%)
*/
private BigDecimal profitRate;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,71 @@
package com.klp.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 应付款管理(宽松版)业务对象 wms_payable
*
* @author klp
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WmsPayableBo extends BaseEntity {
/**
* 应付ID主键
*/
private Long payableId;
/**
* 供应商ID
*/
private Long supplierId;
/**
* 订单ID
*/
private Long orderId;
/**
* 到期日
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date dueDate;
/**
* 应付金额(可为负数用于调整)
*/
private BigDecimal amount;
/**
* 已付金额(可为负数用于冲销)
*/
private BigDecimal paidAmount;
/**
* 未付金额
*/
private BigDecimal balanceAmount;
/**
* 状态
*/
private String status;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,71 @@
package com.klp.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 应收款管理(宽松版)业务对象 wms_receivable
*
* @author klp
* @date 2025-08-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WmsReceivableBo extends BaseEntity {
/**
* 应收ID主键
*/
private Long receivableId;
/**
* 客户ID
*/
private Long customerId;
/**
* 订单ID
*/
private Long orderId;
/**
* 到期日
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date dueDate;
/**
* 应收金额(可为负数用于调整)
*/
private BigDecimal amount;
/**
* 已收金额(可为负数用于冲销)
*/
private BigDecimal paidAmount;
/**
* 未收金额
*/
private BigDecimal balanceAmount;
/**
* 状态
*/
private String status;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,68 @@
package com.klp.domain.vo;
import java.math.BigDecimal;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 会计科目视图对象 wms_account
*
* @author klp
* @date 2025-08-13
*/
@Data
@ExcelIgnoreUnannotated
public class WmsAccountVo {
private static final long serialVersionUID = 1L;
/**
* 科目ID主键
*/
@ExcelProperty(value = "科目ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "主=键")
private Long accountId;
/**
* 科目编码
*/
@ExcelProperty(value = "科目编码")
private String accountCode;
/**
* 科目名称
*/
@ExcelProperty(value = "科目名称")
private String accountName;
/**
* 科目类型
*/
@ExcelProperty(value = "科目类型")
private String accountType;
/**
* 上级科目ID
*/
@ExcelProperty(value = "上级科目ID")
private Long parentId;
/**
* 当前余额(可容忍暂时不准确,过账汇总)
*/
@ExcelProperty(value = "当前余额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "可=容忍暂时不准确,过账汇总")
private BigDecimal balance;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,76 @@
package com.klp.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 财务单据视图对象 wms_financial_document
*
* @author klp
* @date 2025-08-13
*/
@Data
@ExcelIgnoreUnannotated
public class WmsFinancialDocumentVo {
private static final long serialVersionUID = 1L;
/**
* 单据ID主键
*/
@ExcelProperty(value = "单据ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "主=键")
private Long documentId;
/**
* 单据编号
*/
@ExcelProperty(value = "单据编号")
private String docNo;
/**
* 单据类型
*/
@ExcelProperty(value = "单据类型")
private String docType;
/**
* 单据日期
*/
@ExcelProperty(value = "单据日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date docDate;
/**
* 单据金额
*/
@ExcelProperty(value = "单据金额")
private BigDecimal amount;
/**
* 关联订单ID
*/
@ExcelProperty(value = "关联订单ID")
private Long relatedOrderId;
/**
* 单据状态
*/
@ExcelProperty(value = "单据状态")
private String status;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,97 @@
package com.klp.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 日记账凭证(宽松版)视图对象 wms_journal_entry
*
* @author klp
* @date 2025-08-13
*/
@Data
@ExcelIgnoreUnannotated
public class WmsJournalEntryVo {
private static final long serialVersionUID = 1L;
/**
* 分录ID主键
*/
@ExcelProperty(value = "分录ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "主=键")
private Long entryId;
/**
* 凭证编号
*/
@ExcelProperty(value = "凭证编号")
private String voucherNo;
/**
* 分录行号(同一凭证内序号)
*/
@ExcelProperty(value = "分录行号", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "同=一凭证内序号")
private Long lineNo;
/**
* 记账日期
*/
@ExcelProperty(value = "记账日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date entryDate;
/**
* 科目ID
*/
@ExcelProperty(value = "科目ID")
private Long accountId;
/**
* 借方金额可为0或负数用于调账/红冲)
*/
@ExcelProperty(value = "借方金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "可=为0或负数用于调账/红冲")
private BigDecimal debitAmount;
/**
* 贷方金额可为0或负数用于调账/红冲)
*/
@ExcelProperty(value = "贷方金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "可=为0或负数用于调账/红冲")
private BigDecimal creditAmount;
/**
* 参考单据号
*/
@ExcelProperty(value = "参考单据号")
private String referenceNo;
/**
* 关联订单ID
*/
@ExcelProperty(value = "关联订单ID")
private Long relatedOrderId;
/**
* 状态
*/
@ExcelProperty(value = "状态")
private String status;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,81 @@
package com.klp.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 资金日记账视图对象 wms_journal
*
* @author klp
* @date 2025-08-13
*/
@Data
@ExcelIgnoreUnannotated
public class WmsJournalVo {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long journalId;
/**
* 日期
*/
@ExcelProperty(value = "日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date journalDate;
/**
* 摘要
*/
@ExcelProperty(value = "摘要")
private String summary;
/**
* 收支类型
*/
@ExcelProperty(value = "收支类型")
private String transType;
/**
* 对方户名
*/
@ExcelProperty(value = "对方户名")
private String counterpart;
/**
* 收入金额
*/
@ExcelProperty(value = "收入金额")
private BigDecimal incomeAmount;
/**
* 支出金额
*/
@ExcelProperty(value = "支出金额")
private BigDecimal expenseAmount;
/**
* 余额
*/
@ExcelProperty(value = "余额")
private BigDecimal balanceAmount;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,67 @@
package com.klp.domain.vo;
import java.math.BigDecimal;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 订单盈亏视图对象 wms_order_profit
*
* @author klp
* @date 2025-08-13
*/
@Data
@ExcelIgnoreUnannotated
public class WmsOrderProfitVo {
private static final long serialVersionUID = 1L;
/**
* 盈亏ID主键
*/
@ExcelProperty(value = "盈亏ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "主=键")
private Long profitId;
/**
* 订单ID
*/
@ExcelProperty(value = "订单ID")
private Long orderId;
/**
* 成本金额
*/
@ExcelProperty(value = "成本金额")
private BigDecimal costAmount;
/**
* 收入金额
*/
@ExcelProperty(value = "收入金额")
private BigDecimal revenueAmount;
/**
* 利润金额
*/
@ExcelProperty(value = "利润金额")
private BigDecimal profitAmount;
/**
* 利润率(%)
*/
@ExcelProperty(value = "利润率(%)")
private BigDecimal profitRate;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,88 @@
package com.klp.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 应付款管理(宽松版)视图对象 wms_payable
*
* @author klp
* @date 2025-08-13
*/
@Data
@ExcelIgnoreUnannotated
public class WmsPayableVo {
private static final long serialVersionUID = 1L;
/**
* 应付ID主键
*/
@ExcelProperty(value = "应付ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "主=键")
private Long payableId;
/**
* 供应商ID
*/
@ExcelProperty(value = "供应商ID")
private Long supplierId;
/**
* 订单ID
*/
@ExcelProperty(value = "订单ID")
private Long orderId;
/**
* 到期日
*/
@ExcelProperty(value = "到期日")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date dueDate;
/**
* 应付金额(可为负数用于调整)
*/
@ExcelProperty(value = "应付金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "可=为负数用于调整")
private BigDecimal amount;
/**
* 已付金额(可为负数用于冲销)
*/
@ExcelProperty(value = "已付金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "可=为负数用于冲销")
private BigDecimal paidAmount;
/**
* 未付金额
*/
@ExcelProperty(value = "未付金额")
private BigDecimal balanceAmount;
/**
* 状态
*/
@ExcelProperty(value = "状态")
private String status;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 供应商名称
*/
@ExcelProperty(value = "供应商名称")
private String supplierName;
}

View File

@@ -0,0 +1,88 @@
package com.klp.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 应收款管理(宽松版)视图对象 wms_receivable
*
* @author klp
* @date 2025-08-13
*/
@Data
@ExcelIgnoreUnannotated
public class WmsReceivableVo {
private static final long serialVersionUID = 1L;
/**
* 应收ID主键
*/
@ExcelProperty(value = "应收ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "主=键")
private Long receivableId;
/**
* 客户ID
*/
@ExcelProperty(value = "客户ID")
private Long customerId;
/**
* 订单ID
*/
@ExcelProperty(value = "订单ID")
private Long orderId;
/**
* 到期日
*/
@ExcelProperty(value = "到期日")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date dueDate;
/**
* 应收金额(可为负数用于调整)
*/
@ExcelProperty(value = "应收金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "可=为负数用于调整")
private BigDecimal amount;
/**
* 已收金额(可为负数用于冲销)
*/
@ExcelProperty(value = "已收金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "可=为负数用于冲销")
private BigDecimal paidAmount;
/**
* 未收金额
*/
@ExcelProperty(value = "未收金额")
private BigDecimal balanceAmount;
/**
* 状态
*/
@ExcelProperty(value = "状态")
private String status;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 客户名称
*/
@ExcelProperty(value = "客户名称")
private String customerName;
}

View File

@@ -0,0 +1,15 @@
package com.klp.mapper;
import com.klp.domain.WmsAccount;
import com.klp.domain.vo.WmsAccountVo;
import com.klp.common.core.mapper.BaseMapperPlus;
/**
* 会计科目Mapper接口
*
* @author klp
* @date 2025-08-13
*/
public interface WmsAccountMapper extends BaseMapperPlus<WmsAccountMapper, WmsAccount, WmsAccountVo> {
}

View File

@@ -0,0 +1,15 @@
package com.klp.mapper;
import com.klp.domain.WmsFinancialDocument;
import com.klp.domain.vo.WmsFinancialDocumentVo;
import com.klp.common.core.mapper.BaseMapperPlus;
/**
* 财务单据Mapper接口
*
* @author klp
* @date 2025-08-13
*/
public interface WmsFinancialDocumentMapper extends BaseMapperPlus<WmsFinancialDocumentMapper, WmsFinancialDocument, WmsFinancialDocumentVo> {
}

View File

@@ -0,0 +1,15 @@
package com.klp.mapper;
import com.klp.domain.WmsJournalEntry;
import com.klp.domain.vo.WmsJournalEntryVo;
import com.klp.common.core.mapper.BaseMapperPlus;
/**
* 日记账凭证宽松版Mapper接口
*
* @author klp
* @date 2025-08-13
*/
public interface WmsJournalEntryMapper extends BaseMapperPlus<WmsJournalEntryMapper, WmsJournalEntry, WmsJournalEntryVo> {
}

View File

@@ -0,0 +1,18 @@
package com.klp.mapper;
import com.klp.domain.WmsJournal;
import com.klp.domain.vo.WmsJournalVo;
import com.klp.common.core.mapper.BaseMapperPlus;
import java.math.BigDecimal;
/**
* 资金日记账Mapper接口
*
* @author klp
* @date 2025-08-13
*/
public interface WmsJournalMapper extends BaseMapperPlus<WmsJournalMapper, WmsJournal, WmsJournalVo> {
BigDecimal getLastBalance();
}

View File

@@ -0,0 +1,15 @@
package com.klp.mapper;
import com.klp.domain.WmsOrderProfit;
import com.klp.domain.vo.WmsOrderProfitVo;
import com.klp.common.core.mapper.BaseMapperPlus;
/**
* 订单盈亏Mapper接口
*
* @author klp
* @date 2025-08-13
*/
public interface WmsOrderProfitMapper extends BaseMapperPlus<WmsOrderProfitMapper, WmsOrderProfit, WmsOrderProfitVo> {
}

View File

@@ -0,0 +1,19 @@
package com.klp.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.klp.domain.WmsPayable;
import com.klp.domain.vo.WmsPayableVo;
import com.klp.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
/**
* 应付款管理宽松版Mapper接口
*
* @author klp
* @date 2025-08-13
*/
public interface WmsPayableMapper extends BaseMapperPlus<WmsPayableMapper, WmsPayable, WmsPayableVo> {
Page<WmsPayableVo> selectVoPagePlus(Page<Object> build, @Param("ew") QueryWrapper<WmsPayable> lqw);
}

View File

@@ -0,0 +1,19 @@
package com.klp.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.klp.domain.WmsReceivable;
import com.klp.domain.vo.WmsReceivableVo;
import com.klp.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
/**
* 应收款管理宽松版Mapper接口
*
* @author klp
* @date 2025-08-13
*/
public interface WmsReceivableMapper extends BaseMapperPlus<WmsReceivableMapper, WmsReceivable, WmsReceivableVo> {
Page<WmsReceivableVo> selectVoPagePlus(Page<Object> build, @Param("ew") QueryWrapper<WmsReceivable> lqw);
}

View File

@@ -0,0 +1,43 @@
package com.klp.service;
import com.klp.domain.WmsAccount;
import com.klp.domain.vo.WmsAccountVo;
import com.klp.domain.bo.WmsAccountBo;
import java.util.Collection;
import java.util.List;
/**
* 会计科目Service接口
*
* @author klp
* @date 2025-08-13
*/
public interface IWmsAccountService {
/**
* 查询会计科目
*/
WmsAccountVo queryById(Long accountId);
/**
* 查询会计科目列表
*/
List<WmsAccountVo> queryList(WmsAccountBo bo);
/**
* 新增会计科目
*/
Boolean insertByBo(WmsAccountBo bo);
/**
* 修改会计科目
*/
Boolean updateByBo(WmsAccountBo bo);
/**
* 校验并批量删除会计科目信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,49 @@
package com.klp.service;
import com.klp.domain.WmsFinancialDocument;
import com.klp.domain.vo.WmsFinancialDocumentVo;
import com.klp.domain.bo.WmsFinancialDocumentBo;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 财务单据Service接口
*
* @author klp
* @date 2025-08-13
*/
public interface IWmsFinancialDocumentService {
/**
* 查询财务单据
*/
WmsFinancialDocumentVo queryById(Long documentId);
/**
* 查询财务单据列表
*/
TableDataInfo<WmsFinancialDocumentVo> queryPageList(WmsFinancialDocumentBo bo, PageQuery pageQuery);
/**
* 查询财务单据列表
*/
List<WmsFinancialDocumentVo> queryList(WmsFinancialDocumentBo bo);
/**
* 新增财务单据
*/
Boolean insertByBo(WmsFinancialDocumentBo bo);
/**
* 修改财务单据
*/
Boolean updateByBo(WmsFinancialDocumentBo bo);
/**
* 校验并批量删除财务单据信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,49 @@
package com.klp.service;
import com.klp.domain.WmsJournalEntry;
import com.klp.domain.vo.WmsJournalEntryVo;
import com.klp.domain.bo.WmsJournalEntryBo;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 日记账凭证宽松版Service接口
*
* @author klp
* @date 2025-08-13
*/
public interface IWmsJournalEntryService {
/**
* 查询日记账凭证(宽松版)
*/
WmsJournalEntryVo queryById(Long entryId);
/**
* 查询日记账凭证(宽松版)列表
*/
TableDataInfo<WmsJournalEntryVo> queryPageList(WmsJournalEntryBo bo, PageQuery pageQuery);
/**
* 查询日记账凭证(宽松版)列表
*/
List<WmsJournalEntryVo> queryList(WmsJournalEntryBo bo);
/**
* 新增日记账凭证(宽松版)
*/
Boolean insertByBo(WmsJournalEntryBo bo);
/**
* 修改日记账凭证(宽松版)
*/
Boolean updateByBo(WmsJournalEntryBo bo);
/**
* 校验并批量删除日记账凭证(宽松版)信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,48 @@
package com.klp.service;
import com.klp.domain.vo.WmsJournalVo;
import com.klp.domain.bo.WmsJournalBo;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 资金日记账Service接口
*
* @author klp
* @date 2025-08-13
*/
public interface IWmsJournalService {
/**
* 查询资金日记账
*/
WmsJournalVo queryById(Long journalId);
/**
* 查询资金日记账列表
*/
TableDataInfo<WmsJournalVo> queryPageList(WmsJournalBo bo, PageQuery pageQuery);
/**
* 查询资金日记账列表
*/
List<WmsJournalVo> queryList(WmsJournalBo bo);
/**
* 新增资金日记账
*/
Boolean insertByBo(WmsJournalBo bo);
/**
* 修改资金日记账
*/
Boolean updateByBo(WmsJournalBo bo);
/**
* 校验并批量删除资金日记账信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,49 @@
package com.klp.service;
import com.klp.domain.WmsOrderProfit;
import com.klp.domain.vo.WmsOrderProfitVo;
import com.klp.domain.bo.WmsOrderProfitBo;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 订单盈亏Service接口
*
* @author klp
* @date 2025-08-13
*/
public interface IWmsOrderProfitService {
/**
* 查询订单盈亏
*/
WmsOrderProfitVo queryById(Long profitId);
/**
* 查询订单盈亏列表
*/
TableDataInfo<WmsOrderProfitVo> queryPageList(WmsOrderProfitBo bo, PageQuery pageQuery);
/**
* 查询订单盈亏列表
*/
List<WmsOrderProfitVo> queryList(WmsOrderProfitBo bo);
/**
* 新增订单盈亏
*/
Boolean insertByBo(WmsOrderProfitBo bo);
/**
* 修改订单盈亏
*/
Boolean updateByBo(WmsOrderProfitBo bo);
/**
* 校验并批量删除订单盈亏信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,49 @@
package com.klp.service;
import com.klp.domain.WmsPayable;
import com.klp.domain.vo.WmsPayableVo;
import com.klp.domain.bo.WmsPayableBo;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 应付款管理宽松版Service接口
*
* @author klp
* @date 2025-08-13
*/
public interface IWmsPayableService {
/**
* 查询应付款管理(宽松版)
*/
WmsPayableVo queryById(Long payableId);
/**
* 查询应付款管理(宽松版)列表
*/
TableDataInfo<WmsPayableVo> queryPageList(WmsPayableBo bo, PageQuery pageQuery);
/**
* 查询应付款管理(宽松版)列表
*/
List<WmsPayableVo> queryList(WmsPayableBo bo);
/**
* 新增应付款管理(宽松版)
*/
Boolean insertByBo(WmsPayableBo bo);
/**
* 修改应付款管理(宽松版)
*/
Boolean updateByBo(WmsPayableBo bo);
/**
* 校验并批量删除应付款管理(宽松版)信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,49 @@
package com.klp.service;
import com.klp.domain.WmsReceivable;
import com.klp.domain.vo.WmsReceivableVo;
import com.klp.domain.bo.WmsReceivableBo;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 应收款管理宽松版Service接口
*
* @author klp
* @date 2025-08-13
*/
public interface IWmsReceivableService {
/**
* 查询应收款管理(宽松版)
*/
WmsReceivableVo queryById(Long receivableId);
/**
* 查询应收款管理(宽松版)列表
*/
TableDataInfo<WmsReceivableVo> queryPageList(WmsReceivableBo bo, PageQuery pageQuery);
/**
* 查询应收款管理(宽松版)列表
*/
List<WmsReceivableVo> queryList(WmsReceivableBo bo);
/**
* 新增应收款管理(宽松版)
*/
Boolean insertByBo(WmsReceivableBo bo);
/**
* 修改应收款管理(宽松版)
*/
Boolean updateByBo(WmsReceivableBo bo);
/**
* 校验并批量删除应收款管理(宽松版)信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,101 @@
package com.klp.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsAccountBo;
import com.klp.domain.vo.WmsAccountVo;
import com.klp.domain.WmsAccount;
import com.klp.mapper.WmsAccountMapper;
import com.klp.service.IWmsAccountService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 会计科目Service业务层处理
*
* @author klp
* @date 2025-08-13
*/
@RequiredArgsConstructor
@Service
public class WmsAccountServiceImpl implements IWmsAccountService {
private final WmsAccountMapper baseMapper;
/**
* 查询会计科目
*/
@Override
public WmsAccountVo queryById(Long accountId){
return baseMapper.selectVoById(accountId);
}
/**
* 查询会计科目列表
*/
@Override
public List<WmsAccountVo> queryList(WmsAccountBo bo) {
LambdaQueryWrapper<WmsAccount> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<WmsAccount> buildQueryWrapper(WmsAccountBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WmsAccount> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getAccountCode()), WmsAccount::getAccountCode, bo.getAccountCode());
lqw.like(StringUtils.isNotBlank(bo.getAccountName()), WmsAccount::getAccountName, bo.getAccountName());
lqw.eq(StringUtils.isNotBlank(bo.getAccountType()), WmsAccount::getAccountType, bo.getAccountType());
lqw.eq(bo.getParentId() != null, WmsAccount::getParentId, bo.getParentId());
lqw.eq(bo.getBalance() != null, WmsAccount::getBalance, bo.getBalance());
return lqw;
}
/**
* 新增会计科目
*/
@Override
public Boolean insertByBo(WmsAccountBo bo) {
WmsAccount add = BeanUtil.toBean(bo, WmsAccount.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setAccountId(add.getAccountId());
}
return flag;
}
/**
* 修改会计科目
*/
@Override
public Boolean updateByBo(WmsAccountBo bo) {
WmsAccount update = BeanUtil.toBean(bo, WmsAccount.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WmsAccount entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除会计科目
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@@ -0,0 +1,114 @@
package com.klp.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsFinancialDocumentBo;
import com.klp.domain.vo.WmsFinancialDocumentVo;
import com.klp.domain.WmsFinancialDocument;
import com.klp.mapper.WmsFinancialDocumentMapper;
import com.klp.service.IWmsFinancialDocumentService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 财务单据Service业务层处理
*
* @author klp
* @date 2025-08-13
*/
@RequiredArgsConstructor
@Service
public class WmsFinancialDocumentServiceImpl implements IWmsFinancialDocumentService {
private final WmsFinancialDocumentMapper baseMapper;
/**
* 查询财务单据
*/
@Override
public WmsFinancialDocumentVo queryById(Long documentId){
return baseMapper.selectVoById(documentId);
}
/**
* 查询财务单据列表
*/
@Override
public TableDataInfo<WmsFinancialDocumentVo> queryPageList(WmsFinancialDocumentBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<WmsFinancialDocument> lqw = buildQueryWrapper(bo);
Page<WmsFinancialDocumentVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询财务单据列表
*/
@Override
public List<WmsFinancialDocumentVo> queryList(WmsFinancialDocumentBo bo) {
LambdaQueryWrapper<WmsFinancialDocument> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<WmsFinancialDocument> buildQueryWrapper(WmsFinancialDocumentBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WmsFinancialDocument> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getDocNo()), WmsFinancialDocument::getDocNo, bo.getDocNo());
lqw.eq(StringUtils.isNotBlank(bo.getDocType()), WmsFinancialDocument::getDocType, bo.getDocType());
lqw.eq(bo.getDocDate() != null, WmsFinancialDocument::getDocDate, bo.getDocDate());
lqw.eq(bo.getAmount() != null, WmsFinancialDocument::getAmount, bo.getAmount());
lqw.eq(bo.getRelatedOrderId() != null, WmsFinancialDocument::getRelatedOrderId, bo.getRelatedOrderId());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), WmsFinancialDocument::getStatus, bo.getStatus());
return lqw;
}
/**
* 新增财务单据
*/
@Override
public Boolean insertByBo(WmsFinancialDocumentBo bo) {
WmsFinancialDocument add = BeanUtil.toBean(bo, WmsFinancialDocument.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setDocumentId(add.getDocumentId());
}
return flag;
}
/**
* 修改财务单据
*/
@Override
public Boolean updateByBo(WmsFinancialDocumentBo bo) {
WmsFinancialDocument update = BeanUtil.toBean(bo, WmsFinancialDocument.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WmsFinancialDocument entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除财务单据
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@@ -0,0 +1,117 @@
package com.klp.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsJournalEntryBo;
import com.klp.domain.vo.WmsJournalEntryVo;
import com.klp.domain.WmsJournalEntry;
import com.klp.mapper.WmsJournalEntryMapper;
import com.klp.service.IWmsJournalEntryService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 日记账凭证宽松版Service业务层处理
*
* @author klp
* @date 2025-08-13
*/
@RequiredArgsConstructor
@Service
public class WmsJournalEntryServiceImpl implements IWmsJournalEntryService {
private final WmsJournalEntryMapper baseMapper;
/**
* 查询日记账凭证(宽松版)
*/
@Override
public WmsJournalEntryVo queryById(Long entryId){
return baseMapper.selectVoById(entryId);
}
/**
* 查询日记账凭证(宽松版)列表
*/
@Override
public TableDataInfo<WmsJournalEntryVo> queryPageList(WmsJournalEntryBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<WmsJournalEntry> lqw = buildQueryWrapper(bo);
Page<WmsJournalEntryVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询日记账凭证(宽松版)列表
*/
@Override
public List<WmsJournalEntryVo> queryList(WmsJournalEntryBo bo) {
LambdaQueryWrapper<WmsJournalEntry> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<WmsJournalEntry> buildQueryWrapper(WmsJournalEntryBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WmsJournalEntry> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getVoucherNo()), WmsJournalEntry::getVoucherNo, bo.getVoucherNo());
lqw.eq(bo.getLineNo() != null, WmsJournalEntry::getLineNo, bo.getLineNo());
lqw.eq(bo.getEntryDate() != null, WmsJournalEntry::getEntryDate, bo.getEntryDate());
lqw.eq(bo.getAccountId() != null, WmsJournalEntry::getAccountId, bo.getAccountId());
lqw.eq(bo.getDebitAmount() != null, WmsJournalEntry::getDebitAmount, bo.getDebitAmount());
lqw.eq(bo.getCreditAmount() != null, WmsJournalEntry::getCreditAmount, bo.getCreditAmount());
lqw.eq(StringUtils.isNotBlank(bo.getReferenceNo()), WmsJournalEntry::getReferenceNo, bo.getReferenceNo());
lqw.eq(bo.getRelatedOrderId() != null, WmsJournalEntry::getRelatedOrderId, bo.getRelatedOrderId());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), WmsJournalEntry::getStatus, bo.getStatus());
return lqw;
}
/**
* 新增日记账凭证(宽松版)
*/
@Override
public Boolean insertByBo(WmsJournalEntryBo bo) {
WmsJournalEntry add = BeanUtil.toBean(bo, WmsJournalEntry.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setEntryId(add.getEntryId());
}
return flag;
}
/**
* 修改日记账凭证(宽松版)
*/
@Override
public Boolean updateByBo(WmsJournalEntryBo bo) {
WmsJournalEntry update = BeanUtil.toBean(bo, WmsJournalEntry.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WmsJournalEntry entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除日记账凭证(宽松版)
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@@ -0,0 +1,132 @@
package com.klp.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsJournalBo;
import com.klp.domain.vo.WmsJournalVo;
import com.klp.domain.WmsJournal;
import com.klp.mapper.WmsJournalMapper;
import com.klp.service.IWmsJournalService;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.Optional;
/**
* 资金日记账Service业务层处理
*
* @author klp
* @date 2025-08-13
*/
@RequiredArgsConstructor
@Service
public class WmsJournalServiceImpl implements IWmsJournalService {
private final WmsJournalMapper baseMapper;
/**
* 查询资金日记账
*/
@Override
public WmsJournalVo queryById(Long journalId){
return baseMapper.selectVoById(journalId);
}
/**
* 查询资金日记账列表
*/
@Override
public TableDataInfo<WmsJournalVo> queryPageList(WmsJournalBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<WmsJournal> lqw = buildQueryWrapper(bo);
Page<WmsJournalVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询资金日记账列表
*/
@Override
public List<WmsJournalVo> queryList(WmsJournalBo bo) {
LambdaQueryWrapper<WmsJournal> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<WmsJournal> buildQueryWrapper(WmsJournalBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WmsJournal> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getJournalDate() != null, WmsJournal::getJournalDate, bo.getJournalDate());
lqw.eq(StringUtils.isNotBlank(bo.getSummary()), WmsJournal::getSummary, bo.getSummary());
lqw.eq(StringUtils.isNotBlank(bo.getTransType()), WmsJournal::getTransType, bo.getTransType());
lqw.eq(StringUtils.isNotBlank(bo.getCounterpart()), WmsJournal::getCounterpart, bo.getCounterpart());
lqw.eq(bo.getIncomeAmount() != null, WmsJournal::getIncomeAmount, bo.getIncomeAmount());
lqw.eq(bo.getExpenseAmount() != null, WmsJournal::getExpenseAmount, bo.getExpenseAmount());
lqw.eq(bo.getBalanceAmount() != null, WmsJournal::getBalanceAmount, bo.getBalanceAmount());
return lqw;
}
/**
* 新增资金日记账
*/
@Override
public Boolean insertByBo(WmsJournalBo bo) {
WmsJournal journal = BeanUtil.toBean(bo, WmsJournal.class);
validEntityBeforeSave(journal);
// 计算新的余额
BigDecimal lastBalance = baseMapper.getLastBalance();
if (lastBalance == null) {
lastBalance = BigDecimal.ZERO;
}
BigDecimal newBalance = lastBalance
.add(Optional.ofNullable(journal.getIncomeAmount()).orElse(BigDecimal.ZERO))
.subtract(Optional.ofNullable(journal.getExpenseAmount()).orElse(BigDecimal.ZERO));
journal.setBalanceAmount(newBalance);
boolean flag = baseMapper.insert(journal) > 0;
if (flag) {
bo.setJournalId(journal.getJournalId());
}
return flag;
}
public void addJournal(WmsJournal journal) {
baseMapper.insert(journal);
}
/**
* 修改资金日记账
*/
@Override
public Boolean updateByBo(WmsJournalBo bo) {
WmsJournal update = BeanUtil.toBean(bo, WmsJournal.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WmsJournal entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除资金日记账
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@@ -0,0 +1,112 @@
package com.klp.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsOrderProfitBo;
import com.klp.domain.vo.WmsOrderProfitVo;
import com.klp.domain.WmsOrderProfit;
import com.klp.mapper.WmsOrderProfitMapper;
import com.klp.service.IWmsOrderProfitService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 订单盈亏Service业务层处理
*
* @author klp
* @date 2025-08-13
*/
@RequiredArgsConstructor
@Service
public class WmsOrderProfitServiceImpl implements IWmsOrderProfitService {
private final WmsOrderProfitMapper baseMapper;
/**
* 查询订单盈亏
*/
@Override
public WmsOrderProfitVo queryById(Long profitId){
return baseMapper.selectVoById(profitId);
}
/**
* 查询订单盈亏列表
*/
@Override
public TableDataInfo<WmsOrderProfitVo> queryPageList(WmsOrderProfitBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<WmsOrderProfit> lqw = buildQueryWrapper(bo);
Page<WmsOrderProfitVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询订单盈亏列表
*/
@Override
public List<WmsOrderProfitVo> queryList(WmsOrderProfitBo bo) {
LambdaQueryWrapper<WmsOrderProfit> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<WmsOrderProfit> buildQueryWrapper(WmsOrderProfitBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WmsOrderProfit> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getOrderId() != null, WmsOrderProfit::getOrderId, bo.getOrderId());
lqw.eq(bo.getCostAmount() != null, WmsOrderProfit::getCostAmount, bo.getCostAmount());
lqw.eq(bo.getRevenueAmount() != null, WmsOrderProfit::getRevenueAmount, bo.getRevenueAmount());
lqw.eq(bo.getProfitAmount() != null, WmsOrderProfit::getProfitAmount, bo.getProfitAmount());
lqw.eq(bo.getProfitRate() != null, WmsOrderProfit::getProfitRate, bo.getProfitRate());
return lqw;
}
/**
* 新增订单盈亏
*/
@Override
public Boolean insertByBo(WmsOrderProfitBo bo) {
WmsOrderProfit add = BeanUtil.toBean(bo, WmsOrderProfit.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setProfitId(add.getProfitId());
}
return flag;
}
/**
* 修改订单盈亏
*/
@Override
public Boolean updateByBo(WmsOrderProfitBo bo) {
WmsOrderProfit update = BeanUtil.toBean(bo, WmsOrderProfit.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WmsOrderProfit entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除订单盈亏
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@@ -0,0 +1,127 @@
package com.klp.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsPayableBo;
import com.klp.domain.vo.WmsPayableVo;
import com.klp.domain.WmsPayable;
import com.klp.mapper.WmsPayableMapper;
import com.klp.service.IWmsPayableService;
import java.util.List;
import java.util.Collection;
/**
* 应付款管理宽松版Service业务层处理
*
* @author klp
* @date 2025-08-13
*/
@RequiredArgsConstructor
@Service
public class WmsPayableServiceImpl implements IWmsPayableService {
private final WmsPayableMapper baseMapper;
/**
* 查询应付款管理(宽松版)
*/
@Override
public WmsPayableVo queryById(Long payableId){
return baseMapper.selectVoById(payableId);
}
/**
* 查询应付款管理(宽松版)列表
*/
@Override
public TableDataInfo<WmsPayableVo> queryPageList(WmsPayableBo bo, PageQuery pageQuery) {
QueryWrapper<WmsPayable> lqw = buildQueryWrapperPlus(bo);
Page<WmsPayableVo> result = baseMapper.selectVoPagePlus(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
private QueryWrapper<WmsPayable> buildQueryWrapperPlus(WmsPayableBo bo) {
QueryWrapper<WmsPayable> lqw = Wrappers.query();
lqw.eq("p.del_flag", 0);
lqw.eq(bo.getSupplierId() != null, "p.supplier_id", bo.getSupplierId());
lqw.eq(bo.getOrderId() != null, "p.order_id", bo.getOrderId());
lqw.eq(bo.getDueDate() != null, "p.due_date", bo.getDueDate());
lqw.eq(bo.getAmount() != null, "p.amount", bo.getAmount());
lqw.eq(bo.getPaidAmount() != null, "p.paid_amount", bo.getPaidAmount());
lqw.eq(bo.getBalanceAmount() != null, "p.balance_amount", bo.getBalanceAmount());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), "p.status", bo.getStatus());
return lqw;
}
/**
* 查询应付款管理(宽松版)列表
*/
@Override
public List<WmsPayableVo> queryList(WmsPayableBo bo) {
LambdaQueryWrapper<WmsPayable> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<WmsPayable> buildQueryWrapper(WmsPayableBo bo) {
LambdaQueryWrapper<WmsPayable> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getOrderId() != null, WmsPayable::getOrderId, bo.getOrderId());
lqw.eq(bo.getDueDate() != null, WmsPayable::getDueDate, bo.getDueDate());
lqw.eq(bo.getSupplierId() != null, WmsPayable::getSupplierId, bo.getSupplierId());
lqw.eq(bo.getAmount() != null, WmsPayable::getAmount, bo.getAmount());
lqw.eq(bo.getBalanceAmount() != null, WmsPayable::getBalanceAmount, bo.getBalanceAmount());
lqw.eq(bo.getPaidAmount() != null, WmsPayable::getPaidAmount, bo.getPaidAmount());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), WmsPayable::getStatus, bo.getStatus());
return lqw;
}
/**
* 新增应付款管理(宽松版)
*/
@Override
public Boolean insertByBo(WmsPayableBo bo) {
WmsPayable add = BeanUtil.toBean(bo, WmsPayable.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setPayableId(add.getPayableId());
}
return flag;
}
/**
* 修改应付款管理(宽松版)
*/
@Override
public Boolean updateByBo(WmsPayableBo bo) {
WmsPayable update = BeanUtil.toBean(bo, WmsPayable.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WmsPayable entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除应付款管理(宽松版)
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@@ -0,0 +1,129 @@
package com.klp.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsReceivableBo;
import com.klp.domain.vo.WmsReceivableVo;
import com.klp.domain.WmsReceivable;
import com.klp.mapper.WmsReceivableMapper;
import com.klp.service.IWmsReceivableService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 应收款管理宽松版Service业务层处理
*
* @author klp
* @date 2025-08-13
*/
@RequiredArgsConstructor
@Service
public class WmsReceivableServiceImpl implements IWmsReceivableService {
private final WmsReceivableMapper baseMapper;
/**
* 查询应收款管理(宽松版)
*/
@Override
public WmsReceivableVo queryById(Long receivableId){
return baseMapper.selectVoById(receivableId);
}
/**
* 查询应收款管理(宽松版)列表
*/
@Override
public TableDataInfo<WmsReceivableVo> queryPageList(WmsReceivableBo bo, PageQuery pageQuery) {
QueryWrapper<WmsReceivable> lqw = buildQueryWrapperPlus(bo);
Page<WmsReceivableVo> result = baseMapper.selectVoPagePlus(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
private QueryWrapper<WmsReceivable> buildQueryWrapperPlus(WmsReceivableBo bo) {
QueryWrapper<WmsReceivable> lqw = Wrappers.query();
lqw.eq("r.del_flag", 0);
lqw.eq(bo.getCustomerId() != null, "r.customer_id", bo.getCustomerId());
lqw.eq(bo.getOrderId() != null, "r.order_id", bo.getOrderId());
lqw.eq(bo.getDueDate() != null, "r.due_date", bo.getDueDate());
lqw.eq(bo.getAmount() != null, "r.amount", bo.getAmount());
lqw.eq(bo.getPaidAmount() != null, "r.paid_amount", bo.getPaidAmount());
lqw.eq(bo.getBalanceAmount() != null, "r.balance_amount", bo.getBalanceAmount());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), "r.status", bo.getStatus());
return lqw;
}
/**
* 查询应收款管理(宽松版)列表
*/
@Override
public List<WmsReceivableVo> queryList(WmsReceivableBo bo) {
LambdaQueryWrapper<WmsReceivable> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<WmsReceivable> buildQueryWrapper(WmsReceivableBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WmsReceivable> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getCustomerId() != null, WmsReceivable::getCustomerId, bo.getCustomerId());
lqw.eq(bo.getOrderId() != null, WmsReceivable::getOrderId, bo.getOrderId());
lqw.eq(bo.getDueDate() != null, WmsReceivable::getDueDate, bo.getDueDate());
lqw.eq(bo.getAmount() != null, WmsReceivable::getAmount, bo.getAmount());
lqw.eq(bo.getPaidAmount() != null, WmsReceivable::getPaidAmount, bo.getPaidAmount());
lqw.eq(bo.getBalanceAmount() != null, WmsReceivable::getBalanceAmount, bo.getBalanceAmount());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), WmsReceivable::getStatus, bo.getStatus());
return lqw;
}
/**
* 新增应收款管理(宽松版)
*/
@Override
public Boolean insertByBo(WmsReceivableBo bo) {
WmsReceivable add = BeanUtil.toBean(bo, WmsReceivable.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setReceivableId(add.getReceivableId());
}
return flag;
}
/**
* 修改应收款管理(宽松版)
*/
@Override
public Boolean updateByBo(WmsReceivableBo bo) {
WmsReceivable update = BeanUtil.toBean(bo, WmsReceivable.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WmsReceivable entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除应收款管理(宽松版)
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@@ -0,0 +1,23 @@
<?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.klp.mapper.WmsAccountMapper">
<resultMap type="com.klp.domain.WmsAccount" id="WmsAccountResult">
<result property="accountId" column="account_id"/>
<result property="accountCode" column="account_code"/>
<result property="accountName" column="account_name"/>
<result property="accountType" column="account_type"/>
<result property="parentId" column="parent_id"/>
<result property="balance" column="balance"/>
<result property="delFlag" column="del_flag"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
</resultMap>
</mapper>

View File

@@ -0,0 +1,24 @@
<?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.klp.mapper.WmsFinancialDocumentMapper">
<resultMap type="com.klp.domain.WmsFinancialDocument" id="WmsFinancialDocumentResult">
<result property="documentId" column="document_id"/>
<result property="docNo" column="doc_no"/>
<result property="docType" column="doc_type"/>
<result property="docDate" column="doc_date"/>
<result property="amount" column="amount"/>
<result property="relatedOrderId" column="related_order_id"/>
<result property="status" column="status"/>
<result property="delFlag" column="del_flag"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
</resultMap>
</mapper>

View File

@@ -0,0 +1,27 @@
<?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.klp.mapper.WmsJournalEntryMapper">
<resultMap type="com.klp.domain.WmsJournalEntry" id="WmsJournalEntryResult">
<result property="entryId" column="entry_id"/>
<result property="voucherNo" column="voucher_no"/>
<result property="lineNo" column="line_no"/>
<result property="entryDate" column="entry_date"/>
<result property="accountId" column="account_id"/>
<result property="debitAmount" column="debit_amount"/>
<result property="creditAmount" column="credit_amount"/>
<result property="referenceNo" column="reference_no"/>
<result property="relatedOrderId" column="related_order_id"/>
<result property="status" column="status"/>
<result property="delFlag" column="del_flag"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
</resultMap>
</mapper>

View File

@@ -0,0 +1,32 @@
<?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.klp.mapper.WmsJournalMapper">
<resultMap type="com.klp.domain.WmsJournal" id="WmsJournalResult">
<result property="journalId" column="journal_id"/>
<result property="journalDate" column="journal_date"/>
<result property="summary" column="summary"/>
<result property="transType" column="trans_type"/>
<result property="counterpart" column="counterpart"/>
<result property="incomeAmount" column="income_amount"/>
<result property="expenseAmount" column="expense_amount"/>
<result property="balanceAmount" column="balance_amount"/>
<result property="remark" column="remark"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
</resultMap>
<select id="getLastBalance" resultType="java.math.BigDecimal">
SELECT balance_amount
FROM wms_journal
WHERE del_flag = 0
ORDER BY create_time DESC
LIMIT 1
</select>
</mapper>

View File

@@ -0,0 +1,23 @@
<?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.klp.mapper.WmsOrderProfitMapper">
<resultMap type="com.klp.domain.WmsOrderProfit" id="WmsOrderProfitResult">
<result property="profitId" column="profit_id"/>
<result property="orderId" column="order_id"/>
<result property="costAmount" column="cost_amount"/>
<result property="revenueAmount" column="revenue_amount"/>
<result property="profitAmount" column="profit_amount"/>
<result property="profitRate" column="profit_rate"/>
<result property="delFlag" column="del_flag"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
</resultMap>
</mapper>

View File

@@ -0,0 +1,45 @@
<?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.klp.mapper.WmsPayableMapper">
<resultMap type="com.klp.domain.WmsPayable" id="WmsPayableResult">
<result property="payableId" column="payable_id"/>
<result property="supplierId" column="supplier_id"/>
<result property="orderId" column="order_id"/>
<result property="dueDate" column="due_date"/>
<result property="amount" column="amount"/>
<result property="paidAmount" column="paid_amount"/>
<result property="balanceAmount" column="balance_amount"/>
<result property="status" column="status"/>
<result property="delFlag" column="del_flag"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
</resultMap>
<select id="selectVoPagePlus" resultType="com.klp.domain.vo.WmsPayableVo">
select p.payable_id,
p.supplier_id,
s.name as supplierName,
p.order_id,
p.due_date,
p.amount,
p.paid_amount,
p.balance_amount,
p.status,
p.del_flag,
p.remark,
p.create_time,
p.create_by,
p.update_time,
p.update_by
from wms_payable p
left join wms_supplier s on p.supplier_id = s.supplier_id
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,46 @@
<?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.klp.mapper.WmsReceivableMapper">
<resultMap type="com.klp.domain.WmsReceivable" id="WmsReceivableResult">
<result property="receivableId" column="receivable_id"/>
<result property="customerId" column="customer_id"/>
<result property="orderId" column="order_id"/>
<result property="dueDate" column="due_date"/>
<result property="amount" column="amount"/>
<result property="paidAmount" column="paid_amount"/>
<result property="balanceAmount" column="balance_amount"/>
<result property="status" column="status"/>
<result property="delFlag" column="del_flag"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
</resultMap>
<select id="selectVoPagePlus" resultType="com.klp.domain.vo.WmsReceivableVo">
select r.receivable_id,
r.customer_id,
r.order_id,
r.due_date,
r.amount,
r.paid_amount,
r.balance_amount,
r.status,
r.del_flag,
r.remark,
r.create_time,
r.create_by,
r.update_time,
r.update_by,
c.name as customerName
from wms_receivable r
left join wms_customer c on r.customer_id = c.customer_id
${ew.customSqlSegment}
</select>
</mapper>