From ffd8eebe60863df643a83dd657d755f630053436 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 26 Sep 2025 14:21:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=96=B0=E5=A2=9E=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E6=94=B6=E6=94=AF=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增其他收支实体类WmsOtherIncome及其相关VO、BO类 - 实现其他收支的增删改查接口IWmsOtherIncomeService - 添加其他收支控制器WmsOtherIncomeController支持RESTful请求 - 配置MyBatis映射文件及Mapper接口支持数据库操作 - 在应付和应收业务中增加时间范围筛选字段和逻辑 --- .../controller/WmsOtherIncomeController.java | 99 +++++++++++++++ .../java/com/klp/domain/WmsOtherIncome.java | 60 ++++++++++ .../com/klp/domain/bo/WmsOtherIncomeBo.java | 59 +++++++++ .../java/com/klp/domain/bo/WmsPayableBo.java | 5 + .../com/klp/domain/bo/WmsReceivableBo.java | 6 + .../com/klp/domain/vo/WmsOtherIncomeVo.java | 69 +++++++++++ .../com/klp/mapper/WmsOtherIncomeMapper.java | 15 +++ .../klp/service/IWmsOtherIncomeService.java | 49 ++++++++ .../impl/WmsOtherIncomeServiceImpl.java | 113 ++++++++++++++++++ .../service/impl/WmsPayableServiceImpl.java | 4 + .../impl/WmsReceivableServiceImpl.java | 4 + .../mapper/klp/WmsOtherIncomeMapper.xml | 23 ++++ 12 files changed, 506 insertions(+) create mode 100644 klp-wms/src/main/java/com/klp/controller/WmsOtherIncomeController.java create mode 100644 klp-wms/src/main/java/com/klp/domain/WmsOtherIncome.java create mode 100644 klp-wms/src/main/java/com/klp/domain/bo/WmsOtherIncomeBo.java create mode 100644 klp-wms/src/main/java/com/klp/domain/vo/WmsOtherIncomeVo.java create mode 100644 klp-wms/src/main/java/com/klp/mapper/WmsOtherIncomeMapper.java create mode 100644 klp-wms/src/main/java/com/klp/service/IWmsOtherIncomeService.java create mode 100644 klp-wms/src/main/java/com/klp/service/impl/WmsOtherIncomeServiceImpl.java create mode 100644 klp-wms/src/main/resources/mapper/klp/WmsOtherIncomeMapper.xml diff --git a/klp-wms/src/main/java/com/klp/controller/WmsOtherIncomeController.java b/klp-wms/src/main/java/com/klp/controller/WmsOtherIncomeController.java new file mode 100644 index 00000000..634151eb --- /dev/null +++ b/klp-wms/src/main/java/com/klp/controller/WmsOtherIncomeController.java @@ -0,0 +1,99 @@ +package com.klp.controller; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.annotation.Log; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.core.validate.EditGroup; +import com.klp.common.enums.BusinessType; +import com.klp.common.utils.poi.ExcelUtil; +import com.klp.domain.vo.WmsOtherIncomeVo; +import com.klp.domain.bo.WmsOtherIncomeBo; +import com.klp.service.IWmsOtherIncomeService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 其他收支 + * + * @author Joshi + * @date 2025-09-26 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/klp/otherIncome") +public class WmsOtherIncomeController extends BaseController { + + private final IWmsOtherIncomeService iWmsOtherIncomeService; + + /** + * 查询其他收支列表 + */ + @GetMapping("/list") + public TableDataInfo list(WmsOtherIncomeBo bo, PageQuery pageQuery) { + return iWmsOtherIncomeService.queryPageList(bo, pageQuery); + } + + /** + * 导出其他收支列表 + */ + @Log(title = "其他收支", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(WmsOtherIncomeBo bo, HttpServletResponse response) { + List list = iWmsOtherIncomeService.queryList(bo); + ExcelUtil.exportExcel(list, "其他收支", WmsOtherIncomeVo.class, response); + } + + /** + * 获取其他收支详细信息 + * + * @param otherIncomeId 主键 + */ + @GetMapping("/{otherIncomeId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long otherIncomeId) { + return R.ok(iWmsOtherIncomeService.queryById(otherIncomeId)); + } + + /** + * 新增其他收支 + */ + @Log(title = "其他收支", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody WmsOtherIncomeBo bo) { + return toAjax(iWmsOtherIncomeService.insertByBo(bo)); + } + + /** + * 修改其他收支 + */ + @Log(title = "其他收支", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody WmsOtherIncomeBo bo) { + return toAjax(iWmsOtherIncomeService.updateByBo(bo)); + } + + /** + * 删除其他收支 + * + * @param otherIncomeIds 主键串 + */ + @Log(title = "其他收支", businessType = BusinessType.DELETE) + @DeleteMapping("/{otherIncomeIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] otherIncomeIds) { + return toAjax(iWmsOtherIncomeService.deleteWithValidByIds(Arrays.asList(otherIncomeIds), true)); + } +} diff --git a/klp-wms/src/main/java/com/klp/domain/WmsOtherIncome.java b/klp-wms/src/main/java/com/klp/domain/WmsOtherIncome.java new file mode 100644 index 00000000..e5cb62ea --- /dev/null +++ b/klp-wms/src/main/java/com/klp/domain/WmsOtherIncome.java @@ -0,0 +1,60 @@ +package com.klp.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 其他收支对象 wms_other_income + * + * @author Joshi + * @date 2025-09-26 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("wms_other_income") +public class WmsOtherIncome extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 其他收入ID(主键) + */ + @TableId(value = "other_income_id") + private Long otherIncomeId; + /** + * 日期 + */ + private Date incomeDate; + /** + * 类型 + */ + private String incomeType; + /** + * 金额 + */ + private BigDecimal amount; + /** + * 来源 + */ + private String source; + /** + * 收支类型(0=收入,1=值出) + */ + private Long type; + /** + * 备注 + */ + private String remark; + /** + * 删除标志(0=正常,1=已删除) + */ + @TableLogic + private Integer delFlag; + +} diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsOtherIncomeBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsOtherIncomeBo.java new file mode 100644 index 00000000..108561a6 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsOtherIncomeBo.java @@ -0,0 +1,59 @@ +package com.klp.domain.bo; + +import com.klp.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 其他收支业务对象 wms_other_income + * + * @author Joshi + * @date 2025-09-26 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class WmsOtherIncomeBo extends BaseEntity { + + /** + * 其他收入ID(主键) + */ + private Long otherIncomeId; + + /** + * 日期 + */ + private Date incomeDate; + + /** + * 类型 + */ + private String incomeType; + + /** + * 金额 + */ + private BigDecimal amount; + + /** + * 来源 + */ + private String source; + + /** + * 收支类型(0=收入,1=值出) + */ + private Long type; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsPayableBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsPayableBo.java index 492a688d..a501de9a 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsPayableBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsPayableBo.java @@ -67,5 +67,10 @@ public class WmsPayableBo extends BaseEntity { */ private String remark; + //时间范围筛选 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endTime; } diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsReceivableBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsReceivableBo.java index 199ffee2..bd874855 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsReceivableBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsReceivableBo.java @@ -67,5 +67,11 @@ public class WmsReceivableBo extends BaseEntity { */ private String remark; + //时间范围筛选 + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endTime; + } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsOtherIncomeVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsOtherIncomeVo.java new file mode 100644 index 00000000..35a2f0dd --- /dev/null +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsOtherIncomeVo.java @@ -0,0 +1,69 @@ +package com.klp.domain.vo; + +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.klp.common.annotation.ExcelDictFormat; +import com.klp.common.convert.ExcelDictConvert; +import lombok.Data; + + +/** + * 其他收支视图对象 wms_other_income + * + * @author Joshi + * @date 2025-09-26 + */ +@Data +@ExcelIgnoreUnannotated +public class WmsOtherIncomeVo { + + private static final long serialVersionUID = 1L; + + /** + * 其他收入ID(主键) + */ + @ExcelProperty(value = "其他收入ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "主=键") + private Long otherIncomeId; + + /** + * 日期 + */ + @ExcelProperty(value = "日期") + private Date incomeDate; + + /** + * 类型 + */ + @ExcelProperty(value = "类型") + private String incomeType; + + /** + * 金额 + */ + @ExcelProperty(value = "金额") + private BigDecimal amount; + + /** + * 来源 + */ + @ExcelProperty(value = "来源") + private String source; + + /** + * 收支类型(0=收入,1=值出) + */ + @ExcelProperty(value = "收支类型(0=收入,1=值出)") + private Long type; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/klp-wms/src/main/java/com/klp/mapper/WmsOtherIncomeMapper.java b/klp-wms/src/main/java/com/klp/mapper/WmsOtherIncomeMapper.java new file mode 100644 index 00000000..01048048 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/mapper/WmsOtherIncomeMapper.java @@ -0,0 +1,15 @@ +package com.klp.mapper; + +import com.klp.domain.WmsOtherIncome; +import com.klp.domain.vo.WmsOtherIncomeVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 其他收支Mapper接口 + * + * @author Joshi + * @date 2025-09-26 + */ +public interface WmsOtherIncomeMapper extends BaseMapperPlus { + +} diff --git a/klp-wms/src/main/java/com/klp/service/IWmsOtherIncomeService.java b/klp-wms/src/main/java/com/klp/service/IWmsOtherIncomeService.java new file mode 100644 index 00000000..eb6593de --- /dev/null +++ b/klp-wms/src/main/java/com/klp/service/IWmsOtherIncomeService.java @@ -0,0 +1,49 @@ +package com.klp.service; + +import com.klp.domain.WmsOtherIncome; +import com.klp.domain.vo.WmsOtherIncomeVo; +import com.klp.domain.bo.WmsOtherIncomeBo; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 其他收支Service接口 + * + * @author Joshi + * @date 2025-09-26 + */ +public interface IWmsOtherIncomeService { + + /** + * 查询其他收支 + */ + WmsOtherIncomeVo queryById(Long otherIncomeId); + + /** + * 查询其他收支列表 + */ + TableDataInfo queryPageList(WmsOtherIncomeBo bo, PageQuery pageQuery); + + /** + * 查询其他收支列表 + */ + List queryList(WmsOtherIncomeBo bo); + + /** + * 新增其他收支 + */ + Boolean insertByBo(WmsOtherIncomeBo bo); + + /** + * 修改其他收支 + */ + Boolean updateByBo(WmsOtherIncomeBo bo); + + /** + * 校验并批量删除其他收支信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsOtherIncomeServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsOtherIncomeServiceImpl.java new file mode 100644 index 00000000..94fb7960 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsOtherIncomeServiceImpl.java @@ -0,0 +1,113 @@ +package com.klp.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.klp.common.utils.StringUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.klp.domain.bo.WmsOtherIncomeBo; +import com.klp.domain.vo.WmsOtherIncomeVo; +import com.klp.domain.WmsOtherIncome; +import com.klp.mapper.WmsOtherIncomeMapper; +import com.klp.service.IWmsOtherIncomeService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 其他收支Service业务层处理 + * + * @author Joshi + * @date 2025-09-26 + */ +@RequiredArgsConstructor +@Service +public class WmsOtherIncomeServiceImpl implements IWmsOtherIncomeService { + + private final WmsOtherIncomeMapper baseMapper; + + /** + * 查询其他收支 + */ + @Override + public WmsOtherIncomeVo queryById(Long otherIncomeId){ + return baseMapper.selectVoById(otherIncomeId); + } + + /** + * 查询其他收支列表 + */ + @Override + public TableDataInfo queryPageList(WmsOtherIncomeBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询其他收支列表 + */ + @Override + public List queryList(WmsOtherIncomeBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(WmsOtherIncomeBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getIncomeDate() != null, WmsOtherIncome::getIncomeDate, bo.getIncomeDate()); + lqw.eq(StringUtils.isNotBlank(bo.getIncomeType()), WmsOtherIncome::getIncomeType, bo.getIncomeType()); + lqw.eq(bo.getAmount() != null, WmsOtherIncome::getAmount, bo.getAmount()); + lqw.eq(StringUtils.isNotBlank(bo.getSource()), WmsOtherIncome::getSource, bo.getSource()); + lqw.eq(bo.getType() != null, WmsOtherIncome::getType, bo.getType()); + return lqw; + } + + /** + * 新增其他收支 + */ + @Override + public Boolean insertByBo(WmsOtherIncomeBo bo) { + WmsOtherIncome add = BeanUtil.toBean(bo, WmsOtherIncome.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setOtherIncomeId(add.getOtherIncomeId()); + } + return flag; + } + + /** + * 修改其他收支 + */ + @Override + public Boolean updateByBo(WmsOtherIncomeBo bo) { + WmsOtherIncome update = BeanUtil.toBean(bo, WmsOtherIncome.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(WmsOtherIncome entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除其他收支 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsPayableServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsPayableServiceImpl.java index 2e411f64..170bbf82 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsPayableServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsPayableServiceImpl.java @@ -73,6 +73,10 @@ public class WmsPayableServiceImpl implements IWmsPayableService { lqw.eq(bo.getPaidAmount() != null, "p.paid_amount", bo.getPaidAmount()); lqw.eq(bo.getBalanceAmount() != null, "p.balance_amount", bo.getBalanceAmount()); lqw.eq(StringUtils.isNotBlank(bo.getStatus()), "p.status", bo.getStatus()); + //按照创建时间筛选 + if (bo.getStartTime() != null && bo.getEndTime() != null){ + lqw.between("p.create_time", bo.getStartTime(), bo.getEndTime()); + } return lqw; } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsReceivableServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsReceivableServiceImpl.java index db3a9d05..6a98d77a 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsReceivableServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsReceivableServiceImpl.java @@ -75,6 +75,10 @@ public class WmsReceivableServiceImpl implements IWmsReceivableService { lqw.eq(bo.getPaidAmount() != null, "r.paid_amount", bo.getPaidAmount()); lqw.eq(bo.getBalanceAmount() != null, "r.balance_amount", bo.getBalanceAmount()); lqw.eq(StringUtils.isNotBlank(bo.getStatus()), "r.status", bo.getStatus()); + //根据创建时间查询范围Date startTime Date endTime + if (bo.getStartTime() != null && bo.getEndTime() != null) { + lqw.between("r.create_time", bo.getStartTime(), bo.getEndTime()); + } return lqw; } diff --git a/klp-wms/src/main/resources/mapper/klp/WmsOtherIncomeMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsOtherIncomeMapper.xml new file mode 100644 index 00000000..769ec7a4 --- /dev/null +++ b/klp-wms/src/main/resources/mapper/klp/WmsOtherIncomeMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + +