修改入库相关接口
main
zxf 3 weeks ago
parent d6c38b9707
commit f71a108641

@ -61,3 +61,20 @@ export function ckbillListApi(params) {
})
}
export function putBill(data) {
return request({
url: 'autogencode/ckbill/putBill',
method: 'post',
data: data
})
}
// 分页查询出入库单据列表(全部
export function stockPageListCkbill(query) {
return request({
url: 'autogencode/ckbill/stockPageList',
method: 'get',
params: query
})
}

@ -61,3 +61,18 @@ export function ckbillcargoListApi(params) {
})
}
export function recallPutBill(id) {
return request({
url: 'autogencode/ckbillcargo/recallPutBill/' + id,
method: 'get'
})
}
export function confirmPutBill(id) {
return request({
url: 'autogencode/ckbillcargo/confirmPutBill/' + id,
method: 'get'
})
}

@ -0,0 +1,63 @@
import request from '@/utils/request'
/**
* 新增ckbillstock
* @param pram
*/
export function ckbillstockCreateApi(data) {
return request({
url: `autogencode/ckbillstock/save`,
method: 'POST',
data
})
}
/**
* ckbillstock更新
* @param pram
*/
export function ckbillstockUpdateApi(data) {
return request({
url: `autogencode/ckbillstock/update`,
method: 'POST',
data
})
}
/**
* ckbillstock详情
* @param pram
*/
export function ckbillstockDetailApi(id) {
return request({
url: `autogencode/ckbillstock/info/${id}`,
method: 'GET'
})
}
/**
* ckbillstock批量删除
* @param ids
*/
export function ckbillstockDeleteApi(ids) {
return request({
url: `autogencode/ckbillstock/delete`,
method: 'POST',
data: ids
})
}
/**
* ckbillstock列表
* @param pram
*/
export function ckbillstockListApi(params) {
return request({
url: `autogencode/ckbillstock/list`,
method: 'GET',
params
})
}

@ -0,0 +1,63 @@
import request from '@/utils/request'
/**
* 新增ckstockchange
* @param pram
*/
export function ckstockchangeCreateApi(data) {
return request({
url: `autogencode/ckstockchange/save`,
method: 'POST',
data
})
}
/**
* ckstockchange更新
* @param pram
*/
export function ckstockchangeUpdateApi(data) {
return request({
url: `autogencode/ckstockchange/update`,
method: 'POST',
data
})
}
/**
* ckstockchange详情
* @param pram
*/
export function ckstockchangeDetailApi(id) {
return request({
url: `autogencode/ckstockchange/info/${id}`,
method: 'GET'
})
}
/**
* ckstockchange批量删除
* @param ids
*/
export function ckstockchangeDeleteApi(ids) {
return request({
url: `autogencode/ckstockchange/delete`,
method: 'POST',
data: ids
})
}
/**
* ckstockchange列表
* @param pram
*/
export function ckstockchangeListApi(params) {
return request({
url: `autogencode/ckstockchange/list`,
method: 'GET',
params
})
}

@ -61,3 +61,16 @@ export function cmwarehouseListApi(params) {
})
}
/**
* cmwarehouse列表
* @param pram
*/
export function listWarehouse(params) {
return request({
url: `autogencode/cmwarehouse/listByAll`,
method: 'GET',
params
})
}

@ -0,0 +1,135 @@
<template>
<!-- 基于 Element UI 新增和修改弹窗 -->
<el-dialog
:title="!dataForm.id ? '添加' : '修改'"
:close-on-click-modal="false"
:visible.sync="visible">
<!-- 新增和修改表单 -->
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataSubmit()" label-width="80px">
<el-form-item label="ck_bill_cargo表主键" prop="billCargoId">
<el-input v-model="dataForm.billCargoId" placeholder="ck_bill_cargo表主键"></el-input>
</el-form-item>
<el-form-item label="出入库类型" prop="inoutType">
<el-input v-model="dataForm.inoutType" placeholder="出入库类型"></el-input>
</el-form-item>
<el-form-item label="库场ID" prop="stockId">
<el-input v-model="dataForm.stockId" placeholder="库场ID"></el-input>
</el-form-item>
<el-form-item label="库场代码" prop="stockCode">
<el-input v-model="dataForm.stockCode" placeholder="库场代码"></el-input>
</el-form-item>
<el-form-item label="库场名称" prop="stockName">
<el-input v-model="dataForm.stockName" placeholder="库场名称"></el-input>
</el-form-item>
<el-form-item label="单据编号" prop="billNumber">
<el-input v-model="dataForm.billNumber" placeholder="单据编号"></el-input>
</el-form-item>
<el-form-item label="货物价值" prop="cargoValue">
<el-input v-model="dataForm.cargoValue" placeholder="货物价值"></el-input>
</el-form-item>
<el-form-item label="货物件数" prop="cargoNum">
<el-input v-model="dataForm.cargoNum" placeholder="货物件数"></el-input>
</el-form-item>
<el-form-item label="货物重量" prop="cargoWt">
<el-input v-model="dataForm.cargoWt" placeholder="货物重量"></el-input>
</el-form-item>
<el-form-item label="货物体积" prop="cargoVol">
<el-input v-model="dataForm.cargoVol" placeholder="货物体积"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="dataSubmit()"></el-button>
</span>
</el-dialog>
</template>
<script>
import * as api from '@/api/ckbillstock.js'
export default {
data () {
return {
visible: false,
dataForm: {
id: 0,
billCargoId: '' ,
inoutType: '' ,
stockId: '' ,
stockCode: '' ,
stockName: '' ,
billNumber: '' ,
cargoValue: '' ,
cargoNum: '' ,
cargoWt: '' ,
cargoVol: '' ,
},
dataRule: {
billCargoId: [
{ required: true, message: 'ck_bill_cargo表主键 为必填项', trigger: 'blur' }
],
inoutType: [
{ required: true, message: '出入库类型 为必填项', trigger: 'blur' }
],
stockId: [
{ required: true, message: '库场ID 为必填项', trigger: 'blur' }
],
stockCode: [
{ required: true, message: '库场代码 为必填项', trigger: 'blur' }
],
stockName: [
{ required: true, message: '库场名称 为必填项', trigger: 'blur' }
],
billNumber: [
{ required: true, message: '单据编号 为必填项', trigger: 'blur' }
],
cargoValue: [
{ required: true, message: '货物价值 为必填项', trigger: 'blur' }
],
cargoNum: [
{ required: true, message: '货物件数 为必填项', trigger: 'blur' }
],
cargoWt: [
{ required: true, message: '货物重量 为必填项', trigger: 'blur' }
],
cargoVol: [
{ required: true, message: '货物体积 为必填项', trigger: 'blur' }
],
}
}
},
methods: {
init (id) { //
this.dataForm.id = id || 0
this.visible = true
this.$nextTick(function() {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
api.ckbillstockDetailApi(id).then(function(res) {
this.dataForm = res;
}.bind(this))
}
}.bind(this))
},
//
dataSubmit () {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
if (this.dataForm.id) {
api.ckbillstockUpdateApi(this.dataForm).then(function(res) {
this.$message.success('保存成功')
this.visible = false
this.$emit('refreshDataList')
}.bind(this));
} else {
api.ckbillstockCreateApi(this.dataForm).then(function(res) {
this.$message.success('新增成功')
this.visible = false
this.$emit('refreshDataList')
}.bind(this));
}
}
})
}
}
}
</script>

