mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 12:18:42 +08:00 
			
		
		
		
	✨ ERP:完成 stock 仓库信息的实现
This commit is contained in:
		@@ -0,0 +1,106 @@
 | 
			
		||||
package cn.iocoder.yudao.module.erp.controller.admin.stock;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
 | 
			
		||||
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.ErpWarehouseSaveReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehousePageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehouseRespVO;
 | 
			
		||||
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
 | 
			
		||||
import cn.iocoder.yudao.module.erp.service.stock.ErpWarehouseService;
 | 
			
		||||
import io.swagger.v3.oas.annotations.Operation;
 | 
			
		||||
import io.swagger.v3.oas.annotations.Parameter;
 | 
			
		||||
import io.swagger.v3.oas.annotations.Parameters;
 | 
			
		||||
import io.swagger.v3.oas.annotations.tags.Tag;
 | 
			
		||||
import jakarta.annotation.Resource;
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import jakarta.validation.Valid;
 | 
			
		||||
import org.springframework.security.access.prepost.PreAuthorize;
 | 
			
		||||
import org.springframework.validation.annotation.Validated;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 | 
			
		||||
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
 | 
			
		||||
 | 
			
		||||
@Tag(name = "管理后台 - ERP 仓库")
 | 
			
		||||
@RestController
 | 
			
		||||
@RequestMapping("/erp/warehouse")
 | 
			
		||||
@Validated
 | 
			
		||||
public class ErpWarehouseController {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private ErpWarehouseService warehouseService;
 | 
			
		||||
 | 
			
		||||
    @PostMapping("/create")
 | 
			
		||||
    @Operation(summary = "创建仓库")
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('erp:warehouse:create')")
 | 
			
