add 库存

dev
wanghao 2 months ago
parent c296aa6610
commit e416ae62d4

@ -0,0 +1,116 @@
package org.dromara.wms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.wms.domain.vo.WmsInStockBillVo;
import org.dromara.wms.domain.bo.WmsInStockBillBo;
import org.dromara.wms.service.IWmsInStockBillService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
*
* 访:/wms/inStockBill
*
* @author Yinq
* @date 2025-10-28
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/inStockBill")
public class WmsInStockBillController extends BaseController {
private final IWmsInStockBillService wmsInStockBillService;
/**
*
*/
@SaCheckPermission("wms:inStockBill:list")
@GetMapping("/list")
public TableDataInfo<WmsInStockBillVo> list(WmsInStockBillBo bo, PageQuery pageQuery) {
return wmsInStockBillService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("wms:inStockBill:export")
@Log(title = "物料入库", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsInStockBillBo bo, HttpServletResponse response) {
List<WmsInStockBillVo> list = wmsInStockBillService.queryList(bo);
ExcelUtil.exportExcel(list, "物料入库", WmsInStockBillVo.class, response);
}
/**
*
*
* @param inStockBillId
*/
@SaCheckPermission("wms:inStockBill:query")
@GetMapping("/{inStockBillId}")
public R<WmsInStockBillVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("inStockBillId") Long inStockBillId) {
return R.ok(wmsInStockBillService.queryById(inStockBillId));
}
/**
*
*/
@SaCheckPermission("wms:inStockBill:add")
@Log(title = "物料入库", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsInStockBillBo bo) {
return toAjax(wmsInStockBillService.insertByBo(bo));
}
/**
*
*/
@SaCheckPermission("wms:inStockBill:edit")
@Log(title = "物料入库", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsInStockBillBo bo) {
return toAjax(wmsInStockBillService.updateByBo(bo));
}
/**
*
*
* @param inStockBillIds
*/
@SaCheckPermission("wms:inStockBill:remove")
@Log(title = "物料入库", businessType = BusinessType.DELETE)
@DeleteMapping("/{inStockBillIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("inStockBillIds") Long[] inStockBillIds) {
return toAjax(wmsInStockBillService.deleteWithValidByIds(List.of(inStockBillIds), true));
}
/**
*
*/
@GetMapping("/getWmsInStockBillList")
public R<List<WmsInStockBillVo>> getWmsInStockBillList(WmsInStockBillBo bo) {
List<WmsInStockBillVo> list = wmsInStockBillService.queryList(bo);
return R.ok(list);
}
}

@ -0,0 +1,116 @@
package org.dromara.wms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.wms.domain.vo.WmsInventoryDetailsVo;
import org.dromara.wms.domain.bo.WmsInventoryDetailsBo;
import org.dromara.wms.service.IWmsInventoryDetailsService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
*
* 访:/wms/inventoryDetails
*
* @author Yinq
* @date 2025-10-27
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/inventoryDetails")
public class WmsInventoryDetailsController extends BaseController {
private final IWmsInventoryDetailsService wmsInventoryDetailsService;
/**
*
*/
@SaCheckPermission("wms:inventoryDetails:list")
@GetMapping("/list")
public TableDataInfo<WmsInventoryDetailsVo> list(WmsInventoryDetailsBo bo, PageQuery pageQuery) {
return wmsInventoryDetailsService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("wms:inventoryDetails:export")
@Log(title = "库存明细", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsInventoryDetailsBo bo, HttpServletResponse response) {
List<WmsInventoryDetailsVo> list = wmsInventoryDetailsService.queryList(bo);
ExcelUtil.exportExcel(list, "库存明细", WmsInventoryDetailsVo.class, response);
}
/**
*
*
* @param inventoryDetailsId
*/
@SaCheckPermission("wms:inventoryDetails:query")
@GetMapping("/{inventoryDetailsId}")
public R<WmsInventoryDetailsVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("inventoryDetailsId") Long inventoryDetailsId) {
return R.ok(wmsInventoryDetailsService.queryById(inventoryDetailsId));
}
/**
*
*/
@SaCheckPermission("wms:inventoryDetails:add")
@Log(title = "库存明细", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsInventoryDetailsBo bo) {
return toAjax(wmsInventoryDetailsService.insertByBo(bo));
}
/**
*
*/
@SaCheckPermission("wms:inventoryDetails:edit")
@Log(title = "库存明细", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsInventoryDetailsBo bo) {
return toAjax(wmsInventoryDetailsService.updateByBo(bo));
}
/**
*
*
* @param inventoryDetailsIds
*/
@SaCheckPermission("wms:inventoryDetails:remove")
@Log(title = "库存明细", businessType = BusinessType.DELETE)
@DeleteMapping("/{inventoryDetailsIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("inventoryDetailsIds") Long[] inventoryDetailsIds) {
return toAjax(wmsInventoryDetailsService.deleteWithValidByIds(List.of(inventoryDetailsIds), true));
}
/**
*
*/
@GetMapping("/getWmsInventoryDetailsList")
public R<List<WmsInventoryDetailsVo>> getWmsInventoryDetailsList(WmsInventoryDetailsBo bo) {
List<WmsInventoryDetailsVo> list = wmsInventoryDetailsService.queryList(bo);
return R.ok(list);
}
}