@ -0,0 +1,324 @@
<template>
<div class="divBox">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item label="ck_bill_cargo表主键">
<el-input v-model="dataForm.billCargoId" placeholder="请输入ck_bill_cargo表主键" clearable></el-input>
</el-form-item>
<el-form-item label="出入库类型">
<el-input v-model="dataForm.inoutType" placeholder="请输入出入库类型" clearable></el-input>
</el-form-item>
<el-form-item label="库场ID">
<el-input v-model="dataForm.stockId" placeholder="请输入库场ID" clearable></el-input>
</el-form-item>
<el-form-item label="库场代码">
<el-input v-model="dataForm.stockCode" placeholder="请输入库场代码" clearable></el-input>
</el-form-item>
<el-form-item label="库场名称">
<el-input v-model="dataForm.stockName" placeholder="请输入库场名称" clearable></el-input>
</el-form-item>
<el-form-item label="单据编号">
<el-input v-model="dataForm.billNumber" placeholder="请输入单据编号" clearable></el-input>
</el-form-item>
<el-form-item label="货物价值">
<el-input v-model="dataForm.cargoValue" placeholder="请输入货物价值" clearable></el-input>
</el-form-item>
<el-form-item label="货物件数">
<el-input v-model="dataForm.cargoNum" placeholder="请输入货物件数" clearable></el-input>
</el-form-item>
<el-form-item label="货物重量">
<el-input v-model="dataForm.cargoWt" placeholder="请输入货物重量" clearable></el-input>
</el-form-item>
<el-form-item label="货物体积">
<el-input v-model="dataForm.cargoVol" placeholder="请输入货物体积" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()"></el-button>
<el-button @click="resetForm()"></el-button>
<el-button v-hasPermi="['autogencode:ckbillstock:save']" type="primary" @click="addOrUpdateHandle()"></el-button>
<el-button v-hasPermi="['autogencode:ckbillstock:delete']" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0"></el-button>
</el-form-item>
</el-form>
<el-table
:data="dataList"
border
v-loading="dataListLoading"
@selection-change="selectionChangeHandle"
style="width: 100%;">
<el-table-column
type="selection"
header-align="center"
align="center"
width="50">
</el-table-column>
<el-table-column
prop="id"
header-align="center"
align="center"
label="主键">
</el-table-column>
<el-table-column
prop="billCargoId"
header-align="center"
align="center"
label="ck_bill_cargo表主键">
</el-table-column>
<el-table-column
prop="inoutType"
header-align="center"
align="center"
label="出入库类型">
</el-table-column>
<el-table-column
prop="stockId"
header-align="center"
align="center"
label="库场ID">
</el-table-column>
<el-table-column
prop="stockCode"
header-align="center"
align="center"
label="库场代码">
</el-table-column>
<el-table-column
prop="stockName"
header-align="center"
align="center"
label="库场名称">
</el-table-column>
<el-table-column
prop="billNumber"
header-align="center"
align="center"
label="单据编号">
</el-table-column>
<el-table-column
prop="cargoValue"
header-align="center"
align="center"
label="货物价值">
</el-table-column>
<el-table-column
prop="cargoNum"
header-align="center"
align="center"
label="货物件数">
</el-table-column>
<el-table-column
prop="cargoWt"
header-align="center"
align="center"
label="货物重量">
</el-table-column>
<el-table-column
prop="cargoVol"
header-align="center"
align="center"
label="货物体积">
</el-table-column>
<el-table-column
prop="delFlag"
header-align="center"
align="center"
label="删除标志0代表存在 2代表删除">
</el-table-column>
<el-table-column
prop="createDept"
header-align="center"
align="center"
label="创建部门">
</el-table-column>
<el-table-column
prop="createBy"
header-align="center"
align="center"
label="创建人">
</el-table-column>
<el-table-column
prop="createTime"
header-align="center"
align="center"
label="创建时间">
</el-table-column>
<el-table-column
prop="updateBy"
header-align="center"
align="center"
label="修改人">
</el-table-column>
<el-table-column
prop="updateTime"
header-align="center"
align="center"
label="修改时间">
</el-table-column>
<el-table-column
prop="tenantId"
header-align="center"
align="center"
label="">
</el-table-column>
<el-table-column
fixed="right"
header-align="center"
align="center"
width="150"
label="操作">
<template slot-scope="scope">
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ '' }}</el-button>
<el-button v-hasPermi="['autogencode:ckbillstock:delete']" type="text" size="small" @click="deleteHandle(scope.row.id)" style="color: #f56c6c;"></el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[10, 20, 50, 100]"
:page-size="pageSize"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
<!-- 表单弹窗, 新增数据和修改数据 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
</template>
<script>
import AddOrUpdate from './ckbillstock-add-and-update'
import * as api from '@/api/ckbillstock.js'
export default {
data () {
return {
dataForm: {
billCargoId: '',
inoutType: '',
stockId: '',
stockCode: '',
stockName: '',
billNumber: '',
cargoValue: '',
cargoNum: '',
cargoWt: '',
cargoVol: '',
},
dataList: [],
pageIndex: 1,
pageSize: 10,
totalPage: 0,
dataListLoading: false,
dataListSelections: [],
addOrUpdateVisible: false
}
},
components: {
AddOrUpdate
},
activated () {
this.getDataList()
},
mounted() {
//
this.getDataList()
},
methods: {
//
resetForm() {
this.dataForm = {
billCargoId: '',
inoutType: '',
stockId: '',
stockCode: '',
stockName: '',
billNumber: '',
cargoValue: '',
cargoNum: '',
cargoWt: '',
cargoVol: '',
}
this.getDataList()
},
//
getDataList () {
this.dataListLoading = true
// CkBillStockControllerPageParamRequest
const params = {
page: this.pageIndex,
limit: this.pageSize
}
//
if (this.dataForm.billCargoId) params.billCargoId = this.dataForm.billCargoId;
if (this.dataForm.inoutType) params.inoutType = this.dataForm.inoutType;
if (this.dataForm.stockId) params.stockId = this.dataForm.stockId;
if (this.dataForm.stockCode) params.stockCode = this.dataForm.stockCode;
if (this.dataForm.stockName) params.stockName = this.dataForm.stockName;
if (this.dataForm.billNumber) params.billNumber = this.dataForm.billNumber;
if (this.dataForm.cargoValue) params.cargoValue = this.dataForm.cargoValue;
if (this.dataForm.cargoNum) params.cargoNum = this.dataForm.cargoNum;
if (this.dataForm.cargoWt) params.cargoWt = this.dataForm.cargoWt;
if (this.dataForm.cargoVol) params.cargoVol = this.dataForm.cargoVol;
api.ckbillstockListApi(params).then(res => {
this.dataListLoading = false
this.dataList = res.list || [];
this.totalPage = res.total;
}).catch(e => {
this.dataListLoading = false
})
},
//
sizeChangeHandle (val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
//
currentChangeHandle (val) {
this.pageIndex = val
this.getDataList()
},
//
selectionChangeHandle (val) {
this.dataListSelections = val
},
// /
addOrUpdateHandle (id) {
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.init(id)
})
},
//
deleteHandle (id) {
let ids = []
let idText = ''
// id
if (id) {
ids = [id]
idText = id
} else {
//
ids = this.dataListSelections.map(item => {
return item.id
})
idText = ids.join(',')
}
this.$confirm(`确定进行删除操作?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// API
api.ckbillstockDeleteApi(ids).then(res => {
this.$message.success('删除成功')
this.getDataList()
})
})
},
}
}
</script>

@ -258,11 +258,11 @@
</template>
<script>
import { listCargo } from '@/api/cmcustproduct.js'
import { listCust } from "@/api/cmcust";
import { cmcustproductListApi as listCargo } from '@/api/cmcustproduct.js'
import { cmcustListApi as listCust } from "@/api/cmcust";
// import { listStock } from "@/api/jxc/stock";
import { getCkbillInfo, putBill } from '@/api/ckbill';
import { delCkcargo, recallPutBill } from '@/api/ckbillcargo';
import { ckbillDetailApi as getCkbillInfo, putBill } from '@/api/ckbill';
import { ckbillcargoDeleteApi as delCkcargo, recallPutBill } from '@/api/ckbillcargo';
// import { listVessel } from "@/api/jxc/vessel";
import FileUpload from "@/components/FileUploadVO";

@ -129,18 +129,15 @@
import { datePickerOpts } from "@/utils";
import SearchBlock from '@/components/SearchBlock';
import {
pageListCkcargo,
getCkcargo,
delCkcargo,
addCkcargo,
updateCkcargo,
ckbillcargoListApi as pageListCkcargo,
ckbillcargoDeleteApi as delCkcargo,
recallPutBill,
confirmPutBill
} from '@/api/ckbillcargo'
import BillList from '@/views/ck/ckwarehouse/components/BillList';
import BillEdit from '@/views/ck/ckwarehouse/components/BillEdit';
import { listWarehouse } from "@/api/cmwarehouse";
import {delCkbill} from "@/api/ckbill";
import { ckbillListApi as delCkbill} from "@/api/ckbill";
// import { listVessel } from "@/api/jxc/vessel";
export default {

@ -0,0 +1,233 @@
<template>
<!-- 基于 Element UI 新增和修改弹窗 -->
<el-dialog
:title="!dataForm.id ? '添加' : '修改'"
:close-on-click-modal="false"
:visible.sync="visible">
<!-- 新增和修改表单 -->
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataSubmit()" label-width="80px">
<el-form-item label="客户代码" prop="custId">
<el-input v-model="dataForm.custId" placeholder="客户代码"></el-input>
</el-form-item>
<el-form-item label="变动类型" prop="changeType">
<el-input v-model="dataForm.changeType" placeholder="变动类型"></el-input>
</el-form-item>
<el-form-item label="货品ID" prop="cargoId">
<el-input v-model="dataForm.cargoId" placeholder="货品ID"></el-input>
</el-form-item>
<el-form-item label="HS代码" prop="hsCode">
<el-input v-model="dataForm.hsCode" placeholder="HS代码"></el-input>
</el-form-item>
<el-form-item label="货品名称" prop="cargoName">
<el-input v-model="dataForm.cargoName" placeholder="货品名称"></el-input>
</el-form-item>
<el-form-item label="仓库" prop="stockId">
<el-input v-model="dataForm.stockId" placeholder="仓库"></el-input>
</el-form-item>
<el-form-item label="仓库名称" prop="stockName">
<el-input v-model="dataForm.stockName" placeholder="仓库名称"></el-input>
</el-form-item>
<el-form-item label="批号" prop="billNo">
<el-input v-model="dataForm.billNo" placeholder="批号"></el-input>
</el-form-item>
<el-form-item label="变动单号" prop="billId">
<el-input v-model="dataForm.billId" placeholder="变动单号"></el-input>
</el-form-item>
<el-form-item label="库场代码" prop="stockCode">
<el-input v-model="dataForm.stockCode" placeholder="库场代码"></el-input>
</el-form-item>
<el-form-item label="变动数量" prop="changeNum">
<el-input v-model="dataForm.changeNum" placeholder="变动数量"></el-input>
</el-form-item>
<el-form-item label="变动前" prop="beforeNum">
<el-input v-model="dataForm.beforeNum" placeholder="变动前"></el-input>
</el-form-item>
<el-form-item label="变动后" prop="afterNum">
<el-input v-model="dataForm.afterNum" placeholder="变动后"></el-input>
</el-form-item>
<el-form-item label="变动重量" prop="changeWt">
<el-input v-model="dataForm.changeWt" placeholder="变动重量"></el-input>
</el-form-item>
<el-form-item label="变动前" prop="beforeWt">
<el-input v-model="dataForm.beforeWt" placeholder="变动前"></el-input>
</el-form-item>
<el-form-item label="变动后" prop="afterWt">
<el-input v-model="dataForm.afterWt" placeholder="变动后"></el-input>
</el-form-item>
<el-form-item label="变动体积" prop="changeVol">
<el-input v-model="dataForm.changeVol" placeholder="变动体积"></el-input>
</el-form-item>
<el-form-item label="变动前" prop="beforeVol">
<el-input v-model="dataForm.beforeVol" placeholder="变动前"></el-input>
</el-form-item>
<el-form-item label="变动后" prop="afterVol">
<el-input v-model="dataForm.afterVol" placeholder="变动后"></el-input>
</el-form-item>
<el-form-item label="变动价值" prop="changeValue">
<el-input v-model="dataForm.changeValue" placeholder="变动价值"></el-input>
</el-form-item>
<el-form-item label="变动前" prop="beforeValue">
<el-input v-model="dataForm.beforeValue" placeholder="变动前"></el-input>
</el-form-item>
<el-form-item label="变动后" prop="afterValue">
<el-input v-model="dataForm.afterValue" placeholder="变动后"></el-input>
</el-form-item>
<el-form-item label="变动日期" prop="changeDate">
<el-input v-model="dataForm.changeDate" placeholder="变动日期"></el-input>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="dataForm.remark" placeholder="备注"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="dataSubmit()"></el-button>
</span>
</el-dialog>
</template>
<script>
import * as api from '@/api/ckstockchange.js'
export default {
data () {
return {
visible: false,
dataForm: {
id: 0,
custId: '' ,
changeType: '' ,
cargoId: '' ,
hsCode: '' ,
cargoName: '' ,
stockId: '' ,
stockName: '' ,
billNo: '' ,
billId: '' ,
stockCode: '' ,
changeNum: '' ,
beforeNum: '' ,
afterNum: '' ,
changeWt: '' ,
beforeWt: '' ,
afterWt: '' ,
changeVol: '' ,
beforeVol: '' ,
afterVol: '' ,
changeValue: '' ,
beforeValue: '' ,
afterValue: '' ,
changeDate: '' ,
remark: '' ,
},
dataRule: {
custId: [
{ required: true, message: '客户代码 为必填项', trigger: 'blur' }
],
changeType: [
{ required: true, message: '变动类型 为必填项', trigger: 'blur' }
],
cargoId: [
{ required: true, message: '货品ID 为必填项', trigger: 'blur' }
],
hsCode: [
{ required: true, message: 'HS代码 为必填项', trigger: 'blur' }
],
cargoName: [
{ required: true, message: '货品名称 为必填项', trigger: 'blur' }
],
stockId: [
{ required: true, message: '仓库 为必填项', trigger: 'blur' }
],
stockName: [
{ required: true, message: '仓库名称 为必填项', trigger: 'blur' }
],
billNo: [
{ required: true, message: '批号 为必填项', trigger: 'blur' }
],
billId: [
{ required: true, message: '变动单号 为必填项', trigger: 'blur' }
],
stockCode: [
{ required: true, message: '库场代码 为必填项', trigger: 'blur' }
],
changeNum: [
{ required: true, message: '变动数量 为必填项', trigger: 'blur' }
],
beforeNum: [
{ required: true, message: '变动前 为必填项', trigger: 'blur' }
],
afterNum: [
{ required: true, message: '变动后 为必填项', trigger: 'blur' }
],
changeWt: [
{ required: true, message: '变动重量 为必填项', trigger: 'blur' }
],
beforeWt: [
{ required: true, message: '变动前 为必填项', trigger: 'blur' }
],
afterWt: [
{ required: true, message: '变动后 为必填项', trigger: 'blur' }
],
changeVol: [
{ required: true, message: '变动体积 为必填项', trigger: 'blur' }
],
beforeVol: [
{ required: true, message: '变动前 为必填项', trigger: 'blur' }
],
afterVol: [
{ required: true, message: '变动后 为必填项', trigger: 'blur' }
],
changeValue: [
{ required: true, message: '变动价值 为必填项', trigger: 'blur' }
],
beforeValue: [
{ required: true, message: '变动前 为必填项', trigger: 'blur' }
],
afterValue: [
{ required: true, message: '变动后 为必填项', trigger: 'blur' }
],
changeDate: [
{ required: true, message: '变动日期 为必填项', trigger: 'blur' }
],
remark: [
{ required: true, message: '备注 为必填项', trigger: 'blur' }
],
}
}
},
methods: {
init (id) { //
this.dataForm.id = id || 0
this.visible = true
this.$nextTick(function() {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
api.ckstockchangeDetailApi(id).then(function(res) {
this.dataForm = res;
}.bind(this))
}
}.bind(this))
},
//
dataSubmit () {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
if (this.dataForm.id) {
api.ckstockchangeUpdateApi(this.dataForm).then(function(res) {
this.$message.success('保存成功')
this.visible = false
this.$emit('refreshDataList')
}.bind(this));
} else {
api.ckstockchangeCreateApi(this.dataForm).then(function(res) {
this.$message.success('新增成功')
this.visible = false
this.$emit('refreshDataList')
}.bind(this));
}
}
})
}
}
}
</script>

@ -0,0 +1,492 @@
<template>
<div class="divBox">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item label="客户代码">
<el-input v-model="dataForm.custId" placeholder="请输入客户代码" clearable></el-input>
</el-form-item>
<el-form-item label="变动类型">
<el-input v-model="dataForm.changeType" placeholder="请输入变动类型" clearable></el-input>
</el-form-item>
<el-form-item label="货品ID">
<el-input v-model="dataForm.cargoId" placeholder="请输入货品ID" clearable></el-input>
</el-form-item>
<el-form-item label="HS代码">
<el-input v-model="dataForm.hsCode" placeholder="请输入HS代码" clearable></el-input>
</el-form-item>
<el-form-item label="货品名称">
<el-input v-model="dataForm.cargoName" placeholder="请输入货品名称" clearable></el-input>
</el-form-item>
<el-form-item label="仓库">
<el-input v-model="dataForm.stockId" placeholder="请输入仓库" clearable></el-input>
</el-form-item>
<el-form-item label="仓库名称">
<el-input v-model="dataForm.stockName" placeholder="请输入仓库名称" clearable></el-input>
</el-form-item>
<el-form-item label="批号">
<el-input v-model="dataForm.billNo" placeholder="请输入批号" clearable></el-input>
</el-form-item>
<el-form-item label="变动单号">
<el-input v-model="dataForm.billId" placeholder="请输入变动单号" clearable></el-input>
</el-form-item>
<el-form-item label="库场代码">
<el-input v-model="dataForm.stockCode" placeholder="请输入库场代码" clearable></el-input>
</el-form-item>
<el-form-item label="变动数量">
<el-input v-model="dataForm.changeNum" placeholder="请输入变动数量" clearable></el-input>
</el-form-item>
<el-form-item label="变动前">
<el-input v-model="dataForm.beforeNum" placeholder="请输入变动前" clearable></el-input>
</el-form-item>
<el-form-item label="变动后">
<el-input v-model="dataForm.afterNum" placeholder="请输入变动后" clearable></el-input>
</el-form-item>
<el-form-item label="变动重量">
<el-input v-model="dataForm.changeWt" placeholder="请输入变动重量" clearable></el-input>
</el-form-item>
<el-form-item label="变动前">
<el-input v-model="dataForm.beforeWt" placeholder="请输入变动前" clearable></el-input>
</el-form-item>
<el-form-item label="变动后">
<el-input v-model="dataForm.afterWt" placeholder="请输入变动后" clearable></el-input>
</el-form-item>
<el-form-item label="变动体积">
<el-input v-model="dataForm.changeVol" placeholder="请输入变动体积" clearable></el-input>
</el-form-item>
<el-form-item label="变动前">
<el-input v-model="dataForm.beforeVol" placeholder="请输入变动前" clearable></el-input>
</el-form-item>
<el-form-item label="变动后">
<el-input v-model="dataForm.afterVol" placeholder="请输入变动后" clearable></el-input>
</el-form-item>
<el-form-item label="变动价值">
<el-input v-model="dataForm.changeValue" placeholder="请输入变动价值" clearable></el-input>
</el-form-item>
<el-form-item label="变动前">
<el-input v-model="dataForm.beforeValue" placeholder="请输入变动前" clearable></el-input>
</el-form-item>
<el-form-item label="变动后">
<el-input v-model="dataForm.afterValue" placeholder="请输入变动后" clearable></el-input>
</el-form-item>
<el-form-item label="变动日期">
<el-input v-model="dataForm.changeDate" placeholder="请输入变动日期" clearable></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input v-model="dataForm.remark" placeholder="请输入备注" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()"></el-button>
<el-button @click="resetForm()"></el-button>
<el-button v-hasPermi="['autogencode:ckstockchange:save']" type="primary" @click="addOrUpdateHandle()"></el-button>
<el-button v-hasPermi="['autogencode:ckstockchange:delete']" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0"></el-button>
</el-form-item>
</el-form>
<el-table
:data="dataList"
border
v-loading="dataListLoading"
@selection-change="selectionChangeHandle"
style="width: 100%;">
<el-table-column
type="selection"
header-align="center"
align="center"
width="50">
</el-table-column>
<el-table-column
prop="id"
header-align="center"
align="center"
label="主键">
</el-table-column>
<el-table-column
prop="custId"
header-align="center"
align="center"
label="客户代码">
</el-table-column>
<el-table-column
prop="changeType"
header-align="center"
align="center"
label="变动类型">
</el-table-column>
<el-table-column
prop="cargoId"
header-align="center"
align="center"
label="货品ID">
</el-table-column>
<el-table-column
prop="hsCode"
header-align="center"
align="center"
label="HS代码">
</el-table-column>
<el-table-column
prop="cargoName"
header-align="center"
align="center"
label="货品名称">
</el-table-column>
<el-table-column
prop="stockId"
header-align="center"
align="center"
label="仓库">
</el-table-column>
<el-table-column
prop="stockName"
header-align="center"
align="center"
label="仓库名称">
</el-table-column>
<el-table-column
prop="billNo"
header-align="center"
align="center"
label="批号">
</el-table-column>
<el-table-column
prop="billId"
header-align="center"
align="center"
label="变动单号">
</el-table-column>
<el-table-column
prop="stockCode"
header-align="center"
align="center"
label="库场代码">
</el-table-column>
<el-table-column
prop="changeNum"
header-align="center"
align="center"
label="变动数量">
</el-table-column>
<el-table-column
prop="beforeNum"
header-align="center"
align="center"
label="变动前">
</el-table-column>
<el-table-column
prop="afterNum"
header-align="center"
align="center"
label="变动后">
</el-table-column>
<el-table-column
prop="changeWt"
header-align="center"
align="center"
label="变动重量">
</el-table-column>
<el-table-column
prop="beforeWt"
header-align="center"
align="center"
label="变动前">
</el-table-column>
<el-table-column
prop="afterWt"
header-align="center"
align="center"
label="变动后">
</el-table-column>
<el-table-column
prop="changeVol"
header-align="center"
align="center"
label="变动体积">
</el-table-column>
<el-table-column
prop="beforeVol"
header-align="center"
align="center"
label="变动前">
</el-table-column>
<el-table-column
prop="afterVol"
header-align="center"
align="center"
label="变动后">
</el-table-column>
<el-table-column
prop="changeValue"
header-align="center"
align="center"
label="变动价值">
</el-table-column>
<el-table-column
prop="beforeValue"
header-align="center"
align="center"
label="变动前">
</el-table-column>
<el-table-column
prop="afterValue"
header-align="center"
align="center"
label="变动后">
</el-table-column>
<el-table-column
prop="changeDate"
header-align="center"
align="center"
label="变动日期">
</el-table-column>
<el-table-column
prop="remark"
header-align="center"
align="center"
label="备注">
</el-table-column>
<el-table-column
prop="delFlag"
header-align="center"
align="center"
label="删除标志0代表存在 2代表删除">
</el-table-column>
<el-table-column
prop="createDept"
header-align="center"
align="center"
label="创建部门">
</el-table-column>
<el-table-column
prop="createBy"
header-align="center"
align="center"
label="创建人">
</el-table-column>
<el-table-column
prop="createTime"
header-align="center"
align="center"
label="创建时间">
</el-table-column>
<el-table-column
prop="updateBy"
header-align="center"
align="center"
label="修改人">
</el-table-column>
<el-table-column
prop="updateTime"
header-align="center"
align="center"
label="修改时间">
</el-table-column>
<el-table-column
prop="tenantId"
header-align="center"
align="center"
label="">
</el-table-column>
<el-table-column
fixed="right"
header-align="center"
align="center"
width="150"
label="操作">
<template slot-scope="scope">
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ '' }}</el-button>
<el-button v-hasPermi="['autogencode:ckstockchange:delete']" type="text" size="small" @click="deleteHandle(scope.row.id)" style="color: #f56c6c;"></el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[10, 20, 50, 100]"
:page-size="pageSize"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
<!-- 表单弹窗, 新增数据和修改数据 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
</template>
<script>
import AddOrUpdate from './ckstockchange-add-and-update'
import * as api from '@/api/ckstockchange.js'
export default {
data () {
return {
dataForm: {
custId: '',
changeType: '',
cargoId: '',
hsCode: '',
cargoName: '',
stockId: '',
stockName: '',
billNo: '',
billId: '',
stockCode: '',
changeNum: '',
beforeNum: '',
afterNum: '',
changeWt: '',
beforeWt: '',
afterWt: '',
changeVol: '',
beforeVol: '',
afterVol: '',
changeValue: '',
beforeValue: '',
afterValue: '',
changeDate: '',
remark: '',
},
dataList: [],
pageIndex: 1,
pageSize: 10,
totalPage: 0,
dataListLoading: false,
dataListSelections: [],
addOrUpdateVisible: false
}
},
components: {
AddOrUpdate
},
activated () {
this.getDataList()
},
mounted() {
//
this.getDataList()
},
methods: {
//
resetForm() {
this.dataForm = {
custId: '',
changeType: '',
cargoId: '',
hsCode: '',
cargoName: '',
stockId: '',
stockName: '',
billNo: '',
billId: '',
stockCode: '',
changeNum: '',
beforeNum: '',
afterNum: '',
changeWt: '',
beforeWt: '',
afterWt: '',
changeVol: '',
beforeVol: '',
afterVol: '',
changeValue: '',
beforeValue: '',
afterValue: '',
changeDate: '',
remark: '',
}
this.getDataList()
},
//
getDataList () {
this.dataListLoading = true
// CkStockChangeControllerPageParamRequest
const params = {
page: this.pageIndex,
limit: this.pageSize
}
//
if (this.dataForm.custId) params.custId = this.dataForm.custId;
if (this.dataForm.changeType) params.changeType = this.dataForm.changeType;
if (this.dataForm.cargoId) params.cargoId = this.dataForm.cargoId;
if (this.dataForm.hsCode) params.hsCode = this.dataForm.hsCode;
if (this.dataForm.cargoName) params.cargoName = this.dataForm.cargoName;
if (this.dataForm.stockId) params.stockId = this.dataForm.stockId;
if (this.dataForm.stockName) params.stockName = this.dataForm.stockName;
if (this.dataForm.billNo) params.billNo = this.dataForm.billNo;
if (this.dataForm.billId) params.billId = this.dataForm.billId;
if (this.dataForm.stockCode) params.stockCode = this.dataForm.stockCode;
if (this.dataForm.changeNum) params.changeNum = this.dataForm.changeNum;
if (this.dataForm.beforeNum) params.beforeNum = this.dataForm.beforeNum;
if (this.dataForm.afterNum) params.afterNum = this.dataForm.afterNum;
if (this.dataForm.changeWt) params.changeWt = this.dataForm.changeWt;
if (this.dataForm.beforeWt) params.beforeWt = this.dataForm.beforeWt;
if (this.dataForm.afterWt) params.afterWt = this.dataForm.afterWt;
if (this.dataForm.changeVol) params.changeVol = this.dataForm.changeVol;
if (this.dataForm.beforeVol) params.beforeVol = this.dataForm.beforeVol;
if (this.dataForm.afterVol) params.afterVol = this.dataForm.afterVol;
if (this.dataForm.changeValue) params.changeValue = this.dataForm.changeValue;
if (this.dataForm.beforeValue) params.beforeValue = this.dataForm.beforeValue;
if (this.dataForm.afterValue) params.afterValue = this.dataForm.afterValue;
if (this.dataForm.changeDate) params.changeDate = this.dataForm.changeDate;
if (this.dataForm.remark) params.remark = this.dataForm.remark;
api.ckstockchangeListApi(params).then(res => {
this.dataListLoading = false
this.dataList = res.list || [];
this.totalPage = res.total;
}).catch(e => {
this.dataListLoading = false
})
},
//
sizeChangeHandle (val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
//
currentChangeHandle (val) {
this.pageIndex = val
this.getDataList()
},
//
selectionChangeHandle (val) {
this.dataListSelections = val
},
// /
addOrUpdateHandle (id) {
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.init(id)
})
},
//
deleteHandle (id) {
let ids = []
let idText = ''
// id
if (id) {
ids = [id]
idText = id
} else {
//
ids = this.dataListSelections.map(item => {
return item.id
})
idText = ids.join(',')
}
this.$confirm(`确定进行删除操作?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// API
api.ckstockchangeDeleteApi(ids).then(res => {
this.$message.success('删除成功')
this.getDataList()
})
})
},
}
}
</script>

@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zbkj.common.request.PageParamRequest;
import com.zbkj.common.response.CommonResult;
import com.zbkj.common.page.CommonPage;
import com.zbkj.modules.autogencode.entity.CkBill;
import com.zbkj.modules.autogencode.service.CkBillService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -33,7 +35,8 @@ public class CkBillCargoController {
@Autowired
private CkBillCargoService ckBillCargoService;
@Autowired
private CkBillService ckBillService;
/**
*
@ -296,6 +299,23 @@ public class CkBillCargoController {
return CommonResult.success(page);
}
/**
*
*/
@ApiOperation("确认入库单据")
@GetMapping(value = "/confirmPutBill/{id}")
public CommonResult<String> confirmPutBill(@PathVariable("id") Long id) {
CkBill ckBill = ckBillService.getById(id);
if (!ckBill.getSourceType().equals("1")) {
return CommonResult.failed("非人工操作入库,不能撤回");
}
if (ckBill.getBillStatus().equals("1")) {
return CommonResult.failed("此单据已经确认,不允许再次操作");
}
return ckBillService.warehouseWork(ckBill,false);
}
/**
*

@ -1,13 +1,21 @@
package com.zbkj.modules.autogencode.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Random;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zbkj.common.model.system.SystemAttachment;
import com.zbkj.common.request.PageParamRequest;
import com.zbkj.common.response.CommonResult;
import com.zbkj.common.page.CommonPage;
import com.zbkj.common.exception.ExceptionCodeEnum;
import com.zbkj.modules.autogencode.entity.CkBillCargo;
import com.zbkj.service.service.SystemAttachmentService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -33,7 +41,8 @@ public class CkBillController {
@Autowired
private CkBillService ckBillService;
@Autowired
private SystemAttachmentService systemAttachmentService;
/**
*
@ -201,6 +210,108 @@ public class CkBillController {
return CommonResult.success(page);
}
/**
*
*/
@ApiOperation("分页查询出入库单据列表")
@GetMapping("/stockPageList")
public CommonResult<CommonPage<CkBill>> stockPageList(@Validated CkBill ckBill, @Validated PageParamRequest pageParamRequest) {
LambdaQueryWrapper<CkBill> queryWrapper = new LambdaQueryWrapper();
condition(queryWrapper, ckBill);
//单据类型
if(Validator.isNotEmpty(ckBill.getBillType())){
if (ckBill.getBillType().equals("1")) {
queryWrapper.ne(CkBill::getBillType, "2");
}else if(ckBill.getBillType().equals("2")){
queryWrapper.ne(CkBill::getBillType, "1");
}else{
queryWrapper.eq(CkBill::getBillType, ckBill.getBillType());
}
}
CommonPage<CkBill> page = CommonPage.restPage(ckBillService.pageList(queryWrapper, pageParamRequest));
return CommonResult.success(page);
}
/**
*
*/
@ApiOperation("新增货物入库单据")
@PostMapping("/putBill")
public CommonResult<String> putBill(@RequestBody CkBill ckBill) {
CommonResult<String> ajaxResult = verifyPutBill(ckBill);
if (ajaxResult.getCode() != ExceptionCodeEnum.SUCCESS.getCode()) {
return ajaxResult;
}
List<CkBillCargo> ckBillCargos = ckBill.getCkBillCargos();
if (null != ckBillCargos && ckBillCargos.size() > 0) {
for (CkBillCargo ckbBillCargo : ckBillCargos) {
updateFile(ckbBillCargo);
}
}
return ckBillService.putCargo(ckBill);
}
private void updateFile(CkBillCargo ckbBillCargo) {
Long newId = System.currentTimeMillis() + new Random().nextInt(1000);
List<SystemAttachment> file = ckbBillCargo.getFile();
if (null != file) {
for (SystemAttachment cmAttach : file) {
cmAttach.setFileId(String.valueOf(newId));
}
systemAttachmentService.updateBatchById(file);
ckbBillCargo.setFileId(String.valueOf(newId));
}
}
public CommonResult<String> verifyPutBill(CkBill ckBill) {
if (StringUtils.isEmpty(ckBill.getBillNumber())) {
return CommonResult.failed("单据编号不能为空");
}
CkBill tmpCkBill = ckBillService.getOne(new LambdaQueryWrapper<CkBill>().eq(CkBill::getBillNumber, ckBill.getBillNumber()));
if (ckBill.getId() == null) {
if (tmpCkBill != null) {
return CommonResult.failed("单据编号已经存在,请重新输入");
}
} else {
if (tmpCkBill != null && !tmpCkBill.getId().equals(ckBill.getId())) {
return CommonResult.failed("单据编号已经存在,请重新输入");
}
if (!ckBill.getSourceType().equals("1")) {
return CommonResult.failed("非本页面操作入库,不能撤回");
}
}
if (ckBill.getBillDate() == null) {
return CommonResult.failed("单据日期不能为空");
}
List<CkBillCargo> ckBillCargos = ckBill.getCkBillCargos();
if (ckBillCargos == null || ckBillCargos.isEmpty()) {
return CommonResult.failed("货物列表不能为空");
}
for (int i = 0; i < ckBillCargos.size(); i++) {
CkBillCargo ckBillCargo = ckBillCargos.get(i);
if (ckBillCargo.getCustId() == null) {
return CommonResult.failed("货主不能为空");
}
if (ckBillCargo.getCargoNum() == null) {
return CommonResult.failed("货物件数不能为空");
}
if (ckBillCargo.getCargoWt() == null) {
return CommonResult.failed("货物重量不能为空");
}
if (ckBillCargo.getCargoVol() == null) {
return CommonResult.failed("货物体积不能为空");
}
if (ckBillCargo.getCargoId() == null) {
return CommonResult.failed("货物不能为空");
}
}
return CommonResult.success();
}
/**
*

@ -0,0 +1,203 @@
package com.zbkj.modules.autogencode.controller;
import java.util.Arrays;
import java.util.Map;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zbkj.common.request.PageParamRequest;
import com.zbkj.common.response.CommonResult;
import com.zbkj.common.page.CommonPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zbkj.modules.autogencode.entity.CkBillStock;
import com.zbkj.modules.autogencode.service.CkBillStockService;
/**
*
*/
@RestController
@RequestMapping("api/autogencode/ckbillstock")
public class CkBillStockController {
@Autowired
private CkBillStockService ckBillStockService;
/**
*
*
*/
private void condition(LambdaQueryWrapper<CkBillStock> queryWrapper, CkBillStock request) {
if (request == null) {
return;
}
// 根据实体类字段自动生成查询条件
// 主键
if (request.getId() != null) {
queryWrapper.eq(CkBillStock::getId, request.getId());
}
// ck_bill_cargo表主键
if (request.getBillCargoId() != null) {
queryWrapper.eq(CkBillStock::getBillCargoId, request.getBillCargoId());
}
// 出入库类型
if (StrUtil.isNotBlank(request.getInoutType())) {
queryWrapper.eq(CkBillStock::getInoutType, request.getInoutType());
}
// 库场ID
if (request.getStockId() != null) {
queryWrapper.eq(CkBillStock::getStockId, request.getStockId());
}
// 库场代码
if (StrUtil.isNotBlank(request.getStockCode())) {
queryWrapper.eq(CkBillStock::getStockCode, request.getStockCode());
}
// 库场名称
if (StrUtil.isNotBlank(request.getStockName())) {
queryWrapper.eq(CkBillStock::getStockName, request.getStockName());
}
// 单据编号
if (StrUtil.isNotBlank(request.getBillNumber())) {
queryWrapper.eq(CkBillStock::getBillNumber, request.getBillNumber());
}
// 货物价值
if (request.getCargoValue() != null) {
queryWrapper.eq(CkBillStock::getCargoValue, request.getCargoValue());
}
// 货物件数
if (request.getCargoNum() != null) {
queryWrapper.eq(CkBillStock::getCargoNum, request.getCargoNum());
}
// 货物重量
if (request.getCargoWt() != null) {
queryWrapper.eq(CkBillStock::getCargoWt, request.getCargoWt());
}
// 货物体积
if (request.getCargoVol() != null) {
queryWrapper.eq(CkBillStock::getCargoVol, request.getCargoVol());
}
// 删除标志0代表存在 2代表删除
if (StrUtil.isNotBlank(request.getDelFlag())) {
queryWrapper.eq(CkBillStock::getDelFlag, request.getDelFlag());
}
// 创建部门
if (request.getCreateDept() != null) {
queryWrapper.eq(CkBillStock::getCreateDept, request.getCreateDept());
}
// 创建人
if (request.getCreateBy() != null) {
queryWrapper.eq(CkBillStock::getCreateBy, request.getCreateBy());
}
// 创建时间
if (request.getCreateTime() != null) {
queryWrapper.eq(CkBillStock::getCreateTime, request.getCreateTime());
}
// 修改人
if (request.getUpdateBy() != null) {
queryWrapper.eq(CkBillStock::getUpdateBy, request.getUpdateBy());
}
// 修改时间
if (request.getUpdateTime() != null) {
queryWrapper.eq(CkBillStock::getUpdateTime, request.getUpdateTime());
}
//
if (StrUtil.isNotBlank(request.getTenantId())) {
queryWrapper.eq(CkBillStock::getTenantId, request.getTenantId());
}
}
/**
*
* @param request
* @param pageParamRequest
*/
@ApiOperation(value = "分页列表")
@RequestMapping(value = "/list", method = RequestMethod.GET)
public CommonResult<CommonPage<CkBillStock>> getList(@Validated CkBillStock request, @Validated PageParamRequest pageParamRequest) {
LambdaQueryWrapper<CkBillStock> queryWrapper = new LambdaQueryWrapper();
// 应用搜索条件
condition(queryWrapper, request);
CommonPage<CkBillStock> page = CommonPage.restPage(ckBillStockService.pageList(queryWrapper, pageParamRequest));
return CommonResult.success(page);
}
/**
*
*/
@RequestMapping(value = "/info/{id}", method = RequestMethod.GET)
public CommonResult<CkBillStock> info(@PathVariable("id") Long id){
CkBillStock ckBillStock = ckBillStockService.getById(id);
return CommonResult.success(ckBillStock);
}
/**
*
*/
@RequestMapping(value = "/save", method = RequestMethod.POST)
public CommonResult<String> save(@RequestBody CkBillStock ckBillStock){
if (ckBillStockService.save(ckBillStock)) {
return CommonResult.success();
}
return CommonResult.failed();
}
/**
*
*/
@RequestMapping(value = "/update", method = RequestMethod.POST)
public CommonResult<String> update(@RequestBody CkBillStock ckBillStock){
if (ckBillStockService.updateById(ckBillStock)) {
return CommonResult.success();
}
return CommonResult.failed();
}
/**
* :id
*/
@RequestMapping(value = "/delete", method = RequestMethod.POST)
public CommonResult<String> delete(@RequestBody Long[] ids){
if (ckBillStockService.removeByIds(Arrays.asList(ids))) {
return CommonResult.success();
}
return CommonResult.failed();
}
}

@ -0,0 +1,273 @@
package com.zbkj.modules.autogencode.controller;
import java.util.Arrays;
import java.util.Map;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zbkj.common.request.PageParamRequest;
import com.zbkj.common.response.CommonResult;
import com.zbkj.common.page.CommonPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zbkj.modules.autogencode.entity.CkStockChange;
import com.zbkj.modules.autogencode.service.CkStockChangeService;
/**
*
*/
@RestController
@RequestMapping("api/autogencode/ckstockchange")
public class CkStockChangeController {
@Autowired
private CkStockChangeService ckStockChangeService;
/**
*
*
*/
private void condition(LambdaQueryWrapper<CkStockChange> queryWrapper, CkStockChange request) {
if (request == null) {
return;
}
// 根据实体类字段自动生成查询条件
// 主键
if (request.getId() != null) {
queryWrapper.eq(CkStockChange::getId, request.getId());
}
// 客户代码
if (request.getCustId() != null) {
queryWrapper.eq(CkStockChange::getCustId, request.getCustId());
}
// 变动类型
if (StrUtil.isNotBlank(request.getChangeType())) {
queryWrapper.eq(CkStockChange::getChangeType, request.getChangeType());
}
// 货品ID
if (request.getCargoId() != null) {
queryWrapper.eq(CkStockChange::getCargoId, request.getCargoId());
}
// HS代码
if (StrUtil.isNotBlank(request.getHsCode())) {
queryWrapper.eq(CkStockChange::getHsCode, request.getHsCode());
}
// 货品名称
if (StrUtil.isNotBlank(request.getCargoName())) {
queryWrapper.eq(CkStockChange::getCargoName, request.getCargoName());
}
// 仓库
if (request.getStockId() != null) {
queryWrapper.eq(CkStockChange::getStockId, request.getStockId());
}
// 仓库名称
if (StrUtil.isNotBlank(request.getStockName())) {
queryWrapper.eq(CkStockChange::getStockName, request.getStockName());
}
// 批号
if (StrUtil.isNotBlank(request.getBillNo())) {
queryWrapper.eq(CkStockChange::getBillNo, request.getBillNo());
}
// 变动单号
if (request.getBillId() != null) {
queryWrapper.eq(CkStockChange::getBillId, request.getBillId());
}
// 库场代码
if (StrUtil.isNotBlank(request.getStockCode())) {
queryWrapper.eq(CkStockChange::getStockCode, request.getStockCode());
}
// 变动数量
if (request.getChangeNum() != null) {
queryWrapper.eq(CkStockChange::getChangeNum, request.getChangeNum());
}
// 变动前
if (request.getBeforeNum() != null) {
queryWrapper.eq(CkStockChange::getBeforeNum, request.getBeforeNum());
}
// 变动后
if (request.getAfterNum() != null) {
queryWrapper.eq(CkStockChange::getAfterNum, request.getAfterNum());
}
// 变动重量
if (request.getChangeWt() != null) {
queryWrapper.eq(CkStockChange::getChangeWt, request.getChangeWt());
}
// 变动前
if (request.getBeforeWt() != null) {
queryWrapper.eq(CkStockChange::getBeforeWt, request.getBeforeWt());
}
// 变动后
if (request.getAfterWt() != null) {
queryWrapper.eq(CkStockChange::getAfterWt, request.getAfterWt());
}
// 变动体积
if (request.getChangeVol() != null) {
queryWrapper.eq(CkStockChange::getChangeVol, request.getChangeVol());
}
// 变动前
if (request.getBeforeVol() != null) {
queryWrapper.eq(CkStockChange::getBeforeVol, request.getBeforeVol());
}
// 变动后
if (request.getAfterVol() != null) {
queryWrapper.eq(CkStockChange::getAfterVol, request.getAfterVol());
}
// 变动价值
if (request.getChangeValue() != null) {
queryWrapper.eq(CkStockChange::getChangeValue, request.getChangeValue());
}
// 变动前
if (request.getBeforeValue() != null) {
queryWrapper.eq(CkStockChange::getBeforeValue, request.getBeforeValue());
}
// 变动后
if (request.getAfterValue() != null) {
queryWrapper.eq(CkStockChange::getAfterValue, request.getAfterValue());
}
// 变动日期
if (request.getChangeDate() != null) {
queryWrapper.eq(CkStockChange::getChangeDate, request.getChangeDate());
}
// 备注
if (StrUtil.isNotBlank(request.getRemark())) {
queryWrapper.eq(CkStockChange::getRemark, request.getRemark());
}
// 删除标志0代表存在 2代表删除
if (StrUtil.isNotBlank(request.getDelFlag())) {
queryWrapper.eq(CkStockChange::getDelFlag, request.getDelFlag());
}
// 创建部门
if (request.getCreateDept() != null) {
queryWrapper.eq(CkStockChange::getCreateDept, request.getCreateDept());
}
// 创建人
if (request.getCreateBy() != null) {
queryWrapper.eq(CkStockChange::getCreateBy, request.getCreateBy());
}
// 创建时间
if (request.getCreateTime() != null) {
queryWrapper.eq(CkStockChange::getCreateTime, request.getCreateTime());
}
// 修改人
if (request.getUpdateBy() != null) {
queryWrapper.eq(CkStockChange::getUpdateBy, request.getUpdateBy());
}
// 修改时间
if (request.getUpdateTime() != null) {
queryWrapper.eq(CkStockChange::getUpdateTime, request.getUpdateTime());
}
//
if (StrUtil.isNotBlank(request.getTenantId())) {
queryWrapper.eq(CkStockChange::getTenantId, request.getTenantId());
}
}
/**
*
* @param request
* @param pageParamRequest
*/
@ApiOperation(value = "分页列表")
@RequestMapping(value = "/list", method = RequestMethod.GET)
public CommonResult<CommonPage<CkStockChange>> getList(@Validated CkStockChange request, @Validated PageParamRequest pageParamRequest) {
LambdaQueryWrapper<CkStockChange> queryWrapper = new LambdaQueryWrapper();
// 应用搜索条件
condition(queryWrapper, request);
CommonPage<CkStockChange> page = CommonPage.restPage(ckStockChangeService.pageList(queryWrapper, pageParamRequest));
return CommonResult.success(page);
}
/**
*
*/
@RequestMapping(value = "/info/{id}", method = RequestMethod.GET)
public CommonResult<CkStockChange> info(@PathVariable("id") Long id){
CkStockChange ckStockChange = ckStockChangeService.getById(id);
return CommonResult.success(ckStockChange);
}
/**
*
*/
@RequestMapping(value = "/save", method = RequestMethod.POST)
public CommonResult<String> save(@RequestBody CkStockChange ckStockChange){
if (ckStockChangeService.save(ckStockChange)) {
return CommonResult.success();
}
return CommonResult.failed();
}
/**
*
*/
@RequestMapping(value = "/update", method = RequestMethod.POST)
public CommonResult<String> update(@RequestBody CkStockChange ckStockChange){
if (ckStockChangeService.updateById(ckStockChange)) {
return CommonResult.success();
}
return CommonResult.failed();
}
/**
* :id
*/
@RequestMapping(value = "/delete", method = RequestMethod.POST)
public CommonResult<String> delete(@RequestBody Long[] ids){
if (ckStockChangeService.removeByIds(Arrays.asList(ids))) {
return CommonResult.success();
}
return CommonResult.failed();
}
}

@ -1,6 +1,7 @@
package com.zbkj.modules.autogencode.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import cn.hutool.core.util.StrUtil;
@ -131,6 +132,21 @@ public class CmWarehouseController {
return CommonResult.success(page);
}
/**
*
* @param request
* @param pageParamRequest
*/
@ApiOperation(value = "分页列表")
@RequestMapping(value = "/listByAll", method = RequestMethod.GET)
public List<CmWarehouse> listByAll(@Validated CmWarehouse request, @Validated PageParamRequest pageParamRequest) {
LambdaQueryWrapper<CmWarehouse> queryWrapper = new LambdaQueryWrapper();
// 应用搜索条件
condition(queryWrapper, request);
List<CmWarehouse> cmWarehouses = cmWarehouseService.list(queryWrapper);
return cmWarehouses;
}
/**
*

@ -0,0 +1,13 @@
package com.zbkj.modules.autogencode.dao;
import com.zbkj.modules.autogencode.entity.CkBillStock;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* DAO
*/
@Mapper
public interface CkBillStockDao extends BaseMapper<CkBillStock> {
}

@ -0,0 +1,13 @@
package com.zbkj.modules.autogencode.dao;
import com.zbkj.modules.autogencode.entity.CkStockChange;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* DAO
*/
@Mapper
public interface CkStockChangeDao extends BaseMapper<CkStockChange> {
}

@ -1,11 +1,14 @@
package com.zbkj.modules.autogencode.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import lombok.Data;
@ -151,4 +154,59 @@ public class CkBill implements Serializable {
@ApiModelProperty(value = "")
private String tenantId;
/**
*
* id
*/
@TableField(exist = false)
private List<CkBillStock> oldCargos;
/**
*
* id
*/
@TableField(exist = false)
private List<CkBillStock> newCargos;
/**
*
*
*/
@TableField(exist = false)
private CkBillStock oldCargo;
@TableField(exist = false)
private CkBillCargo ckBillCargo;
@TableField(exist = false)
private List<CkBillStock> ckBillStocks;
@TableField(exist = false)
private List<CkBillCargo> ckBillCargos;
/**
* id
*/
@TableField(exist = false)
private Long custId;
/**
* true
*/
@TableField(exist = false)
private Boolean submitStatus;
//前端列表入参查询条件
@TableField(exist = false)
private String cargoName;
@TableField(exist = false)
private String stockName;
@TableField(exist = false)
private String stockCode;
@TableField(exist = false)
private String custName;
@TableField(exist = false)
private String customsNo;
@TableField(exist = false)
private String listNumber;
@TableField(exist = false)
private String outBillNumber;
}

@ -1,12 +1,17 @@
package com.zbkj.modules.autogencode.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zbkj.common.model.system.SystemAttachment;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import lombok.Data;
@ -247,4 +252,98 @@ public class CkBillCargo implements Serializable {
@ApiModelProperty(value = "文件id")
private String fileId;
@TableField(exist = false)
private List<SystemAttachment> file;
/**
*
*/
@TableField(exist = false)
private String batch;
/**
* id
*/
@TableField(exist = false)
private Long ckCargoStockId;
/** 入库库场ID */
@ApiModelProperty(value = "入库库场ID")
@TableField(exist = false)
private Long inStockId;
@ApiModelProperty(value = "入库库场代码")
@TableField(exist = false)
private String stockCode;
/** 库场name */
@TableField(exist = false)
private BigDecimal nowStockNum;
@TableField(exist = false)
private BigDecimal nowStockWt;
@TableField(exist = false)
private BigDecimal nowStockVol;
@TableField(exist = false)
private BigDecimal nowCargoValue;
// @Excel(name = "库场name")
@ApiModelProperty(value = "库场name")
@TableField(exist = false)
private String stockName;
/** 出库库场ID */
@ApiModelProperty(value = "出库库场ID")
@TableField(exist = false)
private Long outStockId;
@TableField(exist = false)
private String outBillNumber;
@TableField(exist = false)
private List<CkBillStock> ckBillStocks;
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date beginDate;
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endDate;
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date beginDateTwo;
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endDateTwo;
@TableField(exist = false)
private BigDecimal totalWt;
//贸易方式
@TableField(exist = false)
private String tradWay;
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date inTimeBegin;
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date inTimeEnd;
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date outTimeBegin;
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date outTimeEnd;
}

@ -0,0 +1,110 @@
package com.zbkj.modules.autogencode.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
@Data
@TableName("ck_bill_stock")
public class CkBillStock implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@ApiModelProperty(value = "主键")
@TableId
private Long id;
/**
* ck_bill_cargo
*/
@ApiModelProperty(value = "ck_bill_cargo表主键")
private Long billCargoId;
/**
*
*/
@ApiModelProperty(value = "出入库类型")
private String inoutType;
/**
* ID
*/
@ApiModelProperty(value = "库场ID")
private Long stockId;
/**
*
*/
@ApiModelProperty(value = "库场代码")
private String stockCode;
/**
*
*/
@ApiModelProperty(value = "库场名称")
private String stockName;
/**
*
*/
@ApiModelProperty(value = "单据编号")
private String billNumber;
/**
*
*/
@ApiModelProperty(value = "货物价值")
private BigDecimal cargoValue;
/**
*
*/
@ApiModelProperty(value = "货物件数")
private BigDecimal cargoNum;
/**
*
*/
@ApiModelProperty(value = "货物重量")
private BigDecimal cargoWt;
/**
*
*/
@ApiModelProperty(value = "货物体积")
private BigDecimal cargoVol;
/**
* 0 2
*/
@ApiModelProperty(value = "删除标志0代表存在 2代表删除")
private String delFlag;
/**
*
*/
@ApiModelProperty(value = "创建部门")
private Long createDept;
/**
*
*/
@ApiModelProperty(value = "创建人")
private Long createBy;
/**
*
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
*
*/
@ApiModelProperty(value = "修改人")
private Long updateBy;
/**
*
*/
@ApiModelProperty(value = "修改时间")
private Date updateTime;
/**
*
*/
@ApiModelProperty(value = "")
private String tenantId;
}

@ -0,0 +1,180 @@
package com.zbkj.modules.autogencode.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
@Data
@TableName("ck_stock_change")
public class CkStockChange implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@ApiModelProperty(value = "主键")
@TableId
private Long id;
/**
*
*/
@ApiModelProperty(value = "客户代码")
private Long custId;
/**
*
*/
@ApiModelProperty(value = "变动类型")
private String changeType;
/**
* ID
*/
@ApiModelProperty(value = "货品ID")
private Long cargoId;
/**
* HS
*/
@ApiModelProperty(value = "HS代码")
private String hsCode;
/**
*
*/
@ApiModelProperty(value = "货品名称")
private String cargoName;
/**
*
*/
@ApiModelProperty(value = "仓库")
private Long stockId;
/**
*
*/
@ApiModelProperty(value = "仓库名称")
private String stockName;
/**
*
*/
@ApiModelProperty(value = "批号")
private String billNo;
/**
*
*/
@ApiModelProperty(value = "变动单号")
private Long billId;
/**
*
*/
@ApiModelProperty(value = "库场代码")
private String stockCode;
/**
*
*/
@ApiModelProperty(value = "变动数量")
private BigDecimal changeNum;
/**
*
*/
@ApiModelProperty(value = "变动前")
private BigDecimal beforeNum;
/**
*
*/
@ApiModelProperty(value = "变动后")
private BigDecimal afterNum;
/**
*
*/
@ApiModelProperty(value = "变动重量")
private BigDecimal changeWt;
/**
*
*/
@ApiModelProperty(value = "变动前")
private BigDecimal beforeWt;
/**
*
*/
@ApiModelProperty(value = "变动后")
private BigDecimal afterWt;
/**
*
*/
@ApiModelProperty(value = "变动体积")
private BigDecimal changeVol;
/**
*
*/
@ApiModelProperty(value = "变动前")
private BigDecimal beforeVol;
/**
*
*/
@ApiModelProperty(value = "变动后")
private BigDecimal afterVol;
/**
*
*/
@ApiModelProperty(value = "变动价值")
private BigDecimal changeValue;
/**
*
*/
@ApiModelProperty(value = "变动前")
private BigDecimal beforeValue;
/**
*
*/
@ApiModelProperty(value = "变动后")
private BigDecimal afterValue;
/**
*
*/
@ApiModelProperty(value = "变动日期")
private Date changeDate;
/**
*
*/
@ApiModelProperty(value = "备注")
private String remark;
/**
* 0 2
*/
@ApiModelProperty(value = "删除标志0代表存在 2代表删除")
private String delFlag;
/**
*
*/
@ApiModelProperty(value = "创建部门")
private Long createDept;
/**
*
*/
@ApiModelProperty(value = "创建人")
private Long createBy;
/**
*
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
*
*/
@ApiModelProperty(value = "修改人")
private Long updateBy;
/**
*
*/
@ApiModelProperty(value = "修改时间")
private Date updateTime;
/**
*
*/
@ApiModelProperty(value = "")
private String tenantId;
}

@ -1,9 +1,12 @@
package com.zbkj.modules.autogencode.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zbkj.common.response.CommonResult;
import com.zbkj.modules.autogencode.entity.CkBill;
import com.zbkj.common.request.PageParamRequest;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zbkj.modules.autogencode.entity.CkBillCargo;
import com.zbkj.modules.autogencode.entity.CkBillStock;
import java.util.List;
@ -21,5 +24,17 @@ public interface CkBillService extends IService<CkBill> {
* @return
*/
List<CkBill> pageList(LambdaQueryWrapper<CkBill> queryWrapper, PageParamRequest pageParamRequest);
public CommonResult<String> warehouseWork(CkBill ckBill, Boolean isRevocation);
public void saveChange(CkBillCargo ckBillCargo, CkBillStock ckBillStock);
/**
*
*
* @param ckBill
* @return
*/
public CommonResult<String> putCargo(CkBill ckBill);
}

@ -0,0 +1,25 @@
package com.zbkj.modules.autogencode.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zbkj.modules.autogencode.entity.CkBillStock;
import com.zbkj.common.request.PageParamRequest;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import java.util.List;
import java.util.Map;
/**
*
* +----------------------------------------------------------------------
*/
public interface CkBillStockService extends IService<CkBillStock> {
/**
* CkBillStock
* @param pageParamRequest
* @return
*/
List<CkBillStock> pageList(LambdaQueryWrapper<CkBillStock> queryWrapper, PageParamRequest pageParamRequest);
}

@ -0,0 +1,25 @@
package com.zbkj.modules.autogencode.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zbkj.modules.autogencode.entity.CkStockChange;
import com.zbkj.common.request.PageParamRequest;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import java.util.List;
import java.util.Map;
/**
*
* +----------------------------------------------------------------------
*/
public interface CkStockChangeService extends IService<CkStockChange> {
/**
* CkStockChange
* @param pageParamRequest
* @return
*/
List<CkStockChange> pageList(LambdaQueryWrapper<CkStockChange> queryWrapper, PageParamRequest pageParamRequest);
}

@ -1,19 +1,26 @@
package com.zbkj.modules.autogencode.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.github.pagehelper.PageHelper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zbkj.common.response.CommonResult;
import com.zbkj.modules.autogencode.entity.*;
import com.zbkj.modules.autogencode.service.*;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.zbkj.modules.autogencode.dao.CkBillDao;
import com.zbkj.modules.autogencode.entity.CkBill;
import com.zbkj.modules.autogencode.service.CkBillService;
import com.zbkj.common.page.CommonPage;
import com.zbkj.common.request.PageParamRequest;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.Arrays;
import java.util.List;
@ -26,7 +33,23 @@ public class CkBillServiceImpl extends ServiceImpl<CkBillDao, CkBill> implements
@Resource
private CkBillDao dao;
@Resource
private CkBillCargoService ckBillCargoService;
@Resource
private CkStockChangeService ckStockChangeService;
@Resource
private CkBillStockService ckBillStockService;
@Resource
private CkCargoStockService ckCargoStockService;
@Resource
private CmStockService cmStockService;
@Resource
private CmCustService cmCustService;
/**
*
*/
@ -38,5 +61,296 @@ public class CkBillServiceImpl extends ServiceImpl<CkBillDao, CkBill> implements
return dao.selectList(queryWrapper);
}
/**
*
* @param ckBill
* @return
* isRevocation true
*/
@Override
@Transactional(rollbackFor = Exception.class)
public CommonResult<String> warehouseWork(CkBill ckBill, Boolean isRevocation){
if(isRevocation){
return revocationStock(ckBill.getId());
}else{
return setCargoStock(ckBill);
}
}
/**
*
* @param id
* @return
*/
public CommonResult<String> revocationStock(Long id) {
// 不使用实体对象传递所有字段而是用UpdateWrapper指定要更新的字段
LambdaUpdateWrapper<CkBill> updateWrapperByCkBill = new LambdaUpdateWrapper<>();
// 条件根据id定位记录
updateWrapperByCkBill.eq(CkBill::getId, id);
// 只更新billStatus字段其他字段如vesselId完全不涉及
updateWrapperByCkBill.set(CkBill::getBillStatus, "0");
// 执行更新此时SQL中只会包含billStatus的更新vesselId无变化
this.update(updateWrapperByCkBill);
// CkBillCargo updateBillCargo = new CkBillCargo();
// updateBillCargo.setBillStatus("0");
LambdaQueryWrapper<CkBillCargo> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(CkBillCargo::getBillId,id);
// ckBillCargoService.update(updateBillCargo,wrapper);
// 不创建实体对象直接使用UpdateWrapper设置要更新的字段
LambdaUpdateWrapper<CkBillCargo> updateWrapper = new LambdaUpdateWrapper<>();
// 设置查询条件(与原逻辑一致)
updateWrapper.eq(CkBillCargo::getBillId, id);
// 只更新需要修改的字段bill_status
updateWrapper.set(CkBillCargo::getBillStatus, "0");
// 执行更新此时只会更新set方法指定的字段其他字段不受影响
ckBillCargoService.update(updateWrapper);
//删除入库记录
ckStockChangeService.remove(new LambdaQueryWrapper<CkStockChange>().eq(CkStockChange::getBillId,id));
//调回出库的库存
List<CkBillCargo> ckBillCargos = ckBillCargoService.list(wrapper);
for (int i = 0; i < ckBillCargos.size(); i++) {
CkBillCargo ckBillCargo = ckBillCargos.get(i);
//单据明细下出入库信息
LambdaQueryWrapper<CkBillStock> stockWapper = new LambdaQueryWrapper<>();
stockWapper.eq(CkBillStock::getBillCargoId,ckBillCargo.getId());
List<CkBillStock> ckBillStocks = ckBillStockService.list(stockWapper);
//入库
if(ckBillCargo.getInoutType().equals("1")){
//原入库操作,现直接删除入库记录
for (int i1 = 0; i1 < ckBillStocks.size(); i1++) {
CkBillStock ckBillStock = ckBillStocks.get(i1);
LambdaQueryWrapper<CkCargoStock> stockWrapper = new LambdaQueryWrapper<>();
stockWrapper.eq(CkCargoStock::getCustId,ckBillCargo.getCustId());
stockWrapper.eq(CkCargoStock::getCargoId,ckBillCargo.getCargoId());
stockWrapper.eq(CkCargoStock::getStockId,ckBillStock.getStockId());
stockWrapper.eq(CkCargoStock::getBillNumber,ckBillStock.getBillNumber());
CkCargoStock ckCargoStock = ckCargoStockService.getOne(stockWrapper);
if(ckCargoStock.getCargoNum().compareTo(ckBillStock.getCargoNum())==0&&
ckCargoStock.getCargoWt().compareTo(ckBillStock.getCargoWt())==0&&
ckCargoStock.getCargoVol().compareTo(ckBillStock.getCargoVol())==0){
//&&ckCargoStock.getCargoValue().compareTo(ckBillStock.getCargoValue())==0
ckCargoStockService.removeById(ckCargoStock);
}else{
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//手动回滚事务
return CommonResult.failed("数据已经被出库,不允许撤回操作");
}
}
}else{
//原出库操作,现加库存
ckBillStocks.forEach(ckBillStock->{
LambdaQueryWrapper<CkCargoStock> stockWrapper = new LambdaQueryWrapper<>();
stockWrapper.eq(CkCargoStock::getCustId,ckBillCargo.getCustId());
stockWrapper.eq(CkCargoStock::getCargoId,ckBillCargo.getCargoId());
stockWrapper.eq(CkCargoStock::getStockId,ckBillStock.getStockId());
stockWrapper.eq(CkCargoStock::getBillNumber,ckBillStock.getBillNumber());
CkCargoStock ckCargoStock = ckCargoStockService.getOne(stockWrapper);
ckCargoStock.setCargoNum(ckCargoStock.getCargoNum().add(ckBillStock.getCargoNum()));
ckCargoStock.setCargoWt(ckCargoStock.getCargoWt().add(ckBillStock.getCargoWt()));
ckCargoStock.setCargoVol(ckCargoStock.getCargoVol().add(ckBillStock.getCargoVol()));
ckCargoStock.setCargoValue(ckCargoStock.getCargoValue().add(ckBillStock.getCargoValue()));
ckCargoStockService.updateById(ckCargoStock);
});
}
}
return CommonResult.success();
}
/**
*
* @param ckBill
*/
public CommonResult<String> setCargoStock(CkBill ckBill){
ckBill.setBillStatus("1");
LambdaQueryWrapper<CkBillCargo> wapper = new LambdaQueryWrapper<>();
wapper.eq(CkBillCargo::getBillId,ckBill.getId());
//单据明细
List<CkBillCargo> ckBillCargos = ckBillCargoService.list(wapper);
for (int i = 0; i < ckBillCargos.size(); i++) {
CkBillCargo ckBillCargo = ckBillCargos.get(i);
ckBillCargo.setBillStatus("1");
//单据明细下出入库信息
LambdaQueryWrapper<CkBillStock> stockWapper = new LambdaQueryWrapper<>();
stockWapper.eq(CkBillStock::getBillCargoId,ckBillCargo.getId());
List<CkBillStock> ckBillStocks = ckBillStockService.list(stockWapper);
//入库
if(ckBillCargo.getInoutType().equals("1")){
ckBillStocks.forEach(ckBillStock->{
CkCargoStock inCargoStock = new CkCargoStock();
BeanUtils.copyProperties(ckBillCargo,inCargoStock,"id");
inCargoStock.setStockDate(ckBillCargo.getBillDate());
CmStock cmStock = cmStockService.getById(ckBillStock.getStockId());
inCargoStock.setStockId(cmStock.getId());
inCargoStock.setStockCode(cmStock.getStockCode());
inCargoStock.setStockName(cmStock.getStockName());
inCargoStock.setCargoNum(ckBillStock.getCargoNum());
inCargoStock.setCargoWt(ckBillStock.getCargoWt());
inCargoStock.setCargoVol(ckBillStock.getCargoVol());
inCargoStock.setCargoValue(ckBillStock.getCargoValue());
ckCargoStockService.save(inCargoStock);
saveChange(ckBillCargo,ckBillStock);
});
}else{
//出库
for (int j = 0; j < ckBillStocks.size(); j++) {
CkBillStock ckBillStock = ckBillStocks.get(j);
LambdaQueryWrapper<CkCargoStock> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(CkCargoStock::getCustId,ckBillCargo.getCustId());
wrapper.eq(CkCargoStock::getCargoId,ckBillCargo.getCargoId());
wrapper.eq(CkCargoStock::getStockId,ckBillStock.getStockId());
wrapper.eq(CkCargoStock::getBillNumber,ckBillStock.getBillNumber());
CkCargoStock ckCargoStock = ckCargoStockService.getOne(wrapper);
Boolean flag = false;
if(ckCargoStock.getCargoNum().compareTo(ckBillStock.getCargoNum())>=0){
flag = true;
ckCargoStock.setCargoNum(ckCargoStock.getCargoNum().subtract(ckBillStock.getCargoNum()));
}
if(ckCargoStock.getCargoWt().compareTo(ckBillStock.getCargoWt())>=0){
flag = true;
ckCargoStock.setCargoWt(ckCargoStock.getCargoWt().subtract(ckBillStock.getCargoWt()));
}
if(ckCargoStock.getCargoVol().compareTo(ckBillStock.getCargoVol())>=0){
flag = true;
ckCargoStock.setCargoVol(ckCargoStock.getCargoVol().subtract(ckBillStock.getCargoVol()));
}
if(ckCargoStock.getCargoValue().compareTo(ckBillStock.getCargoValue())>=0){
ckCargoStock.setCargoValue(ckCargoStock.getCargoValue().subtract(ckBillStock.getCargoValue()));
}
if(!flag){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//手动回滚事务
return CommonResult.failed("库存不足");
}
ckCargoStockService.updateById(ckCargoStock);
saveChange(ckBillCargo,ckBillStock);
}
}
}
this.updateById(ckBill);
ckBillCargoService.updateBatchById(ckBillCargos);
return CommonResult.success();
}
/**
*
* @param ckBill
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public CommonResult<String> putCargo(CkBill ckBill) {
//创建单据
ckBill.setBillType("1");
ckBill.setStatus("1");
ckBill.setBillStatus("0");
ckBill.setSourceType("1");
this.saveOrUpdate(ckBill);
List<CkBillCargo> ckBillCargos = ckBill.getCkBillCargos();
// 判断如果为空,去数据库中寻找相应数据
if (null == ckBillCargos || ckBillCargos.size() ==0) {
ckBillCargos = ckBillCargoService.list(new LambdaQueryWrapper<CkBillCargo>().eq(CkBillCargo::getBillId, ckBill.getId()));
}
Map<Long,CkBillStock> billStockMap = new HashMap<>();
ckBillCargos.forEach(ckBillCargo->{
ckBillCargo.setBillStatus("0");
//创建单据明细
ckBillCargo.setBillDate(ckBill.getBillDate());
ckBillCargo.setBillNumber(ckBill.getBillNumber());
ckBillCargo.setBillNo(ckBill.getBillNo());
ckBillCargo.setSourceType("1");
ckBillCargo.setInoutType(ckBill.getBillType());
//ckBillCargo.setVoyageNo("无");
//ckBillCargo.setVesselName("无");
CmCust cmCust =cmCustService.getById(ckBillCargo.getCustId());
ckBillCargo.setCustName(cmCust.getCustName());
ckBillCargo.setOpType("1");
ckBillCargo.setTradType("1");
ckBillCargo.setBillId(ckBill.getId());
ckBillCargo.setVesselId(ckBill.getVesselId());
ckBillCargo.setVesselName(ckBill.getVesselName());
ckBillCargo.setVoyageNo(ckBill.getVoyageNo());
CmStock cmStock = cmStockService.getById(ckBillCargo.getInStockId());
CkBillStock ckBillStock;
if(ckBillCargo.getId()!=null){
ckBillStock = ckBillStockService.getOne(new LambdaQueryWrapper<CkBillStock>().eq(CkBillStock::getBillCargoId,ckBillCargo.getId()));
}else{
ckBillStock = new CkBillStock();
}
ckBillCargoService.saveOrUpdate(ckBillCargo);
ckBillStock.setInoutType("1");
ckBillStock.setStockId(cmStock.getId());
ckBillStock.setStockName(cmStock.getStockName());
ckBillStock.setStockCode(cmStock.getStockCode());
ckBillStock.setBillNumber(ckBillCargo.getBillNumber());
ckBillStock.setCargoNum(ckBillCargo.getCargoNum());
ckBillStock.setCargoWt(ckBillCargo.getCargoWt());
ckBillStock.setCargoVol(ckBillCargo.getCargoVol());
ckBillStock.setCargoValue(ckBillCargo.getCargoValue());
ckBillStock.setBillCargoId(ckBillCargo.getId());
ckBillStockService.saveOrUpdate(ckBillStock);
billStockMap.put(ckBillCargo.getId(),ckBillStock);
});
//这里需要出入库记录
if(ckBill.getSubmitStatus()){
return warehouseWork(ckBill,false);
}
return CommonResult.success();
}
/**
*
* @param ckBillCargo
* ckBillCargo
* @param ckBillStock
*/
@Override
public void saveChange(CkBillCargo ckBillCargo, CkBillStock ckBillStock){
//查询这个货主,这个商品,这个仓库下剩余量
QueryWrapper<CkCargoStock> countWapper = new QueryWrapper<>();
countWapper.select(" SUM(cargo_num) AS cargo_num,SUM(cargo_wt) AS cargo_wt,SUM(cargo_vol) AS cargo_vol,SUM(cargo_value) AS cargo_value").lambda().
eq(CkCargoStock::getCustId,ckBillCargo.getCustId()).
eq(CkCargoStock::getCargoId,ckBillCargo.getCargoId()).
eq(CkCargoStock::getStockId,ckBillStock.getStockId());
CkCargoStock countStock = ckCargoStockService.getOne(countWapper);
//第一次入库的时候会空指针
if(countStock==null){
countStock = new CkCargoStock();
countStock.setCargoNum(new BigDecimal(0));
countStock.setCargoWt(new BigDecimal(0));
countStock.setCargoVol(new BigDecimal(0));
countStock.setCargoValue(new BigDecimal(0));
}
CkStockChange ckStockChange = new CkStockChange();
BeanUtils.copyProperties(ckBillCargo,ckStockChange,"id");
ckStockChange.setChangeType(ckBillCargo.getInoutType());
CmStock cmStock = cmStockService.getById(ckBillStock.getStockId());
ckStockChange.setStockId(cmStock.getId());
ckStockChange.setStockName(cmStock.getStockName());
ckStockChange.setBeforeNum(countStock.getCargoNum());
ckStockChange.setBeforeWt(countStock.getCargoWt());
ckStockChange.setBeforeVol(countStock.getCargoVol());
ckStockChange.setBeforeValue(countStock.getCargoValue());
ckStockChange.setChangeNum(ckBillStock.getCargoNum());
ckStockChange.setChangeWt(ckBillStock.getCargoWt());
ckStockChange.setChangeVol(ckBillStock.getCargoVol());
ckStockChange.setChangeValue(ckBillStock.getCargoValue());
ckStockChange.setChangeDate(ckBillCargo.getBillDate());
//出库
if(ckBillCargo.getInoutType().equals("2")){
ckStockChange.setAfterNum(ckStockChange.getBeforeNum().subtract(ckBillStock.getCargoNum()));
ckStockChange.setAfterWt(ckStockChange.getBeforeWt().subtract(ckBillStock.getCargoWt()));
ckStockChange.setAfterVol(ckStockChange.getBeforeVol().subtract(ckBillStock.getCargoVol()));
ckStockChange.setAfterValue(ckStockChange.getBeforeValue().subtract(ckBillStock.getCargoValue()));
}else{
//入库
ckStockChange.setAfterNum(ckBillStock.getCargoNum().add(ckStockChange.getBeforeNum()));
ckStockChange.setAfterWt(ckBillStock.getCargoWt().add(ckStockChange.getBeforeWt()));
ckStockChange.setAfterVol(ckBillStock.getCargoVol().add(ckStockChange.getBeforeVol()));
ckStockChange.setAfterValue(ckBillStock.getCargoValue().add(ckStockChange.getBeforeValue()));
}
ckStockChangeService.save(ckStockChange);
}
}

@ -0,0 +1,42 @@
package com.zbkj.modules.autogencode.service.impl;
import com.github.pagehelper.PageHelper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import com.zbkj.modules.autogencode.dao.CkBillStockDao;
import com.zbkj.modules.autogencode.entity.CkBillStock;
import com.zbkj.modules.autogencode.service.CkBillStockService;
import com.zbkj.common.page.CommonPage;
import com.zbkj.common.request.PageParamRequest;
import javax.annotation.Resource;
import java.util.Map;
import java.util.Arrays;
import java.util.List;
@Service("ckBillStockService")
public class CkBillStockServiceImpl extends ServiceImpl<CkBillStockDao, CkBillStock> implements CkBillStockService {
@Resource
private CkBillStockDao dao;
/**
*
*/
@Override
public List<CkBillStock> pageList(LambdaQueryWrapper<CkBillStock> queryWrapper, PageParamRequest pageParamRequest) {
PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit());
return dao.selectList(queryWrapper);
}
}

@ -0,0 +1,42 @@
package com.zbkj.modules.autogencode.service.impl;
import com.github.pagehelper.PageHelper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import com.zbkj.modules.autogencode.dao.CkStockChangeDao;
import com.zbkj.modules.autogencode.entity.CkStockChange;
import com.zbkj.modules.autogencode.service.CkStockChangeService;
import com.zbkj.common.page.CommonPage;
import com.zbkj.common.request.PageParamRequest;
import javax.annotation.Resource;
import java.util.Map;
import java.util.Arrays;
import java.util.List;
@Service("ckStockChangeService")
public class CkStockChangeServiceImpl extends ServiceImpl<CkStockChangeDao, CkStockChange> implements CkStockChangeService {
@Resource
private CkStockChangeDao dao;
/**
*
*/
@Override
public List<CkStockChange> pageList(LambdaQueryWrapper<CkStockChange> queryWrapper, PageParamRequest pageParamRequest) {
PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit());
return dao.selectList(queryWrapper);
}
}