		||||
    public CommonResult<Long> createWarehouse(@Valid @RequestBody ErpWarehouseSaveReqVO createReqVO) {
 | 
			
		||||
        return success(warehouseService.createWarehouse(createReqVO));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/update")
 | 
			
		||||
    @Operation(summary = "更新仓库")
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('erp:warehouse:update')")
 | 
			
		||||
    public CommonResult<Boolean> updateWarehouse(@Valid @RequestBody ErpWarehouseSaveReqVO updateReqVO) {
 | 
			
		||||
        warehouseService.updateWarehouse(updateReqVO);
 | 
			
		||||
        return success(true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/update-default-status")
 | 
			
		||||
    @Operation(summary = "更新仓库默认状态")
 | 
			
		||||
    @Parameters({
 | 
			
		||||
            @Parameter(name = "id", description = "编号", required = true),
 | 
			
		||||
            @Parameter(name = "status", description = "状态", required = true)
 | 
			
		||||
    })
 | 
			
		||||
    public CommonResult<Boolean> updateWarehouseDefaultStatus(@RequestParam("id") Long id,
 | 
			
		||||
                                                              @RequestParam("defaultStatus") Boolean defaultStatus) {
 | 
			
		||||
        warehouseService.updateWarehouseDefaultStatus(id, defaultStatus);
 | 
			
		||||
        return success(true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @DeleteMapping("/delete")
 | 
			
		||||
    @Operation(summary = "删除仓库")
 | 
			
		||||
    @Parameter(name = "id", description = "编号", required = true)
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('erp:warehouse:delete')")
 | 
			
		||||
    public CommonResult<Boolean> deleteWarehouse(@RequestParam("id") Long id) {
 | 
			
		||||
        warehouseService.deleteWarehouse(id);
 | 
			
		||||
        return success(true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/get")
 | 
			
		||||
    @Operation(summary = "获得仓库")
 | 
			
		||||
    @Parameter(name = "id", description = "编号", required = true, example = "1024")
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('erp:warehouse:query')")
 | 
			
		||||
    public CommonResult<ErpWarehouseRespVO> getWarehouse(@RequestParam("id") Long id) {
 | 
			
		||||
        ErpWarehouseDO warehouse = warehouseService.getWarehouse(id);
 | 
			
		||||
        return success(BeanUtils.toBean(warehouse, ErpWarehouseRespVO.class));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/page")
 | 
			
		||||
    @Operation(summary = "获得仓库分页")
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('erp:warehouse:query')")
 | 
			
		||||
    public CommonResult<PageResult<ErpWarehouseRespVO>> getWarehousePage(@Valid ErpWarehousePageReqVO pageReqVO) {
 | 
			
		||||
        PageResult<ErpWarehouseDO> pageResult = warehouseService.getWarehousePage(pageReqVO);
 | 
			
		||||
        return success(BeanUtils.toBean(pageResult, ErpWarehouseRespVO.class));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/export-excel")
 | 
			
		||||
    @Operation(summary = "导出仓库 Excel")
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('erp:warehouse:export')")
 | 
			
		||||
    @OperateLog(type = EXPORT)
 | 
			
		||||
    public void exportWarehouseExcel(@Valid ErpWarehousePageReqVO pageReqVO,
 | 
			
		||||
              HttpServletResponse response) throws IOException {
 | 
			
		||||
        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
 | 
			
		||||
        List<ErpWarehouseDO> list = warehouseService.getWarehousePage(pageReqVO).getList();
 | 
			
		||||
        // 导出 Excel
 | 
			
		||||
        ExcelUtils.write(response, "仓库.xls", "数据", ErpWarehouseRespVO.class,
 | 
			
		||||
                        BeanUtils.toBean(list, ErpWarehouseRespVO.class));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,24 @@
 | 
			
		||||
package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.validation.InEnum;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.EqualsAndHashCode;
 | 
			
		||||
import lombok.ToString;
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - ERP 仓库分页 Request VO")
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
@ToString(callSuper = true)
 | 
			
		||||
public class ErpWarehousePageReqVO extends PageParam {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "仓库名称", example = "李四")
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "开启状态", example = "1")
 | 
			
		||||
    @InEnum(CommonStatusEnum.class)
 | 
			
		||||
    private Integer status;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,64 @@
 | 
			
		||||
package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.math.BigDecimal;
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - ERP 仓库 Response VO")
 | 
			
		||||
@Data
 | 
			
		||||
@ExcelIgnoreUnannotated
 | 
			
		||||
public class ErpWarehouseRespVO {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11614")
 | 
			
		||||
    @ExcelProperty("仓库编号")
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "仓库名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
 | 
			
		||||
    @ExcelProperty("仓库名称")
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "仓库地址", example = "上海陆家嘴")
 | 
			
		||||
    @ExcelProperty("仓库地址")
 | 
			
		||||
    private String address;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
 | 
			
		||||
    @ExcelProperty("排序")
 | 
			
		||||
    private Long sort;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "备注", example = "随便")
 | 
			
		||||
    @ExcelProperty("备注")
 | 
			
		||||
    private String remark;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "负责人", example = "芋头")
 | 
			
		||||
    @ExcelProperty("负责人")
 | 
			
		||||
    private String principal;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "仓储费,单位:元", example = "13973")
 | 
			
		||||
    @ExcelProperty("仓储费,单位:元")
 | 
			
		||||
    private BigDecimal warehousePrice;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "搬运费,单位:元", example = "9903")
 | 
			
		||||
    @ExcelProperty("搬运费,单位:元")
 | 
			
		||||
    private BigDecimal truckagePrice;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "开启状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
 | 
			
		||||
    @ExcelProperty(value = "开启状态", converter = DictConvert.class)
 | 
			
		||||
    @DictFormat(DictTypeConstants.COMMON_STATUS)
 | 
			
		||||
    private Integer status;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "是否默认", example = "1")
 | 
			
		||||
    @ExcelProperty("是否默认")
 | 
			
		||||
    private Boolean defaultStatus;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
 | 
			
		||||
    @ExcelProperty("创建时间")
 | 
			
		||||
    private LocalDateTime createTime;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,47 @@
 | 
			
		||||
package cn.iocoder.yudao.module.erp.controller.admin.stock.vo;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.validation.InEnum;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import jakarta.validation.constraints.NotEmpty;
 | 
			
		||||
import jakarta.validation.constraints.NotNull;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.math.BigDecimal;
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - ERP 仓库新增/修改 Request VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class ErpWarehouseSaveReqVO {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11614")
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "仓库名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
 | 
			
		||||
    @NotEmpty(message = "仓库名称不能为空")
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "仓库地址", example = "上海陆家嘴")
 | 
			
		||||
    private String address;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
 | 
			
		||||
    @NotNull(message = "排序不能为空")
 | 
			
		||||
    private Long sort;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "备注", example = "随便")
 | 
			
		||||
    private String remark;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "负责人", example = "芋头")
 | 
			
		||||
    private String principal;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "仓储费,单位:元", example = "13973")
 | 
			
		||||
    private BigDecimal warehousePrice;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "搬运费,单位:元", example = "9903")
 | 
			
		||||
    private BigDecimal truckagePrice;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "开启状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
 | 
			
		||||
    @NotNull(message = "开启状态不能为空")
 | 
			
		||||
    @InEnum(CommonStatusEnum.class)
 | 
			
		||||
    private Integer status;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,70 @@
 | 
			