@ -0,0 +1,96 @@
package org.dromara.wms.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
/**
* SAP base_material_info
*
* @author Yinq
* @date 2025-09-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("base_material_info")
public class BaseMaterialInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId(value = "material_id", type = IdType.AUTO)
private Long materialId;
/**
* SAP
*/
private String materialCode;
/**
* SAP
*/
private String materialName;
/**
*
*/
private String materialBrand;
/**
*
*/
private String materialModel;
/**
* ID
*/
private Long unitId;
/**
*
*/
private String materialParameter;
/**
* ()
*/
private Long purchasePrice;
/**
* ()
*/
private Long foreignPrice;
/**
*
*/
private Long stockingPeriod;
/**
*
*/
private String remark;
/**
* 1 0
*/
private String activeFlag;
/**
* 0 1
*/
@TableLogic
private String delFlag;
/**
*
*/
@TableField(exist = false)
private String unitName;
}

@ -0,0 +1,97 @@
package org.dromara.wms.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* wms_in_stock_bill
*
* @author Yinq
* @date 2025-10-28
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_in_stock_bill")
public class WmsInStockBill extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId(value = "in_stock_bill_id", type = IdType.AUTO)
private Long inStockBillId;
/**
*
*/
private String inStockCode;
/**
*
*/
private String inStockType;
/**
* ID
*/
private Long projectId;
/**
*
*/
private String inventoryAmount;
/**
*
*/
private String supplier;
/**
*
*/
private String contactUser;
/**
*
*/
private String contactNumber;
/**
*
*/
private String directions;
/**
* (1 2 3)
*/
private String inStockBillStatus;
/**
*
*/
private String flowStatus;
/**
* ID
*/
private Long warehouseId;
/**
*
*/
private String remark;
/**
* 0 1
*/
@TableLogic
private String delFlag;
}

@ -0,0 +1,104 @@
package org.dromara.wms.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* wms_inventory_details
*
* @author Yinq
* @date 2025-10-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_inventory_details")
public class WmsInventoryDetails extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId(value = "inventory_details_id", type = IdType.AUTO)
private Long inventoryDetailsId;
/**
*
*/
private String locationCode;
/**
* ID
*/
private Long warehouseId;
/**
* ID
*/
private Long materielId;
/**
*
*/
private String batchNumber;
/**
*
*/
private Double inventoryAmount;
/**
*
*/
private Double lockedAmount;
/**
*
*/
private String remark;
/**
* 0 1
*/
@TableLogic
private String delFlag;
@TableField(exist = false)
private Double useAmount;
@TableField(exist = false)
/**
* SAP
*/
private String materialCode;
@TableField(exist = false)
/**
* SAP
*/
private String materialName;
@TableField(exist = false)
/**
*
*/
private String materialBrand;
@TableField(exist = false)
/**
*
*/
private String warehouseCode;
@TableField(exist = false)
/**
*
*/
private String warehouseName;
@TableField(exist = false)
/**
*
*/
private String materialModel;
}

