From f71a1086412fd56e0e06427b6370a704266f96a9 Mon Sep 17 00:00:00 2001
From: zxf <1532322479@qq.com>
Date: Fri, 13 Feb 2026 09:10:00 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E5=85=A5=E5=BA=93?=
=?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
admin/src/api/ckbill.js | 17 +
admin/src/api/ckbillcargo.js | 15 +
admin/src/api/ckbillstock.js | 63 +++
admin/src/api/ckstockchange.js | 63 +++
admin/src/api/cmwarehouse.js | 13 +
.../bill/stock/ckbillstock-add-and-update.vue | 135 +++++
admin/src/views/ck/bill/stock/index.vue | 324 ++++++++++++
.../ckwarehouse/components/BillEdit/index.vue | 8 +-
admin/src/views/ck/ckwarehouse/index.vue | 19 +-
.../change/ckstockchange-add-and-update.vue | 233 +++++++++
admin/src/views/ck/stock/change/index.vue | 492 ++++++++++++++++++
.../controller/CkBillCargoController.java | 22 +-
.../controller/CkBillController.java | 115 +++-
.../controller/CkBillStockController.java | 203 ++++++++
.../controller/CkStockChangeController.java | 273 ++++++++++
.../controller/CmWarehouseController.java | 16 +
.../autogencode/dao/CkBillStockDao.java | 13 +
.../autogencode/dao/CkStockChangeDao.java | 13 +
.../modules/autogencode/entity/CkBill.java | 58 +++
.../autogencode/entity/CkBillCargo.java | 99 ++++
.../autogencode/entity/CkBillStock.java | 110 ++++
.../autogencode/entity/CkStockChange.java | 180 +++++++
.../autogencode/service/CkBillService.java | 15 +
.../service/CkBillStockService.java | 25 +
.../service/CkStockChangeService.java | 25 +
.../service/impl/CkBillServiceImpl.java | 322 +++++++++++-
.../service/impl/CkBillStockServiceImpl.java | 42 ++
.../impl/CkStockChangeServiceImpl.java | 42 ++
.../mapper/autogencode/CkBillStockDao.xml | 29 ++
.../mapper/autogencode/CkStockChangeDao.xml | 43 ++
30 files changed, 3005 insertions(+), 22 deletions(-)
create mode 100644 admin/src/api/ckbillstock.js
create mode 100644 admin/src/api/ckstockchange.js
create mode 100644 admin/src/views/ck/bill/stock/ckbillstock-add-and-update.vue
create mode 100644 admin/src/views/ck/bill/stock/index.vue
create mode 100644 admin/src/views/ck/stock/change/ckstockchange-add-and-update.vue
create mode 100644 admin/src/views/ck/stock/change/index.vue
create mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkBillStockController.java
create mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkStockChangeController.java
create mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/dao/CkBillStockDao.java
create mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/dao/CkStockChangeDao.java
create mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/CkBillStock.java
create mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/CkStockChange.java
create mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/CkBillStockService.java
create mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/CkStockChangeService.java
create mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/CkBillStockServiceImpl.java
create mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/CkStockChangeServiceImpl.java
create mode 100644 crmeb/crmeb-admin/src/main/resources/mapper/autogencode/CkBillStockDao.xml
create mode 100644 crmeb/crmeb-admin/src/main/resources/mapper/autogencode/CkStockChangeDao.xml
diff --git a/admin/src/api/ckbill.js b/admin/src/api/ckbill.js
index 2eccedd..1878553 100644
--- a/admin/src/api/ckbill.js
+++ b/admin/src/api/ckbill.js
@@ -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
+ })
+}
+
diff --git a/admin/src/api/ckbillcargo.js b/admin/src/api/ckbillcargo.js
index 10efaef..79c8e3c 100644
--- a/admin/src/api/ckbillcargo.js
+++ b/admin/src/api/ckbillcargo.js
@@ -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'
+ })
+}
+
+
diff --git a/admin/src/api/ckbillstock.js b/admin/src/api/ckbillstock.js
new file mode 100644
index 0000000..729de60
--- /dev/null
+++ b/admin/src/api/ckbillstock.js
@@ -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
+ })
+}
+
diff --git a/admin/src/api/ckstockchange.js b/admin/src/api/ckstockchange.js
new file mode 100644
index 0000000..08a808b
--- /dev/null
+++ b/admin/src/api/ckstockchange.js
@@ -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
+ })
+}
+
diff --git a/admin/src/api/cmwarehouse.js b/admin/src/api/cmwarehouse.js
index 4782823..a0f971d 100644
--- a/admin/src/api/cmwarehouse.js
+++ b/admin/src/api/cmwarehouse.js
@@ -61,3 +61,16 @@ export function cmwarehouseListApi(params) {
})
}
+
+/**
+ * cmwarehouse列表
+ * @param pram
+ */
+export function listWarehouse(params) {
+ return request({
+ url: `autogencode/cmwarehouse/listByAll`,
+ method: 'GET',
+ params
+ })
+}
+
diff --git a/admin/src/views/ck/bill/stock/ckbillstock-add-and-update.vue b/admin/src/views/ck/bill/stock/ckbillstock-add-and-update.vue
new file mode 100644
index 0000000..a579687
--- /dev/null
+++ b/admin/src/views/ck/bill/stock/ckbillstock-add-and-update.vue
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/admin/src/views/ck/bill/stock/index.vue b/admin/src/views/ck/bill/stock/index.vue
new file mode 100644
index 0000000..575d047
--- /dev/null
+++ b/admin/src/views/ck/bill/stock/index.vue
@@ -0,0 +1,324 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+ 重置
+ 新增数据
+ 批量删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ '修改' }}
+ 删除
+
+
+
+
+
+
+
+
+
+
+
diff --git a/admin/src/views/ck/ckwarehouse/components/BillEdit/index.vue b/admin/src/views/ck/ckwarehouse/components/BillEdit/index.vue
index 74f1a54..7ddb09c 100644
--- a/admin/src/views/ck/ckwarehouse/components/BillEdit/index.vue
+++ b/admin/src/views/ck/ckwarehouse/components/BillEdit/index.vue
@@ -258,11 +258,11 @@
diff --git a/admin/src/views/ck/stock/change/index.vue b/admin/src/views/ck/stock/change/index.vue
new file mode 100644
index 0000000..60c236f
--- /dev/null
+++ b/admin/src/views/ck/stock/change/index.vue
@@ -0,0 +1,492 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+ 重置
+ 新增数据
+ 批量删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ '修改' }}
+ 删除
+
+
+
+
+
+
+
+
+
+
+
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkBillCargoController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkBillCargoController.java
index 708a34a..717ad57 100644
--- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkBillCargoController.java
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkBillCargoController.java
@@ -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 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);
+ }
+
/**
* 详情数据
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkBillController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkBillController.java
index 5f82e02..10b4d97 100644
--- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkBillController.java
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkBillController.java
@@ -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> stockPageList(@Validated CkBill ckBill, @Validated PageParamRequest pageParamRequest) {
+ LambdaQueryWrapper 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 page = CommonPage.restPage(ckBillService.pageList(queryWrapper, pageParamRequest));
+ return CommonResult.success(page);
+ }
+
+ /**
+ * 新增货物入库单据(生成入库信息)
+ */
+ @ApiOperation("新增货物入库单据")
+ @PostMapping("/putBill")
+ public CommonResult putBill(@RequestBody CkBill ckBill) {
+ CommonResult ajaxResult = verifyPutBill(ckBill);
+
+ if (ajaxResult.getCode() != ExceptionCodeEnum.SUCCESS.getCode()) {
+ return ajaxResult;
+ }
+ List 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 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 verifyPutBill(CkBill ckBill) {
+ if (StringUtils.isEmpty(ckBill.getBillNumber())) {
+ return CommonResult.failed("单据编号不能为空");
+ }
+ CkBill tmpCkBill = ckBillService.getOne(new LambdaQueryWrapper().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 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();
+ }
+
+
/**
* 详情数据
@@ -245,4 +356,4 @@ public class CkBillController {
return CommonResult.failed();
}
-}
+}
\ No newline at end of file
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkBillStockController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkBillStockController.java
new file mode 100644
index 0000000..912b124
--- /dev/null
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkBillStockController.java
@@ -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 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> getList(@Validated CkBillStock request, @Validated PageParamRequest pageParamRequest) {
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
+
+ // 应用搜索条件
+ condition(queryWrapper, request);
+
+ CommonPage page = CommonPage.restPage(ckBillStockService.pageList(queryWrapper, pageParamRequest));
+ return CommonResult.success(page);
+ }
+
+
+ /**
+ * 详情数据
+ */
+ @RequestMapping(value = "/info/{id}", method = RequestMethod.GET)
+ public CommonResult info(@PathVariable("id") Long id){
+ CkBillStock ckBillStock = ckBillStockService.getById(id);
+
+ return CommonResult.success(ckBillStock);
+ }
+
+ /**
+ * 新增数据
+ */
+ @RequestMapping(value = "/save", method = RequestMethod.POST)
+ public CommonResult save(@RequestBody CkBillStock ckBillStock){
+ if (ckBillStockService.save(ckBillStock)) {
+ return CommonResult.success();
+ }
+ return CommonResult.failed();
+ }
+
+ /**
+ * 修改数据
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ public CommonResult update(@RequestBody CkBillStock ckBillStock){
+ if (ckBillStockService.updateById(ckBillStock)) {
+ return CommonResult.success();
+ }
+ return CommonResult.failed();
+ }
+
+ /**
+ * 删除:根据id集合
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ public CommonResult delete(@RequestBody Long[] ids){
+ if (ckBillStockService.removeByIds(Arrays.asList(ids))) {
+ return CommonResult.success();
+ }
+ return CommonResult.failed();
+ }
+
+}
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkStockChangeController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkStockChangeController.java
new file mode 100644
index 0000000..ba92d2d
--- /dev/null
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CkStockChangeController.java
@@ -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 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> getList(@Validated CkStockChange request, @Validated PageParamRequest pageParamRequest) {
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
+
+ // 应用搜索条件
+ condition(queryWrapper, request);
+
+ CommonPage page = CommonPage.restPage(ckStockChangeService.pageList(queryWrapper, pageParamRequest));
+ return CommonResult.success(page);
+ }
+
+
+ /**
+ * 详情数据
+ */
+ @RequestMapping(value = "/info/{id}", method = RequestMethod.GET)
+ public CommonResult info(@PathVariable("id") Long id){
+ CkStockChange ckStockChange = ckStockChangeService.getById(id);
+
+ return CommonResult.success(ckStockChange);
+ }
+
+ /**
+ * 新增数据
+ */
+ @RequestMapping(value = "/save", method = RequestMethod.POST)
+ public CommonResult save(@RequestBody CkStockChange ckStockChange){
+ if (ckStockChangeService.save(ckStockChange)) {
+ return CommonResult.success();
+ }
+ return CommonResult.failed();
+ }
+
+ /**
+ * 修改数据
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ public CommonResult update(@RequestBody CkStockChange ckStockChange){
+ if (ckStockChangeService.updateById(ckStockChange)) {
+ return CommonResult.success();
+ }
+ return CommonResult.failed();
+ }
+
+ /**
+ * 删除:根据id集合
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ public CommonResult delete(@RequestBody Long[] ids){
+ if (ckStockChangeService.removeByIds(Arrays.asList(ids))) {
+ return CommonResult.success();
+ }
+ return CommonResult.failed();
+ }
+
+}
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CmWarehouseController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CmWarehouseController.java
index cf1ff97..fea7444 100644
--- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CmWarehouseController.java
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/CmWarehouseController.java
@@ -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 listByAll(@Validated CmWarehouse request, @Validated PageParamRequest pageParamRequest) {
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
+ // 应用搜索条件
+ condition(queryWrapper, request);
+ List cmWarehouses = cmWarehouseService.list(queryWrapper);
+ return cmWarehouses;
+ }
+
/**
* 详情数据
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/dao/CkBillStockDao.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/dao/CkBillStockDao.java
new file mode 100644
index 0000000..21b9e50
--- /dev/null
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/dao/CkBillStockDao.java
@@ -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 {
+
+}
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/dao/CkStockChangeDao.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/dao/CkStockChangeDao.java
new file mode 100644
index 0000000..64536fe
--- /dev/null
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/dao/CkStockChangeDao.java
@@ -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 {
+
+}
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/CkBill.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/CkBill.java
index 7936a41..bb23fb6 100644
--- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/CkBill.java
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/CkBill.java
@@ -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 oldCargos;
+
+ /**
+ * 新货物,
+ * 库存id,扣除数量(用在混配矿)
+ */
+ @TableField(exist = false)
+ private List newCargos;
+ /**
+ * 前
+ * (用在转场)
+ */
+ @TableField(exist = false)
+ private CkBillStock oldCargo;
+
+ @TableField(exist = false)
+ private CkBillCargo ckBillCargo;
+
+
+ @TableField(exist = false)
+ private List ckBillStocks;
+ @TableField(exist = false)
+ private List 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;
+
}
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/CkBillCargo.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/CkBillCargo.java
index ad5bc13..364002d 100644
--- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/CkBillCargo.java
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/CkBillCargo.java
@@ -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 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 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;
+
+
+
+
}
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/CkBillStock.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/CkBillStock.java
new file mode 100644
index 0000000..7df78d0
--- /dev/null
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/CkBillStock.java
@@ -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;
+
+}
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/CkStockChange.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/CkStockChange.java
new file mode 100644
index 0000000..d783532
--- /dev/null
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/CkStockChange.java
@@ -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;
+
+}
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/CkBillService.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/CkBillService.java
index 72e9507..04f1f40 100644
--- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/CkBillService.java
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/CkBillService.java
@@ -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 {
* @return
*/
List pageList(LambdaQueryWrapper queryWrapper, PageParamRequest pageParamRequest);
+
+ public CommonResult warehouseWork(CkBill ckBill, Boolean isRevocation);
+
+ public void saveChange(CkBillCargo ckBillCargo, CkBillStock ckBillStock);
+
+ /**
+ * 货物入库
+ *
+ * @param ckBill
+ * @return
+ */
+ public CommonResult putCargo(CkBill ckBill);
}
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/CkBillStockService.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/CkBillStockService.java
new file mode 100644
index 0000000..0463787
--- /dev/null
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/CkBillStockService.java
@@ -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 列表查询
+ * @param pageParamRequest 分页参数对象
+ * @return
+ */
+ List pageList(LambdaQueryWrapper queryWrapper, PageParamRequest pageParamRequest);
+}
+
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/CkStockChangeService.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/CkStockChangeService.java
new file mode 100644
index 0000000..fc19a6f
--- /dev/null
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/CkStockChangeService.java
@@ -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 列表查询
+ * @param pageParamRequest 分页参数对象
+ * @return
+ */
+ List pageList(LambdaQueryWrapper queryWrapper, PageParamRequest pageParamRequest);
+}
+
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/CkBillServiceImpl.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/CkBillServiceImpl.java
index c55628b..63f99a0 100644
--- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/CkBillServiceImpl.java
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/CkBillServiceImpl.java
@@ -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 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;
/**
* 带分页参数的列表查询实现
*/
@@ -37,6 +60,297 @@ public class CkBillServiceImpl extends ServiceImpl implements
return dao.selectList(queryWrapper);
}
-
+
+ /**
+ * 出入库对操作
+ * @param ckBill
+ * @return
+ * isRevocation 是否撤回操作 true 撤回
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public CommonResult warehouseWork(CkBill ckBill, Boolean isRevocation){
+ if(isRevocation){
+ return revocationStock(ckBill.getId());
+ }else{
+ return setCargoStock(ckBill);
+ }
+ }
+
+ /**
+ * 货物出库(撤回)
+ * @param id
+ * @return
+ */
+ public CommonResult revocationStock(Long id) {
+ // 不使用实体对象传递所有字段,而是用UpdateWrapper指定要更新的字段
+ LambdaUpdateWrapper 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 wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(CkBillCargo::getBillId,id);
+// ckBillCargoService.update(updateBillCargo,wrapper);
+ // 不创建实体对象,直接使用UpdateWrapper设置要更新的字段
+ LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>();
+ // 设置查询条件(与原逻辑一致)
+ updateWrapper.eq(CkBillCargo::getBillId, id);
+ // 只更新需要修改的字段(bill_status)
+ updateWrapper.set(CkBillCargo::getBillStatus, "0");
+
+ // 执行更新(此时只会更新set方法指定的字段,其他字段不受影响)
+ ckBillCargoService.update(updateWrapper);
+ //删除入库记录
+ ckStockChangeService.remove(new LambdaQueryWrapper().eq(CkStockChange::getBillId,id));
+ //调回出库的库存
+ List ckBillCargos = ckBillCargoService.list(wrapper);
+ for (int i = 0; i < ckBillCargos.size(); i++) {
+ CkBillCargo ckBillCargo = ckBillCargos.get(i);
+ //单据明细下出入库信息
+ LambdaQueryWrapper stockWapper = new LambdaQueryWrapper<>();
+ stockWapper.eq(CkBillStock::getBillCargoId,ckBillCargo.getId());
+ List ckBillStocks = ckBillStockService.list(stockWapper);
+ //入库
+ if(ckBillCargo.getInoutType().equals("1")){
+ //原入库操作,现直接删除入库记录
+ for (int i1 = 0; i1 < ckBillStocks.size(); i1++) {
+ CkBillStock ckBillStock = ckBillStocks.get(i1);
+ LambdaQueryWrapper 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 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 setCargoStock(CkBill ckBill){
+ ckBill.setBillStatus("1");
+ LambdaQueryWrapper wapper = new LambdaQueryWrapper<>();
+ wapper.eq(CkBillCargo::getBillId,ckBill.getId());
+ //单据明细
+ List ckBillCargos = ckBillCargoService.list(wapper);
+ for (int i = 0; i < ckBillCargos.size(); i++) {
+ CkBillCargo ckBillCargo = ckBillCargos.get(i);
+ ckBillCargo.setBillStatus("1");
+ //单据明细下出入库信息
+ LambdaQueryWrapper stockWapper = new LambdaQueryWrapper<>();
+ stockWapper.eq(CkBillStock::getBillCargoId,ckBillCargo.getId());
+ List 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 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 putCargo(CkBill ckBill) {
+ //创建单据
+ ckBill.setBillType("1");
+ ckBill.setStatus("1");
+ ckBill.setBillStatus("0");
+ ckBill.setSourceType("1");
+ this.saveOrUpdate(ckBill);
+ List ckBillCargos = ckBill.getCkBillCargos();
+ // 判断如果为空,去数据库中寻找相应数据
+ if (null == ckBillCargos || ckBillCargos.size() ==0) {
+ ckBillCargos = ckBillCargoService.list(new LambdaQueryWrapper().eq(CkBillCargo::getBillId, ckBill.getId()));
+ }
+ Map 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().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 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);
+ }
+
+
}
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/CkBillStockServiceImpl.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/CkBillStockServiceImpl.java
new file mode 100644
index 0000000..bb29e45
--- /dev/null
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/CkBillStockServiceImpl.java
@@ -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 implements CkBillStockService {
+
+
+ @Resource
+ private CkBillStockDao dao;
+
+
+ /**
+ * 带分页参数的列表查询实现
+ */
+ @Override
+ public List pageList(LambdaQueryWrapper queryWrapper, PageParamRequest pageParamRequest) {
+
+ PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit());
+
+ return dao.selectList(queryWrapper);
+ }
+
+
+}
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/CkStockChangeServiceImpl.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/CkStockChangeServiceImpl.java
new file mode 100644
index 0000000..48be4e0
--- /dev/null
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/service/impl/CkStockChangeServiceImpl.java
@@ -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 implements CkStockChangeService {
+
+
+ @Resource
+ private CkStockChangeDao dao;
+
+
+ /**
+ * 带分页参数的列表查询实现
+ */
+ @Override
+ public List pageList(LambdaQueryWrapper queryWrapper, PageParamRequest pageParamRequest) {
+
+ PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit());
+
+ return dao.selectList(queryWrapper);
+ }
+
+
+}
diff --git a/crmeb/crmeb-admin/src/main/resources/mapper/autogencode/CkBillStockDao.xml b/crmeb/crmeb-admin/src/main/resources/mapper/autogencode/CkBillStockDao.xml
new file mode 100644
index 0000000..c3c6de5
--- /dev/null
+++ b/crmeb/crmeb-admin/src/main/resources/mapper/autogencode/CkBillStockDao.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/crmeb/crmeb-admin/src/main/resources/mapper/autogencode/CkStockChangeDao.xml b/crmeb/crmeb-admin/src/main/resources/mapper/autogencode/CkStockChangeDao.xml
new file mode 100644
index 0000000..43502a5
--- /dev/null
+++ b/crmeb/crmeb-admin/src/main/resources/mapper/autogencode/CkStockChangeDao.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+