From 304cb87a7180b04c73ccc9bdac65a78b304f2322 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Sat, 28 Jun 2025 13:20:25 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=80=E5=BA=93=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SysOaWarehouseLogController.java | 101 ++++++++++++++++ .../SysOaWarehouseMasterController.java | 12 ++ .../ruoyi/oa/domain/SysOaWarehouseLog.java | 52 ++++++++ .../ruoyi/oa/domain/SysOaWarehouseMaster.java | 1 + .../ruoyi/oa/domain/bo/ReturnDetailBo.java | 10 ++ .../oa/domain/bo/SysOaWarehouseLogBo.java | 50 ++++++++ .../oa/domain/bo/SysOaWarehouseMasterBo.java | 2 + .../oa/domain/vo/SysOaWarehouseLogVo.java | 55 +++++++++ .../oa/domain/vo/SysOaWarehouseMasterVo.java | 1 + .../oa/mapper/SysOaWarehouseLogMapper.java | 15 +++ .../oa/service/ISysOaWarehouseLogService.java | 49 ++++++++ .../service/ISysOaWarehouseMasterService.java | 3 + .../impl/SysOaWarehouseLogServiceImpl.java | 111 ++++++++++++++++++ .../impl/SysOaWarehouseMasterServiceImpl.java | 48 +++++++- .../mapper/oa/SysOaWarehouseLogMapper.xml | 21 ++++ .../mapper/oa/SysOaWarehouseMasterMapper.xml | 2 +- 16 files changed, 529 insertions(+), 4 deletions(-) create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseLogController.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouseLog.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/ReturnDetailBo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseLogBo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseLogVo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaWarehouseLogMapper.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseLogService.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseLogServiceImpl.java create mode 100644 ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseLogMapper.xml diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseLogController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseLogController.java new file mode 100644 index 0000000..ffa13b8 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseLogController.java @@ -0,0 +1,101 @@ +package com.ruoyi.oa.controller; + +import java.util.List; +import java.util.Arrays; +import java.util.concurrent.TimeUnit; + +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.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.core.validate.QueryGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.oa.domain.vo.SysOaWarehouseLogVo; +import com.ruoyi.oa.domain.bo.SysOaWarehouseLogBo; +import com.ruoyi.oa.service.ISysOaWarehouseLogService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 日志 + * + * @author ruoyi + * @date 2025-06-28 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/oa/oaWarehouseLog") +public class SysOaWarehouseLogController extends BaseController { + + private final ISysOaWarehouseLogService iSysOaWarehouseLogService; + + /** + * 查询日志列表 + */ + @GetMapping("/list") + public TableDataInfo list(SysOaWarehouseLogBo bo, PageQuery pageQuery) { + return iSysOaWarehouseLogService.queryPageList(bo, pageQuery); + } + + /** + * 导出日志列表 + */ + @Log(title = "日志", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SysOaWarehouseLogBo bo, HttpServletResponse response) { + List list = iSysOaWarehouseLogService.queryList(bo); + ExcelUtil.exportExcel(list, "日志", SysOaWarehouseLogVo.class, response); + } + + /** + * 获取日志详细信息 + * + * @param logId 主键 + */ + @GetMapping("/{logId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long logId) { + return R.ok(iSysOaWarehouseLogService.queryById(logId)); + } + + /** + * 新增日志 + */ + @Log(title = "日志", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SysOaWarehouseLogBo bo) { + return toAjax(iSysOaWarehouseLogService.insertByBo(bo)); + } + + /** + * 修改日志 + */ + @Log(title = "日志", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SysOaWarehouseLogBo bo) { + return toAjax(iSysOaWarehouseLogService.updateByBo(bo)); + } + + /** + * 删除日志 + * + * @param logIds 主键串 + */ + @Log(title = "日志", businessType = BusinessType.DELETE) + @DeleteMapping("/{logIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] logIds) { + return toAjax(iSysOaWarehouseLogService.deleteWithValidByIds(Arrays.asList(logIds), true)); + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseMasterController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseMasterController.java index aca58ae..e4d8612 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseMasterController.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaWarehouseMasterController.java @@ -6,6 +6,7 @@ import java.util.Arrays; import java.util.UUID; import java.util.concurrent.TimeUnit; +import com.ruoyi.oa.domain.bo.ReturnDetailBo; import com.ruoyi.oa.domain.bo.SysOaWarehouseBo; import com.ruoyi.oa.domain.vo.SysOaWarehouseVo; import com.ruoyi.oa.service.ISysOaWarehouseDetailService; @@ -117,6 +118,16 @@ public class SysOaWarehouseMasterController extends BaseController { return toAjax(iSysOaWarehouseMasterService.updateMasterAndInsertBatchWare(bo)); } + // 修改returnType + @PutMapping("/returnType") + public R updateReturnType(@RequestParam Long masterId, @RequestParam Integer returnType) { + return toAjax(iSysOaWarehouseMasterService.updateReturnType(masterId, returnType)); + } + // 明细退库 + @PostMapping("/returnDetail") + public R returnDetail(@RequestBody List returnDetails) { + return toAjax(iSysOaWarehouseMasterService.returnDetail(returnDetails)); + } /** * 删除出库单管理 * @@ -137,4 +148,5 @@ public class SysOaWarehouseMasterController extends BaseController { public R redo(@PathVariable("masterId") Long masterId) { return toAjax(iSysOaWarehouseMasterService.redoMaster(masterId)); } + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouseLog.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouseLog.java new file mode 100644 index 0000000..3a46269 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouseLog.java @@ -0,0 +1,52 @@ +package com.ruoyi.oa.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.util.Date; +import java.math.BigDecimal; + +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 日志对象 sys_oa_warehouse_log + * + * @author ruoyi + * @date 2025-06-28 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_oa_warehouse_log") +public class SysOaWarehouseLog extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 主键id + */ + @TableId(value = "log_id") + private Long logId; + /** + * 单据id + */ + private Long masterId; + /** + * 物料id + */ + private Long warehouseId; + /** + * 操作数量 + */ + private Long num; + /** + * 删除标志 + */ + @TableLogic + private Long delFlag; + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouseMaster.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouseMaster.java index b720452..22c0749 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouseMaster.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaWarehouseMaster.java @@ -59,5 +59,6 @@ public class SysOaWarehouseMaster extends BaseEntity { private Long status; + private Integer returnType; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/ReturnDetailBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/ReturnDetailBo.java new file mode 100644 index 0000000..359c16d --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/ReturnDetailBo.java @@ -0,0 +1,10 @@ +package com.ruoyi.oa.domain.bo; + +import lombok.Data; + +@Data // 退库明细DTO +public class ReturnDetailBo { + private Long detailId; // 出库明细id + private Integer returnNum; // 退回数量 + // getter/setter +} \ No newline at end of file diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseLogBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseLogBo.java new file mode 100644 index 0000000..182d6fa --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseLogBo.java @@ -0,0 +1,50 @@ +package com.ruoyi.oa.domain.bo; + +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 日志业务对象 sys_oa_warehouse_log + * + * @author ruoyi + * @date 2025-06-28 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class SysOaWarehouseLogBo extends BaseEntity { + + /** + * 主键id + */ + private Long logId; + + /** + * 单据id + */ + private Long masterId; + + /** + * 物料id + */ + private Long warehouseId; + + /** + * 操作数量 + */ + private Long num; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseMasterBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseMasterBo.java index 95788d8..2ebb034 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseMasterBo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseMasterBo.java @@ -72,4 +72,6 @@ public class SysOaWarehouseMasterBo extends BaseEntity { private Long status; + private Integer returnType; + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseLogVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseLogVo.java new file mode 100644 index 0000000..85445a2 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseLogVo.java @@ -0,0 +1,55 @@ +package com.ruoyi.oa.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; +import java.util.Date; + + + +/** + * 日志视图对象 sys_oa_warehouse_log + * + * @author ruoyi + * @date 2025-06-28 + */ +@Data +@ExcelIgnoreUnannotated +public class SysOaWarehouseLogVo { + + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long logId; + + /** + * 单据id + */ + @ExcelProperty(value = "单据id") + private Long masterId; + + /** + * 物料id + */ + @ExcelProperty(value = "物料id") + private Long warehouseId; + + /** + * 操作数量 + */ + @ExcelProperty(value = "操作数量") + private Long num; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseMasterVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseMasterVo.java index 279ec13..d580b15 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseMasterVo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseMasterVo.java @@ -80,5 +80,6 @@ public class SysOaWarehouseMasterVo { private Long status; private Date nearestEndTime; + private Integer returnType; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaWarehouseLogMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaWarehouseLogMapper.java new file mode 100644 index 0000000..9eb4a4a --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaWarehouseLogMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.oa.mapper; + +import com.ruoyi.oa.domain.SysOaWarehouseLog; +import com.ruoyi.oa.domain.vo.SysOaWarehouseLogVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 日志Mapper接口 + * + * @author ruoyi + * @date 2025-06-28 + */ +public interface SysOaWarehouseLogMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseLogService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseLogService.java new file mode 100644 index 0000000..eff612e --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseLogService.java @@ -0,0 +1,49 @@ +package com.ruoyi.oa.service; + +import com.ruoyi.oa.domain.SysOaWarehouseLog; +import com.ruoyi.oa.domain.vo.SysOaWarehouseLogVo; +import com.ruoyi.oa.domain.bo.SysOaWarehouseLogBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 日志Service接口 + * + * @author ruoyi + * @date 2025-06-28 + */ +public interface ISysOaWarehouseLogService { + + /** + * 查询日志 + */ + SysOaWarehouseLogVo queryById(Long logId); + + /** + * 查询日志列表 + */ + TableDataInfo queryPageList(SysOaWarehouseLogBo bo, PageQuery pageQuery); + + /** + * 查询日志列表 + */ + List queryList(SysOaWarehouseLogBo bo); + + /** + * 新增日志 + */ + Boolean insertByBo(SysOaWarehouseLogBo bo); + + /** + * 修改日志 + */ + Boolean updateByBo(SysOaWarehouseLogBo bo); + + /** + * 校验并批量删除日志信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseMasterService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseMasterService.java index 27011c8..103a501 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseMasterService.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaWarehouseMasterService.java @@ -1,5 +1,6 @@ package com.ruoyi.oa.service; +import com.ruoyi.oa.domain.bo.ReturnDetailBo; import com.ruoyi.oa.domain.bo.SysOaWarehouseBo; import com.ruoyi.oa.domain.vo.SysOaWarehouseMasterVo; import com.ruoyi.oa.domain.bo.SysOaWarehouseMasterBo; @@ -70,5 +71,7 @@ public interface ISysOaWarehouseMasterService { * @return */ int redoMaster(Long masterId); + boolean updateReturnType(Long masterId, Integer returnType); + boolean returnDetail(List returnDetails); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseLogServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseLogServiceImpl.java new file mode 100644 index 0000000..7e92dbc --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseLogServiceImpl.java @@ -0,0 +1,111 @@ +package com.ruoyi.oa.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.oa.domain.bo.SysOaWarehouseLogBo; +import com.ruoyi.oa.domain.vo.SysOaWarehouseLogVo; +import com.ruoyi.oa.domain.SysOaWarehouseLog; +import com.ruoyi.oa.mapper.SysOaWarehouseLogMapper; +import com.ruoyi.oa.service.ISysOaWarehouseLogService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 日志Service业务层处理 + * + * @author ruoyi + * @date 2025-06-28 + */ +@RequiredArgsConstructor +@Service +public class SysOaWarehouseLogServiceImpl implements ISysOaWarehouseLogService { + + private final SysOaWarehouseLogMapper baseMapper; + + /** + * 查询日志 + */ + @Override + public SysOaWarehouseLogVo queryById(Long logId){ + return baseMapper.selectVoById(logId); + } + + /** + * 查询日志列表 + */ + @Override + public TableDataInfo queryPageList(SysOaWarehouseLogBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询日志列表 + */ + @Override + public List queryList(SysOaWarehouseLogBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysOaWarehouseLogBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getMasterId() != null, SysOaWarehouseLog::getMasterId, bo.getMasterId()); + lqw.eq(bo.getWarehouseId() != null, SysOaWarehouseLog::getWarehouseId, bo.getWarehouseId()); + lqw.eq(bo.getNum() != null, SysOaWarehouseLog::getNum, bo.getNum()); + return lqw; + } + + /** + * 新增日志 + */ + @Override + public Boolean insertByBo(SysOaWarehouseLogBo bo) { + SysOaWarehouseLog add = BeanUtil.toBean(bo, SysOaWarehouseLog.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setLogId(add.getLogId()); + } + return flag; + } + + /** + * 修改日志 + */ + @Override + public Boolean updateByBo(SysOaWarehouseLogBo bo) { + SysOaWarehouseLog update = BeanUtil.toBean(bo, SysOaWarehouseLog.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SysOaWarehouseLog entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除日志 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseMasterServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseMasterServiceImpl.java index eb60ff0..94967df 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseMasterServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseMasterServiceImpl.java @@ -11,11 +11,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.oa.domain.SysOaWarehouse; import com.ruoyi.oa.domain.SysOaWarehouseDetail; +import com.ruoyi.oa.domain.SysOaWarehouseLog; +import com.ruoyi.oa.domain.bo.ReturnDetailBo; import com.ruoyi.oa.domain.bo.SysOaWarehouseBo; import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo; import com.ruoyi.oa.domain.vo.SysOaWarehouseDetailVo; import com.ruoyi.oa.domain.vo.SysOaWarehouseVo; import com.ruoyi.oa.mapper.SysOaWarehouseDetailMapper; +import com.ruoyi.oa.mapper.SysOaWarehouseLogMapper; import com.ruoyi.oa.mapper.SysOaWarehouseMapper; import com.ruoyi.oa.service.ISysOaWarehouseDetailService; import com.ruoyi.oa.service.ISysOaWarehouseService; @@ -49,6 +52,10 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer @Autowired private SysOaWarehouseMapper warehouseMapper; + @Autowired + private SysOaWarehouseDetailMapper warehouseDetailMapper; + @Autowired + private SysOaWarehouseLogMapper warehouseLogMapper; /** @@ -66,6 +73,8 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer public TableDataInfo queryPageList(SysOaWarehouseMasterBo bo, PageQuery pageQuery) { QueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPagePlus(pageQuery.build(), lqw); + //打印这个result + System.out.println(result.getRecords()); return TableDataInfo.build(result); } @@ -83,6 +92,7 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer QueryWrapper lqw = Wrappers.query(); lqw.eq(bo.getType() != null, "sowm.type", bo.getType()) .eq(bo.getProjectId()!= null, "sowm.project_id", bo.getProjectId()) + .eq(bo.getReturnType() != null, "sowm.return_type", bo.getReturnType()) // 其他过滤…… .eq("sowm.del_flag", 0) .orderByDesc("sowm.create_time"); @@ -114,9 +124,9 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer */ @Override public Boolean insertByBo(SysOaWarehouseMasterBo bo) { - SysOaWarehouseMaster add = BeanUtil.toBean(bo, SysOaWarehouseMaster.class); validEntityBeforeSave(add); + add.setReturnType(0); // 默认0 add.setSignUser(LoginHelper.getNickName()); boolean flag = baseMapper.insert(add) > 0; if (flag) { @@ -136,7 +146,7 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer @Override public Boolean updateByBo(SysOaWarehouseMasterBo bo) { - // 判断是否为采购单,采购单,用户是直接点击完成按钮,所以直接更新单子状态就可以 + // 判断是否为采购单,用户采购单,是直接点击完成按钮,所以直接更新单子状态就可以 if (bo.getType() != 2L) { SysOaWarehouseMaster update = BeanUtil.toBean(bo, SysOaWarehouseMaster.class); validEntityBeforeSave(update); @@ -159,7 +169,30 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer } } - + // 3. 明细退库 + @Override + @Transactional + public boolean returnDetail(List returnDetails) { + for (ReturnDetailBo dto : returnDetails) { + SysOaWarehouseDetail detail = warehouseDetailMapper.selectById(dto.getDetailId()); + if (detail == null) continue; + // 明细表减去退回数量 + detail.setAmount(detail.getAmount() - dto.getReturnNum()); + warehouseDetailMapper.updateById(detail); + // 库存表加上退回数量 + SysOaWarehouse warehouse = warehouseMapper.selectById(detail.getWarehouseId()); + warehouse.setInventory(warehouse.getInventory() + dto.getReturnNum()); + warehouseMapper.updateById(warehouse); + // 日志表插入记录 + SysOaWarehouseLog log = new SysOaWarehouseLog(); + log.setMasterId(detail.getMasterId()); + log.setWarehouseId(detail.getWarehouseId()); + log.setNum(Long.valueOf(dto.getReturnNum())); + log.setRemark("退库操作"); + warehouseLogMapper.insert(log); + } + return true; + } /** * 保存前的数据校验 */ @@ -251,4 +284,13 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer return baseMapper.deleteById(masterId); } + + // 2. 修改returnType + @Override + public boolean updateReturnType(Long masterId, Integer returnType) { + SysOaWarehouseMaster update = new SysOaWarehouseMaster(); + update.setMasterId(masterId); + update.setReturnType(returnType); + return baseMapper.updateById(update) > 0; + } } diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseLogMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseLogMapper.xml new file mode 100644 index 0000000..a614d35 --- /dev/null +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseLogMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseMasterMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseMasterMapper.xml index bdd5eff..d670333 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseMasterMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseMasterMapper.xml @@ -61,7 +61,7 @@ parameterType="long" resultType="com.ruoyi.oa.domain.vo.SysOaWarehouseDetailVo"> SELECT - sowd.id AS outId, + sowd.id AS id, sowd.master_id, sowd.sign_price, sowd.amount,