@ -0,0 +1,90 @@
package org.dromara.wms.domain.bo;
import org.dromara.wms.domain.WmsInStockBill;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* wms_in_stock_bill
*
* @author Yinq
* @date 2025-10-28
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = WmsInStockBill.class, reverseConvertGenerate = false)
public class WmsInStockBillBo extends BaseEntity {
/**
* ID
*/
@NotNull(message = "入库单ID不能为空", groups = { EditGroup.class })
private Long inStockBillId;
/**
*
*/
private String inStockCode;
/**
*
*/
private String inStockType;
/**
* ID
*/
private Long projectId;
/**
*
*/
private String inventoryAmount;
/**
*
*/
private String supplier;
/**
*
*/
private String contactUser;
/**
*
*/
private String contactNumber;
/**
*
*/
private String directions;
/**
* (1 2 3)
*/
private String inStockBillStatus;
/**
*
*/
private String flowStatus;
/**
* ID
*/
private Long warehouseId;
/**
*
*/
private String remark;
}

@ -0,0 +1,65 @@
package org.dromara.wms.domain.bo;
import org.dromara.wms.domain.WmsInventoryDetails;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* wms_inventory_details
*
* @author Yinq
* @date 2025-10-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = WmsInventoryDetails.class, reverseConvertGenerate = false)
public class WmsInventoryDetailsBo extends BaseEntity {
/**
* ID
*/
@NotNull(message = "库存ID不能为空", groups = { EditGroup.class })
private Long inventoryDetailsId;
/**
*
*/
private String locationCode;
/**
* ID
*/
private Long warehouseId;
/**
* ID
*/
private Long materielId;
/**
*
*/
private String batchNumber;
/**
*
*/
private Double inventoryAmount;
/**
*
*/
private Double lockedAmount;
/**
*
*/
private String remark;
}

@ -0,0 +1,125 @@
package org.dromara.wms.domain.vo;
import org.dromara.wms.domain.WmsInStockBill;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* wms_in_stock_bill
*
* @author Yinq
* @date 2025-10-28
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = WmsInStockBill.class)
public class WmsInStockBillVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@ExcelProperty(value = "入库单ID")
private Long inStockBillId;
/**
*
*/
@ExcelProperty(value = "入库单号")
private String inStockCode;
/**
*
*/
@ExcelProperty(value = "入库单类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "wms_in_stock_type")
private String inStockType;
/**
* ID
*/
@ExcelProperty(value = "项目ID")
private Long projectId;
/**
*
*/
@ExcelProperty(value = "关联单号")
private String inventoryAmount;
/**
*
*/
@ExcelProperty(value = "供应商")
private String supplier;
/**
*
*/
@ExcelProperty(value = "联系人")
private String contactUser;
/**
*
*/
@ExcelProperty(value = "联系电话")
private String contactNumber;
/**
*
*/
@ExcelProperty(value = "入库说明")
private String directions;
/**
* (1 2 3)
*/
@ExcelProperty(value = "入库单状态(1暂存 2审批中 3完成)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "wms_in_stock_bill_status")
private String inStockBillStatus;
/**
*
*/
@ExcelProperty(value = "流程状态")
private String flowStatus;
/**
* ID
*/
@ExcelProperty(value = "仓库ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "预=留")
private Long warehouseId;
/**
*
*/
@ExcelProperty(value = "备注")
private String remark;
/**
*
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
/**
*
*/
@ExcelProperty(value = "更新时间")
private Date updateTime;
}

@ -0,0 +1,117 @@
package org.dromara.wms.domain.vo;
import org.dromara.wms.domain.WmsInventoryDetails;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* wms_inventory_details
*
* @author Yinq
* @date 2025-10-27
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = WmsInventoryDetails.class)
public class WmsInventoryDetailsVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@ExcelProperty(value = "库存ID")
private Long inventoryDetailsId;
/**
*
*/
@ExcelProperty(value = "库位编码")
private String locationCode;
/**
* ID
*/
@ExcelProperty(value = "仓库ID")
private Long warehouseId;
/**
* ID
*/
@ExcelProperty(value = "物料ID")
private Long materielId;
/**
*
*/
@ExcelProperty(value = "批次号")
private String batchNumber;
/**
*
*/
@ExcelProperty(value = "库存数量")
private Double inventoryAmount;
/**
*
*/
@ExcelProperty(value = "锁定数量")
private Double lockedAmount;
/**
*
*/
@ExcelProperty(value = "备注")
private String remark;
/**
*
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
/**
*
*/
@ExcelProperty(value = "更新时间")
private Date updateTime;
private Double useAmount;
/**
* SAP
*/
private String materialCode;
/**
* SAP
*/
private String materialName;
/**
*
*/
private String materialBrand;
/**
*
*/
private String warehouseCode;
/**
*
*/
private String warehouseName;
/**
*
*/
private String materialModel;
}