@ -0,0 +1,29 @@
<?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.zbkj.modules.autogencode.dao.CkBillStockDao">
<!-- 根据包名 模块名 以及类名 生成Mapper XML 配置文件 -->
<resultMap type="com.zbkj.modules.autogencode.entity.CkBillStock" id="ckBillStockMap">
<result property="id" column="id"/>
<result property="billCargoId" column="bill_cargo_id"/>
<result property="inoutType" column="inout_type"/>
<result property="stockId" column="stock_id"/>
<result property="stockCode" column="stock_code"/>
<result property="stockName" column="stock_name"/>
<result property="billNumber" column="bill_number"/>
<result property="cargoValue" column="cargo_value"/>
<result property="cargoNum" column="cargo_num"/>
<result property="cargoWt" column="cargo_wt"/>
<result property="cargoVol" column="cargo_vol"/>
<result property="delFlag" column="del_flag"/>
<result property="createDept" column="create_dept"/>
<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="tenantId" column="tenant_id"/>
</resultMap>
</mapper>

@ -0,0 +1,43 @@
<?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.zbkj.modules.autogencode.dao.CkStockChangeDao">
<!-- 根据包名 模块名 以及类名 生成Mapper XML 配置文件 -->
<resultMap type="com.zbkj.modules.autogencode.entity.CkStockChange" id="ckStockChangeMap">
<result property="id" column="id"/>
<result property="custId" column="cust_id"/>
<result property="changeType" column="change_type"/>
<result property="cargoId" column="cargo_id"/>
<result property="hsCode" column="hs_code"/>
<result property="cargoName" column="cargo_name"/>
<result property="stockId" column="stock_id"/>
<result property="stockName" column="stock_name"/>
<result property="billNo" column="bill_no"/>
<result property="billId" column="bill_id"/>
<result property="stockCode" column="stock_code"/>
<result property="changeNum" column="change_num"/>
<result property="beforeNum" column="before_num"/>
<result property="afterNum" column="after_num"/>
<result property="changeWt" column="change_wt"/>
<result property="beforeWt" column="before_wt"/>
<result property="afterWt" column="after_wt"/>
<result property="changeVol" column="change_vol"/>
<result property="beforeVol" column="before_vol"/>
<result property="afterVol" column="after_vol"/>
<result property="changeValue" column="change_value"/>
<result property="beforeValue" column="before_value"/>
<result property="afterValue" column="after_value"/>
<result property="changeDate" column="change_date"/>
<result property="remark" column="remark"/>
<result property="delFlag" column="del_flag"/>
<result property="createDept" column="create_dept"/>
<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="tenantId" column="tenant_id"/>
</resultMap>
</mapper>
Loading…
Cancel
Save