		||||
package cn.iocoder.yudao.module.erp.dal.dataobject.stock;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.KeySequence;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableId;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableName;
 | 
			
		||||
import lombok.*;
 | 
			
		||||
 | 
			
		||||
import java.math.BigDecimal;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ERP 仓库 DO
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 */
 | 
			
		||||
@TableName("erp_warehouse")
 | 
			
		||||
@KeySequence("erp_warehouse_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
@ToString(callSuper = true)
 | 
			
		||||
@Builder
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@AllArgsConstructor
 | 
			
		||||
public class ErpWarehouseDO extends BaseDO {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 仓库编号
 | 
			
		||||
     */
 | 
			
		||||
    @TableId
 | 
			
		||||
    private Long id;
 | 
			
		||||
    /**
 | 
			
		||||
     * 仓库名称
 | 
			
		||||
     */
 | 
			
		||||
    private String name;
 | 
			
		||||
    /**
 | 
			
		||||
     * 仓库地址
 | 
			
		||||
     */
 | 
			
		||||
    private String address;
 | 
			
		||||
    /**
 | 
			
		||||
     * 排序
 | 
			
		||||
     */
 | 
			
		||||
    private Long sort;
 | 
			
		||||
    /**
 | 
			
		||||
     * 备注
 | 
			
		||||
     */
 | 
			
		||||
    private String remark;
 | 
			
		||||
    /**
 | 
			
		||||
     * 负责人
 | 
			
		||||
     */
 | 
			
		||||
    private String principal;
 | 
			
		||||
    /**
 | 
			
		||||
     * 仓储费,单位:元
 | 
			
		||||
     */
 | 
			
		||||
    private BigDecimal warehousePrice;
 | 
			
		||||
    /**
 | 
			
		||||
     * 搬运费,单位:元
 | 
			
		||||
     */
 | 
			
		||||
    private BigDecimal truckagePrice;
 | 
			
		||||
    /**
 | 
			
		||||
     * 开启状态
 | 
			
		||||
     *
 | 
			
		||||
     * 枚举 {@link cn.iocoder.yudao.framework.common.enums.CommonStatusEnum}
 | 
			
		||||
     */
 | 
			
		||||
    private Integer status;
 | 
			
		||||
    /**
 | 
			
		||||
     * 是否默认
 | 
			
		||||
     */
 | 
			
		||||
    private Boolean defaultStatus;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,29 @@
 | 
			
		||||
package cn.iocoder.yudao.module.erp.dal.mysql.stock;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehousePageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ERP 仓库 Mapper
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 */
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface ErpWarehouseMapper extends BaseMapperX<ErpWarehouseDO> {
 | 
			
		||||
 | 
			
		||||
    default PageResult<ErpWarehouseDO> selectPage(ErpWarehousePageReqVO reqVO) {
 | 
			
		||||
        return selectPage(reqVO, new LambdaQueryWrapperX<ErpWarehouseDO>()
 | 
			
		||||
                .likeIfPresent(ErpWarehouseDO::getName, reqVO.getName())
 | 
			
		||||
                .eqIfPresent(ErpWarehouseDO::getStatus, reqVO.getStatus())
 | 
			
		||||
                .orderByDesc(ErpWarehouseDO::getId));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    default ErpWarehouseDO selectByDefaultStatus() {
 | 
			
		||||
        return selectOne(ErpWarehouseDO::getDefaultStatus, true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,62 @@
 | 
			
		||||
package cn.iocoder.yudao.module.erp.service.stock;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.ErpWarehouseSaveReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehousePageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
 | 
			
		||||
import jakarta.validation.Valid;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ERP 仓库 Service 接口
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 */
 | 
			
		||||
public interface ErpWarehouseService {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 创建仓库
 | 
			
		||||
     *
 | 
			
		||||
     * @param createReqVO 创建信息
 | 
			
		||||
     * @return 编号
 | 
			
		||||
     */
 | 
			
		||||
    Long createWarehouse(@Valid ErpWarehouseSaveReqVO createReqVO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 更新ERP 仓库
 | 
			
		||||
     *
 | 
			
		||||
     * @param updateReqVO 更新信息
 | 
			
		||||
     */
 | 
			
		||||
    void updateWarehouse(@Valid ErpWarehouseSaveReqVO updateReqVO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 更新仓库默认状态
 | 
			
		||||
     *
 | 
			
		||||
     * @param id     编号
 | 
			
		||||
     * @param defaultStatus 默认状态
 | 
			
		||||
     */
 | 
			
		||||
    void updateWarehouseDefaultStatus(Long id, Boolean defaultStatus);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除仓库
 | 
			
		||||
     *
 | 
			
		||||
     * @param id 编号
 | 
			
		||||
     */
 | 
			
		||||
    void deleteWarehouse(Long id);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得仓库
 | 
			
		||||
     *
 | 
			
		||||
     * @param id 编号
 | 
			
		||||
     * @return 仓库
 | 
			
		||||
     */
 | 
			
		||||
    ErpWarehouseDO getWarehouse(Long id);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得仓库分页
 | 
			
		||||
     *
 | 
			
		||||
     * @param pageReqVO 分页查询
 | 
			
		||||
     * @return 仓库分页
 | 
			
		||||
     */
 | 
			
		||||
    PageResult<ErpWarehouseDO> getWarehousePage(ErpWarehousePageReqVO pageReqVO);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,88 @@
 | 
			
		||||
package cn.iocoder.yudao.module.erp.service.stock;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 | 
			
		||||
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.ErpWarehouseSaveReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.warehouse.ErpWarehousePageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
 | 
			
		||||
import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpWarehouseMapper;
 | 
			
		||||
import jakarta.annotation.Resource;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.springframework.transaction.annotation.Transactional;
 | 
			
		||||
import org.springframework.validation.annotation.Validated;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 | 
			
		||||
import static cn.iocoder.yudao.module.erp.ErrorCodeConstants.WAREHOUSE_NOT_EXISTS;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ERP 仓库 Service 实现类
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 */
 | 
			
		||||
@Service
 | 
			
		||||
@Validated
 | 
			
		||||
public class ErpWarehouseServiceImpl implements ErpWarehouseService {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private ErpWarehouseMapper warehouseMapper;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Long createWarehouse(ErpWarehouseSaveReqVO createReqVO) {
 | 
			
		||||
        // 插入
 | 
			
		||||
        ErpWarehouseDO warehouse = BeanUtils.toBean(createReqVO, ErpWarehouseDO.class);
 | 
			
		||||
        warehouseMapper.insert(warehouse);
 | 
			
		||||
        // 返回
 | 
			
		||||
        return warehouse.getId();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void updateWarehouse(ErpWarehouseSaveReqVO updateReqVO) {
 | 
			
		||||
        // 校验存在
 | 
			
		||||
        validateWarehouseExists(updateReqVO.getId());
 | 
			
		||||
        // 更新
 | 
			
		||||
        ErpWarehouseDO updateObj = BeanUtils.toBean(updateReqVO, ErpWarehouseDO.class);
 | 
			
		||||
        warehouseMapper.updateById(updateObj);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    public void updateWarehouseDefaultStatus(Long id, Boolean defaultStatus) {
 | 
			
		||||
        // 1. 校验存在
 | 
			
		||||
        validateWarehouseExists(id);
 | 
			
		||||
 | 
			
		||||
        // 2.1 如果开启,则需要关闭所有其它的默认
 | 
			
		||||
        if (defaultStatus) {
 | 
			
		||||
            ErpWarehouseDO warehouse = warehouseMapper.selectByDefaultStatus();
 | 
			
		||||
            if (warehouse != null) {
 | 
			
		||||
                warehouseMapper.updateById(new ErpWarehouseDO().setId(warehouse.getId()).setDefaultStatus(false));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        // 2.2 更新对应的默认状态
 | 
			
		||||
        warehouseMapper.updateById(new ErpWarehouseDO().setId(id).setDefaultStatus(defaultStatus));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void deleteWarehouse(Long id) {
 | 
			
		||||
        // 校验存在
 | 
			
		||||
        validateWarehouseExists(id);
 | 
			
		||||
        // 删除
 | 
			
		||||
        warehouseMapper.deleteById(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void validateWarehouseExists(Long id) {
 | 
			
		||||
        if (warehouseMapper.selectById(id) == null) {
 | 
			
		||||
            throw exception(WAREHOUSE_NOT_EXISTS);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public ErpWarehouseDO getWarehouse(Long id) {
 | 
			
		||||
        return warehouseMapper.selectById(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public PageResult<ErpWarehouseDO> getWarehousePage(ErpWarehousePageReqVO pageReqVO) {
 | 
			
		||||
        return warehouseMapper.selectPage(pageReqVO);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,12 @@
 | 
			
		||||
<?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="cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpWarehouseMapper">
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
 | 
			
		||||
        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
 | 
			
		||||
        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
 | 
			
		||||
        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
 | 
			
		||||
     -->
 | 
			
		||||
 | 
			
		||||
</mapper>
 | 
			
		||||
		Reference in New Issue
	
	Block a user