@ -0,0 +1,16 @@
package org.dromara.wms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.dromara.wms.domain.BaseMaterialInfo;
/**
* SAPMapper
*
* @author Yinq
* @date 2025-09-30
*/
public interface BaseMaterialInfoMapper extends BaseMapper<BaseMaterialInfo> {
}

@ -0,0 +1,37 @@
package org.dromara.wms.mapper;
import java.util.List;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.dromara.wms.domain.WmsInStockBill;
import org.dromara.wms.domain.vo.WmsInStockBillVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* Mapper
*
* @author Yinq
* @date 2025-10-28
*/
public interface WmsInStockBillMapper extends BaseMapperPlus<WmsInStockBill, WmsInStockBillVo> {
/**
*
*
* @param page
* @param queryWrapper
* @return
*/
public Page<WmsInStockBillVo> selectCustomWmsInStockBillVoList(@Param("page") Page<WmsInStockBillVo> page, @Param(Constants.WRAPPER) MPJLambdaWrapper<WmsInStockBill> queryWrapper);
/**
*
*
* @param queryWrapper
* @return
*/
public List<WmsInStockBillVo> selectCustomWmsInStockBillVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper<WmsInStockBill> queryWrapper);
}

@ -0,0 +1,37 @@
package org.dromara.wms.mapper;
import java.util.List;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.dromara.wms.domain.WmsInventoryDetails;
import org.dromara.wms.domain.vo.WmsInventoryDetailsVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* Mapper
*
* @author Yinq
* @date 2025-10-27
*/
public interface WmsInventoryDetailsMapper extends BaseMapperPlus<WmsInventoryDetails, WmsInventoryDetailsVo> {
/**
*
*
* @param page
* @param queryWrapper
* @return
*/
public Page<WmsInventoryDetailsVo> selectCustomWmsInventoryDetailsVoList(@Param("page") Page<WmsInventoryDetailsVo> page, @Param(Constants.WRAPPER) MPJLambdaWrapper<WmsInventoryDetails> queryWrapper);
/**
*
*
* @param queryWrapper
* @return
*/
public List<WmsInventoryDetailsVo> selectCustomWmsInventoryDetailsVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper<WmsInventoryDetails> queryWrapper);
}

@ -0,0 +1,69 @@
package org.dromara.wms.service;
import org.dromara.wms.domain.WmsInStockBill;
import org.dromara.wms.domain.vo.WmsInStockBillVo;
import org.dromara.wms.domain.bo.WmsInStockBillBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* Service
*
* @author Yinq
* @date 2025-10-28
*/
public interface IWmsInStockBillService {
/**
*
*
* @param inStockBillId
* @return
*/
WmsInStockBillVo queryById(Long inStockBillId);
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
TableDataInfo<WmsInStockBillVo> queryPageList(WmsInStockBillBo bo, PageQuery pageQuery);
/**
*
*
* @param bo
* @return
*/
List<WmsInStockBillVo> queryList(WmsInStockBillBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean insertByBo(WmsInStockBillBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean updateByBo(WmsInStockBillBo bo);
/**
*
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -0,0 +1,69 @@
package org.dromara.wms.service;
import org.dromara.wms.domain.WmsInventoryDetails;
import org.dromara.wms.domain.vo.WmsInventoryDetailsVo;
import org.dromara.wms.domain.bo.WmsInventoryDetailsBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* Service
*
* @author Yinq
* @date 2025-10-27
*/
public interface IWmsInventoryDetailsService {
/**
*
*
* @param inventoryDetailsId
* @return
*/
WmsInventoryDetailsVo queryById(Long inventoryDetailsId);
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
TableDataInfo<WmsInventoryDetailsVo> queryPageList(WmsInventoryDetailsBo bo, PageQuery pageQuery);
/**
*
*
* @param bo
* @return
*/
List<WmsInventoryDetailsVo> queryList(WmsInventoryDetailsBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean insertByBo(WmsInventoryDetailsBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean updateByBo(WmsInventoryDetailsBo bo);
/**
*
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -0,0 +1,138 @@
package org.dromara.wms.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.wms.domain.bo.WmsInStockBillBo;
import org.dromara.wms.domain.vo.WmsInStockBillVo;
import org.dromara.wms.domain.WmsInStockBill;
import org.dromara.wms.mapper.WmsInStockBillMapper;
import org.dromara.wms.service.IWmsInStockBillService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* Service
*
* @author Yinq
* @date 2025-10-28
*/
@RequiredArgsConstructor
@Service
public class WmsInStockBillServiceImpl implements IWmsInStockBillService {
private final WmsInStockBillMapper baseMapper;
/**
*
*
* @param inStockBillId
* @return
*/
@Override
public WmsInStockBillVo queryById(Long inStockBillId){
return baseMapper.selectVoById(inStockBillId);
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<WmsInStockBillVo> queryPageList(WmsInStockBillBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<WmsInStockBill> lqw = buildQueryWrapper(bo);
Page<WmsInStockBillVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<WmsInStockBillVo> queryList(WmsInStockBillBo bo) {
MPJLambdaWrapper<WmsInStockBill> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<WmsInStockBill> buildQueryWrapper(WmsInStockBillBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<WmsInStockBill> lqw = JoinWrappers.lambda(WmsInStockBill.class)
.selectAll(WmsInStockBill.class)
.eq(StringUtils.isNotBlank(bo.getInStockType()), WmsInStockBill::getInStockType, bo.getInStockType())
.eq(bo.getProjectId() != null, WmsInStockBill::getProjectId, bo.getProjectId())
.eq(StringUtils.isNotBlank(bo.getInventoryAmount()), WmsInStockBill::getInventoryAmount, bo.getInventoryAmount())
.eq(StringUtils.isNotBlank(bo.getSupplier()), WmsInStockBill::getSupplier, bo.getSupplier())
.eq(StringUtils.isNotBlank(bo.getInStockBillStatus()), WmsInStockBill::getInStockBillStatus, bo.getInStockBillStatus())
.eq(StringUtils.isNotBlank(bo.getFlowStatus()), WmsInStockBill::getFlowStatus, bo.getFlowStatus())
.eq(bo.getWarehouseId() != null, WmsInStockBill::getWarehouseId, bo.getWarehouseId())
;
return lqw;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(WmsInStockBillBo bo) {
WmsInStockBill add = MapstructUtils.convert(bo, WmsInStockBill.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setInStockBillId(add.getInStockBillId());
}
return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean updateByBo(WmsInStockBillBo bo) {
WmsInStockBill update = MapstructUtils.convert(bo, WmsInStockBill.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(WmsInStockBill entity){
//TODO 做一些数据校验,如唯一约束
}
/**
*
*
* @param ids
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

@ -0,0 +1,148 @@
package org.dromara.wms.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.wms.domain.BaseMaterialInfo;
import org.dromara.wms.domain.WmsInventoryDetails;
import org.dromara.wms.domain.WmsWarehouseInfo;
import org.dromara.wms.domain.bo.WmsInventoryDetailsBo;
import org.dromara.wms.domain.vo.WmsInventoryDetailsVo;
import org.dromara.wms.mapper.WmsInventoryDetailsMapper;
import org.dromara.wms.service.IWmsInventoryDetailsService;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
import java.util.WeakHashMap;
/**
* Service
*
* @author Yinq
* @date 2025-10-27
*/
@RequiredArgsConstructor
@Service
public class WmsInventoryDetailsServiceImpl implements IWmsInventoryDetailsService {
private final WmsInventoryDetailsMapper baseMapper;
/**
*
*
* @param inventoryDetailsId
* @return
*/
@Override
public WmsInventoryDetailsVo queryById(Long inventoryDetailsId) {
return baseMapper.selectVoById(inventoryDetailsId);
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<WmsInventoryDetailsVo> queryPageList(WmsInventoryDetailsBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<WmsInventoryDetails> lqw = buildQueryWrapper(bo);
Page<WmsInventoryDetailsVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<WmsInventoryDetailsVo> queryList(WmsInventoryDetailsBo bo) {
MPJLambdaWrapper<WmsInventoryDetails> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<WmsInventoryDetails> buildQueryWrapper(WmsInventoryDetailsBo bo) {
// Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<WmsInventoryDetails> lqw = JoinWrappers.lambda(WmsInventoryDetails.class)
.selectAll(WmsInventoryDetails.class)
.selectAs("inventory_amount - locked_amount", WmsInventoryDetailsVo::getUseAmount)
.eq(StringUtils.isNotBlank(bo.getLocationCode()), WmsInventoryDetails::getLocationCode, bo.getLocationCode())
.eq(bo.getWarehouseId() != null, WmsInventoryDetails::getWarehouseId, bo.getWarehouseId())
.like(bo.getMaterielId() != null, WmsInventoryDetails::getMaterielId, bo.getMaterielId())
.eq(StringUtils.isNotBlank(bo.getBatchNumber()), WmsInventoryDetails::getBatchNumber, bo.getBatchNumber())
.eq(bo.getInventoryAmount() != null, WmsInventoryDetails::getInventoryAmount, bo.getInventoryAmount())
.eq(bo.getLockedAmount() != null, WmsInventoryDetails::getLockedAmount, bo.getLockedAmount())
// 关联仓库信息
.leftJoin(WmsWarehouseInfo.class, WmsWarehouseInfo::getWarehouseId, WmsInventoryDetails::getWarehouseId)
.select(WmsWarehouseInfo::getWarehouseName, WmsWarehouseInfo::getWarehouseCode)
// 关联物料信息
.leftJoin(BaseMaterialInfo.class, BaseMaterialInfo::getMaterialId, WmsInventoryDetails::getMaterielId)
.select(BaseMaterialInfo::getMaterialName, BaseMaterialInfo::getMaterialCode, BaseMaterialInfo::getMaterialBrand, BaseMaterialInfo::getMaterialModel)
;
return lqw;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(WmsInventoryDetailsBo bo) {
WmsInventoryDetails add = MapstructUtils.convert(bo, WmsInventoryDetails.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setInventoryDetailsId(add.getInventoryDetailsId());
}
return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean updateByBo(WmsInventoryDetailsBo bo) {
WmsInventoryDetails update = MapstructUtils.convert(bo, WmsInventoryDetails.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(WmsInventoryDetails entity) {
//TODO 做一些数据校验,如唯一约束
}
/**
*
*
* @param ids
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.wms.mapper.WmsInStockBillMapper">
<resultMap type="org.dromara.wms.domain.vo.WmsInStockBillVo" id="WmsInStockBillResult">
</resultMap>
<select id="selectCustomWmsInStockBillVoList" resultMap="WmsInStockBillResult">
select in_stock_bill_id, tenant_id, in_stock_code, in_stock_type, project_id, inventory_amount, supplier, contact_user, contact_number, directions, in_stock_bill_status, flow_status, warehouse_id, remark, del_flag, create_dept, create_by, create_time, update_by, update_time from wms_in_stock_bill t
${ew.getCustomSqlSegment}
</select>
</mapper>

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.wms.mapper.WmsInventoryDetailsMapper">
<resultMap type="org.dromara.wms.domain.vo.WmsInventoryDetailsVo" id="WmsInventoryDetailsResult">
</resultMap>
<select id="selectCustomWmsInventoryDetailsVoList" resultMap="WmsInventoryDetailsResult">
select inventory_details_id, tenant_id, location_code, warehouse_id, materiel_id, batch_number, inventory_amount, locked_amount, remark, del_flag, create_dept, create_by, create_time, update_by, update_time from wms_inventory_details t
${ew.getCustomSqlSegment}
</select>
</mapper>
Loading…
Cancel
Save