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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +