diff --git a/quotation-admin/src/main/java/net/ferrum/web/controller/business/QsSpecAttributeTypesController.java b/quotation-admin/src/main/java/net/ferrum/web/controller/business/QsSpecAttributeTypesController.java new file mode 100644 index 0000000..46e85b4 --- /dev/null +++ b/quotation-admin/src/main/java/net/ferrum/web/controller/business/QsSpecAttributeTypesController.java @@ -0,0 +1,108 @@ +package net.ferrum.business.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 cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import net.ferrum.common.annotation.RepeatSubmit; +import net.ferrum.common.annotation.Log; +import net.ferrum.common.core.controller.BaseController; +import net.ferrum.common.core.domain.PageQuery; +import net.ferrum.common.core.domain.R; +import net.ferrum.common.core.validate.AddGroup; +import net.ferrum.common.core.validate.EditGroup; +import net.ferrum.common.core.validate.QueryGroup; +import net.ferrum.common.enums.BusinessType; +import net.ferrum.common.utils.poi.ExcelUtil; +import net.ferrum.business.domain.vo.QsSpecAttributeTypesVo; +import net.ferrum.business.domain.bo.QsSpecAttributeTypesBo; +import net.ferrum.business.service.IQsSpecAttributeTypesService; +import net.ferrum.common.core.page.TableDataInfo; + +/** + * 规格类型 + * + * @author ruoyi + * @date 2025-07-19 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/business/specAttributeTypes") +public class QsSpecAttributeTypesController extends BaseController { + + private final IQsSpecAttributeTypesService iQsSpecAttributeTypesService; + + /** + * 查询规格类型列表 + */ + @SaCheckPermission("business:specAttributeTypes:list") + @GetMapping("/list") + public TableDataInfo list(QsSpecAttributeTypesBo bo, PageQuery pageQuery) { + return iQsSpecAttributeTypesService.queryPageList(bo, pageQuery); + } + + /** + * 导出规格类型列表 + */ + @SaCheckPermission("business:specAttributeTypes:export") + @Log(title = "规格类型", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(QsSpecAttributeTypesBo bo, HttpServletResponse response) { + List list = iQsSpecAttributeTypesService.queryList(bo); + ExcelUtil.exportExcel(list, "规格类型", QsSpecAttributeTypesVo.class, response); + } + + /** + * 获取规格类型详细信息 + * + * @param typeId 主键 + */ + @SaCheckPermission("business:specAttributeTypes:query") + @GetMapping("/{typeId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long typeId) { + return R.ok(iQsSpecAttributeTypesService.queryById(typeId)); + } + + /** + * 新增规格类型 + */ + @SaCheckPermission("business:specAttributeTypes:add") + @Log(title = "规格类型", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody QsSpecAttributeTypesBo bo) { + return toAjax(iQsSpecAttributeTypesService.insertByBo(bo)); + } + + /** + * 修改规格类型 + */ + @SaCheckPermission("business:specAttributeTypes:edit") + @Log(title = "规格类型", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody QsSpecAttributeTypesBo bo) { + return toAjax(iQsSpecAttributeTypesService.updateByBo(bo)); + } + + /** + * 删除规格类型 + * + * @param typeIds 主键串 + */ + @SaCheckPermission("business:specAttributeTypes:remove") + @Log(title = "规格类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{typeIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] typeIds) { + return toAjax(iQsSpecAttributeTypesService.deleteWithValidByIds(Arrays.asList(typeIds), true)); + } +} diff --git a/quotation-admin/src/main/java/net/ferrum/web/controller/business/QsSpecAttributeValuesController.java b/quotation-admin/src/main/java/net/ferrum/web/controller/business/QsSpecAttributeValuesController.java new file mode 100644 index 0000000..22fb79b --- /dev/null +++ b/quotation-admin/src/main/java/net/ferrum/web/controller/business/QsSpecAttributeValuesController.java @@ -0,0 +1,124 @@ +package net.ferrum.business.controller; + +import java.util.List; +import java.util.Arrays; +import java.util.concurrent.TimeUnit; + +import cn.hutool.core.lang.tree.Tree; +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import net.ferrum.business.domain.QsSpecAttributeTypes; +import net.ferrum.business.domain.QsSpecAttributeValues; +import net.ferrum.business.service.IQsSpecAttributeTypesService; +import net.ferrum.common.core.domain.entity.SysDept; +import net.ferrum.common.core.domain.entity.SysUser; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import net.ferrum.common.annotation.RepeatSubmit; +import net.ferrum.common.annotation.Log; +import net.ferrum.common.core.controller.BaseController; +import net.ferrum.common.core.domain.PageQuery; +import net.ferrum.common.core.domain.R; +import net.ferrum.common.core.validate.AddGroup; +import net.ferrum.common.core.validate.EditGroup; +import net.ferrum.common.core.validate.QueryGroup; +import net.ferrum.common.enums.BusinessType; +import net.ferrum.common.utils.poi.ExcelUtil; +import net.ferrum.business.domain.vo.QsSpecAttributeValuesVo; +import net.ferrum.business.domain.bo.QsSpecAttributeValuesBo; +import net.ferrum.business.service.IQsSpecAttributeValuesService; +import net.ferrum.common.core.page.TableDataInfo; + +/** + * 规格参数值 + * + * @author ruoyi + * @date 2025-07-19 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/business/specAttributeValues") +public class QsSpecAttributeValuesController extends BaseController { + + private final IQsSpecAttributeValuesService iQsSpecAttributeValuesService; + private final IQsSpecAttributeTypesService iQsSpecAttributeTypesService; + + /** + * 查询规格参数值列表 + */ + @SaCheckPermission("business:specAttributeValues:list") + @GetMapping("/list") + public TableDataInfo list(QsSpecAttributeValues specAttributeValues, PageQuery pageQuery) { + return iQsSpecAttributeValuesService.selectPageSpecAttributeValuesList(specAttributeValues, pageQuery); + } + + /** + * 导出规格参数值列表 + */ + @SaCheckPermission("business:specAttributeValues:export") + @Log(title = "规格参数值", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(QsSpecAttributeValuesBo bo, HttpServletResponse response) { + List list = iQsSpecAttributeValuesService.queryList(bo); + ExcelUtil.exportExcel(list, "规格参数值", QsSpecAttributeValuesVo.class, response); + } + + /** + * 获取规格参数值详细信息 + * + * @param valueId 主键 + */ + @SaCheckPermission("business:specAttributeValues:query") + @GetMapping("/{valueId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long valueId) { + return R.ok(iQsSpecAttributeValuesService.queryById(valueId)); + } + + /** + * 新增规格参数值 + */ + @SaCheckPermission("business:specAttributeValues:add") + @Log(title = "规格参数值", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody QsSpecAttributeValuesBo bo) { + return toAjax(iQsSpecAttributeValuesService.insertByBo(bo)); + } + + /** + * 修改规格参数值 + */ + @SaCheckPermission("business:specAttributeValues:edit") + @Log(title = "规格参数值", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody QsSpecAttributeValuesBo bo) { + return toAjax(iQsSpecAttributeValuesService.updateByBo(bo)); + } + + /** + * 删除规格参数值 + * + * @param valueIds 主键串 + */ + @SaCheckPermission("business:specAttributeValues:remove") + @Log(title = "规格参数值", businessType = BusinessType.DELETE) + @DeleteMapping("/{valueIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] valueIds) { + return toAjax(iQsSpecAttributeValuesService.deleteWithValidByIds(Arrays.asList(valueIds), true)); + } + + /** + * 获取规格参数类型列表 + */ + @SaCheckPermission("business:specAttributeValues:list") + @GetMapping("/specAttributeTypeList") + public R< List> selectSpecAttributeTypesList(QsSpecAttributeTypes type) { + return R.ok(iQsSpecAttributeTypesService.selectSpecAttributeTypesList(type)); + } +} diff --git a/quotation-system/src/main/java/net/ferrum/business/domain/QsSpecAttributeTypes.java b/quotation-system/src/main/java/net/ferrum/business/domain/QsSpecAttributeTypes.java new file mode 100644 index 0000000..eadc24c --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/domain/QsSpecAttributeTypes.java @@ -0,0 +1,44 @@ +package net.ferrum.business.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 net.ferrum.common.core.domain.BaseEntity; + +/** + * 规格类型对象 qs_spec_attribute_types + * + * @author ruoyi + * @date 2025-07-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("qs_spec_attribute_types") +public class QsSpecAttributeTypes extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 规格参数类型ID + */ + @TableId(value = "type_id") + private Long typeId; + /** + * 规格参数类别 + */ + private String typeName; + /** + * 备注 + */ + private String remark; + /** + * 逻辑删除标志 + */ + @TableLogic + private String delFlag; + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/domain/QsSpecAttributeValues.java b/quotation-system/src/main/java/net/ferrum/business/domain/QsSpecAttributeValues.java new file mode 100644 index 0000000..a085e7a --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/domain/QsSpecAttributeValues.java @@ -0,0 +1,60 @@ +package net.ferrum.business.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 lombok.NoArgsConstructor; +import net.ferrum.common.core.domain.BaseEntity; +import net.ferrum.common.core.domain.entity.SysDept; + +/** + * 规格参数值对象 qs_spec_attribute_values + * + * @author ruoyi + * @date 2025-07-19 + */ +@Data +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName("qs_spec_attribute_values") +public class QsSpecAttributeValues extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 规格参数值ID + */ + @TableId(value = "value_id") + private Long valueId; + /** + * 规格参数类型ID + */ + private Long typeId; + /** + * 规格参数具体值 + */ + private String value; + /** + * 备注 + */ + private String remark; + /** + * 逻辑删除标志 + */ + @TableLogic + private String delFlag; + + /** + * 规格参数类型对象 + */ + @TableField(exist = false) + private QsSpecAttributeTypes specType; + + @TableField(exist = false) + private String specTypeName; + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/domain/bo/QsSpecAttributeTypesBo.java b/quotation-system/src/main/java/net/ferrum/business/domain/bo/QsSpecAttributeTypesBo.java new file mode 100644 index 0000000..96ee28c --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/domain/bo/QsSpecAttributeTypesBo.java @@ -0,0 +1,42 @@ +package net.ferrum.business.domain.bo; + +import net.ferrum.common.core.validate.AddGroup; +import net.ferrum.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import net.ferrum.common.core.domain.BaseEntity; + +/** + * 规格类型业务对象 qs_spec_attribute_types + * + * @author ruoyi + * @date 2025-07-19 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class QsSpecAttributeTypesBo extends BaseEntity { + + /** + * 规格参数类型ID + */ + @NotNull(message = "规格参数类型ID不能为空", groups = { EditGroup.class }) + private Long typeId; + + /** + * 规格参数类别 + */ + @NotBlank(message = "规格参数类别不能为空", groups = { AddGroup.class, EditGroup.class }) + private String typeName; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/domain/bo/QsSpecAttributeValuesBo.java b/quotation-system/src/main/java/net/ferrum/business/domain/bo/QsSpecAttributeValuesBo.java new file mode 100644 index 0000000..241aa95 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/domain/bo/QsSpecAttributeValuesBo.java @@ -0,0 +1,48 @@ +package net.ferrum.business.domain.bo; + +import net.ferrum.common.core.validate.AddGroup; +import net.ferrum.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import net.ferrum.common.core.domain.BaseEntity; + +/** + * 规格参数值业务对象 qs_spec_attribute_values + * + * @author ruoyi + * @date 2025-07-19 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class QsSpecAttributeValuesBo extends BaseEntity { + + /** + * 规格参数值ID + */ + @NotNull(message = "规格参数值ID不能为空", groups = { EditGroup.class }) + private Long valueId; + + /** + * 规格参数类型ID + */ + @NotNull(message = "规格参数类型ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long typeId; + + /** + * 规格参数具体值 + */ + @NotBlank(message = "规格参数具体值不能为空", groups = { AddGroup.class, EditGroup.class }) + private String value; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/domain/vo/QsSpecAttributeTypesVo.java b/quotation-system/src/main/java/net/ferrum/business/domain/vo/QsSpecAttributeTypesVo.java new file mode 100644 index 0000000..0ff20eb --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/domain/vo/QsSpecAttributeTypesVo.java @@ -0,0 +1,43 @@ +package net.ferrum.business.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import net.ferrum.common.annotation.ExcelDictFormat; +import net.ferrum.common.convert.ExcelDictConvert; +import lombok.Data; +import java.util.Date; + + + +/** + * 规格类型视图对象 qs_spec_attribute_types + * + * @author ruoyi + * @date 2025-07-19 + */ +@Data +@ExcelIgnoreUnannotated +public class QsSpecAttributeTypesVo { + + private static final long serialVersionUID = 1L; + + /** + * 规格参数类型ID + */ + @ExcelProperty(value = "规格参数类型ID") + private Long typeId; + + /** + * 规格参数类别 + */ + @ExcelProperty(value = "规格参数类别") + private String typeName; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/domain/vo/QsSpecAttributeValuesVo.java b/quotation-system/src/main/java/net/ferrum/business/domain/vo/QsSpecAttributeValuesVo.java new file mode 100644 index 0000000..e24ed91 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/domain/vo/QsSpecAttributeValuesVo.java @@ -0,0 +1,43 @@ +package net.ferrum.business.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import net.ferrum.common.annotation.ExcelDictFormat; +import net.ferrum.common.convert.ExcelDictConvert; +import lombok.Data; +import java.util.Date; + + + +/** + * 规格参数值视图对象 qs_spec_attribute_values + * + * @author ruoyi + * @date 2025-07-19 + */ +@Data +@ExcelIgnoreUnannotated +public class QsSpecAttributeValuesVo { + + private static final long serialVersionUID = 1L; + + /** + * 规格参数类型ID + */ + @ExcelProperty(value = "规格参数类型ID") + private Long typeId; + + /** + * 规格参数具体值 + */ + @ExcelProperty(value = "规格参数具体值") + private String value; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/mapper/QsSpecAttributeTypesMapper.java b/quotation-system/src/main/java/net/ferrum/business/mapper/QsSpecAttributeTypesMapper.java new file mode 100644 index 0000000..09ccfe4 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/mapper/QsSpecAttributeTypesMapper.java @@ -0,0 +1,24 @@ +package net.ferrum.business.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import net.ferrum.business.domain.QsSpecAttributeTypes; +import net.ferrum.business.domain.vo.QsSpecAttributeTypesVo; +import net.ferrum.common.core.domain.entity.SysUser; +import net.ferrum.common.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 规格类型Mapper接口 + * + * @author ruoyi + * @date 2025-07-19 + */ +@Mapper +public interface QsSpecAttributeTypesMapper extends BaseMapperPlus { + + public List selectSpecAttributeTypesList(@Param(Constants.WRAPPER) Wrapper queryWrapper); +} diff --git a/quotation-system/src/main/java/net/ferrum/business/mapper/QsSpecAttributeValuesMapper.java b/quotation-system/src/main/java/net/ferrum/business/mapper/QsSpecAttributeValuesMapper.java new file mode 100644 index 0000000..0478c05 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/mapper/QsSpecAttributeValuesMapper.java @@ -0,0 +1,23 @@ +package net.ferrum.business.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import net.ferrum.business.domain.QsSpecAttributeValues; +import net.ferrum.business.domain.vo.QsSpecAttributeValuesVo; +import net.ferrum.business.domain.QsSpecAttributeValues; +import net.ferrum.common.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 规格参数值Mapper接口 + * + * @author ruoyi + * @date 2025-07-19 + */ +@Mapper +public interface QsSpecAttributeValuesMapper extends BaseMapperPlus { + + Page selectPageSpecAttributeValuesList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); +} diff --git a/quotation-system/src/main/java/net/ferrum/business/service/IQsSpecAttributeTypesService.java b/quotation-system/src/main/java/net/ferrum/business/service/IQsSpecAttributeTypesService.java new file mode 100644 index 0000000..19d918e --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/service/IQsSpecAttributeTypesService.java @@ -0,0 +1,56 @@ +package net.ferrum.business.service; + +import net.ferrum.business.domain.QsSpecAttributeTypes; +import net.ferrum.business.domain.vo.QsSpecAttributeTypesVo; +import net.ferrum.business.domain.bo.QsSpecAttributeTypesBo; +import net.ferrum.common.core.page.TableDataInfo; +import net.ferrum.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 规格类型Service接口 + * + * @author ruoyi + * @date 2025-07-19 + */ +public interface IQsSpecAttributeTypesService { + + /** + * 查询规格类型 + */ + QsSpecAttributeTypesVo queryById(Long typeId); + + /** + * 查询规格类型列表 + */ + TableDataInfo queryPageList(QsSpecAttributeTypesBo bo, PageQuery pageQuery); + + /** + * 查询规格类型列表 + */ + List queryList(QsSpecAttributeTypesBo bo); + + /** + * 新增规格类型 + */ + Boolean insertByBo(QsSpecAttributeTypesBo bo); + + /** + * 修改规格类型 + */ + Boolean updateByBo(QsSpecAttributeTypesBo bo); + + /** + * 校验并批量删除规格类型信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 获取规格参数类型列表 + * + */ + public List selectSpecAttributeTypesList(QsSpecAttributeTypes type) ; + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/service/IQsSpecAttributeValuesService.java b/quotation-system/src/main/java/net/ferrum/business/service/IQsSpecAttributeValuesService.java new file mode 100644 index 0000000..f19b3ee --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/service/IQsSpecAttributeValuesService.java @@ -0,0 +1,52 @@ +package net.ferrum.business.service; + +import net.ferrum.business.domain.QsSpecAttributeTypes; +import net.ferrum.business.domain.QsSpecAttributeValues; +import net.ferrum.business.domain.vo.QsSpecAttributeValuesVo; +import net.ferrum.business.domain.bo.QsSpecAttributeValuesBo; +import net.ferrum.common.core.domain.entity.SysUser; +import net.ferrum.common.core.page.TableDataInfo; +import net.ferrum.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 规格参数值Service接口 + * + * @author ruoyi + * @date 2025-07-19 + */ +public interface IQsSpecAttributeValuesService { + + TableDataInfoselectPageSpecAttributeValuesList(QsSpecAttributeValues specAttributeValues, PageQuery pageQuery) ; + /** + * 查询规格参数值 + */ + QsSpecAttributeValuesVo queryById(Long valueId); + + /** + * 查询规格参数值列表 + */ + TableDataInfo queryPageList(QsSpecAttributeValuesBo bo, PageQuery pageQuery); + + /** + * 查询规格参数值列表 + */ + List queryList(QsSpecAttributeValuesBo bo); + + /** + * 新增规格参数值 + */ + Boolean insertByBo(QsSpecAttributeValuesBo bo); + + /** + * 修改规格参数值 + */ + Boolean updateByBo(QsSpecAttributeValuesBo bo); + + /** + * 校验并批量删除规格参数值信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/quotation-system/src/main/java/net/ferrum/business/service/impl/QsSpecAttributeTypesServiceImpl.java b/quotation-system/src/main/java/net/ferrum/business/service/impl/QsSpecAttributeTypesServiceImpl.java new file mode 100644 index 0000000..696b2b5 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/service/impl/QsSpecAttributeTypesServiceImpl.java @@ -0,0 +1,127 @@ +package net.ferrum.business.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import net.ferrum.common.utils.StringUtils; +import net.ferrum.common.core.page.TableDataInfo; +import net.ferrum.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 net.ferrum.business.domain.bo.QsSpecAttributeTypesBo; +import net.ferrum.business.domain.vo.QsSpecAttributeTypesVo; +import net.ferrum.business.domain.QsSpecAttributeTypes; +import net.ferrum.business.mapper.QsSpecAttributeTypesMapper; +import net.ferrum.business.service.IQsSpecAttributeTypesService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 规格类型Service业务层处理 + * + * @author ruoyi + * @date 2025-07-19 + */ +@RequiredArgsConstructor +@Service +public class QsSpecAttributeTypesServiceImpl implements IQsSpecAttributeTypesService { + + private final QsSpecAttributeTypesMapper baseMapper; + + /** + * 查询规格类型 + */ + @Override + public QsSpecAttributeTypesVo queryById(Long typeId){ + return baseMapper.selectVoById(typeId); + } + + /** + * 查询规格类型列表 + */ + @Override + public TableDataInfo queryPageList(QsSpecAttributeTypesBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询规格类型列表 + */ + @Override + public List queryList(QsSpecAttributeTypesBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(QsSpecAttributeTypesBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getTypeName()), QsSpecAttributeTypes::getTypeName, bo.getTypeName()); + return lqw; + } + + /** + * 新增规格类型 + */ + @Override + public Boolean insertByBo(QsSpecAttributeTypesBo bo) { + QsSpecAttributeTypes add = BeanUtil.toBean(bo, QsSpecAttributeTypes.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setTypeId(add.getTypeId()); + } + return flag; + } + + /** + * 修改规格类型 + */ + @Override + public Boolean updateByBo(QsSpecAttributeTypesBo bo) { + QsSpecAttributeTypes update = BeanUtil.toBean(bo, QsSpecAttributeTypes.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(QsSpecAttributeTypes entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除规格类型 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } + + /** + * 查询规格参数类型 + * + * @param type 要查询的规格参数类型 + * @return 部门信息集合 + */ + @Override + public List selectSpecAttributeTypesList(QsSpecAttributeTypes type) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(QsSpecAttributeTypes::getDelFlag, "0") + .eq(ObjectUtil.isNotNull(type.getTypeId()), QsSpecAttributeTypes::getTypeId, type.getTypeId()) + .like(StringUtils.isNotBlank(type.getTypeName()), QsSpecAttributeTypes::getTypeName, type.getTypeName()) + .orderByAsc(QsSpecAttributeTypes::getTypeId) + .orderByAsc(QsSpecAttributeTypes::getTypeName); + return baseMapper.selectSpecAttributeTypesList(lqw); + } +} diff --git a/quotation-system/src/main/java/net/ferrum/business/service/impl/QsSpecAttributeValuesServiceImpl.java b/quotation-system/src/main/java/net/ferrum/business/service/impl/QsSpecAttributeValuesServiceImpl.java new file mode 100644 index 0000000..282ddce --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/service/impl/QsSpecAttributeValuesServiceImpl.java @@ -0,0 +1,148 @@ +package net.ferrum.business.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import net.ferrum.business.domain.QsSpecAttributeTypes; +import net.ferrum.business.mapper.QsSpecAttributeTypesMapper; +import net.ferrum.common.constant.UserConstants; +import net.ferrum.common.core.domain.entity.SysDept; +import net.ferrum.common.core.domain.entity.SysUser; +import net.ferrum.common.helper.DataBaseHelper; +import net.ferrum.common.utils.StreamUtils; +import net.ferrum.common.utils.StringUtils; +import net.ferrum.common.core.page.TableDataInfo; +import net.ferrum.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 net.ferrum.business.domain.bo.QsSpecAttributeValuesBo; +import net.ferrum.business.domain.vo.QsSpecAttributeValuesVo; +import net.ferrum.business.domain.QsSpecAttributeValues; +import net.ferrum.business.mapper.QsSpecAttributeValuesMapper; +import net.ferrum.business.service.IQsSpecAttributeValuesService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 规格参数值Service业务层处理 + * + * @author ruoyi + * @date 2025-07-19 + */ +@RequiredArgsConstructor +@Service +public class QsSpecAttributeValuesServiceImpl implements IQsSpecAttributeValuesService { + + private final QsSpecAttributeValuesMapper baseMapper; + private final QsSpecAttributeTypesMapper specAttributeTypesMapper; + + public TableDataInfoselectPageSpecAttributeValuesList(QsSpecAttributeValues specAttributeValues, PageQuery pageQuery) { + Page page = baseMapper.selectPageSpecAttributeValuesList(pageQuery.build(), this.buildQueryWrapper(specAttributeValues)); + return TableDataInfo.build(page); + } + + /** + * 查询规格参数值 + */ + @Override + public QsSpecAttributeValuesVo queryById(Long valueId){ + return baseMapper.selectVoById(valueId); + } + + /** + * 查询规格参数值列表 + */ + @Override + public TableDataInfo queryPageList(QsSpecAttributeValuesBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询规格参数值列表 + */ + @Override + public List queryList(QsSpecAttributeValuesBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(QsSpecAttributeValuesBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getTypeId() != null, QsSpecAttributeValues::getTypeId, bo.getTypeId()); + lqw.eq(StringUtils.isNotBlank(bo.getValue()), QsSpecAttributeValues::getValue, bo.getValue()); + return lqw; + } + + private Wrapper buildQueryWrapper(QsSpecAttributeValues specAttributeValues) { + //Map params = specAttributeValues.getParams(); + //LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + QueryWrapper lqw = Wrappers.query(); + lqw.eq("a.del_flag", UserConstants.NORMAL); + lqw.eq("b.del_flag", UserConstants.NORMAL); + lqw.eq(specAttributeValues.getTypeId() != null, "a.type_id", specAttributeValues.getTypeId()); + lqw.like(StringUtils.isNotBlank(specAttributeValues.getValue()), "a.value", specAttributeValues.getValue()); + + lqw.like(StringUtils.isNotBlank(specAttributeValues.getSpecTypeName()), "b.type_name", specAttributeValues.getSpecTypeName()); + + lqw.and(ObjectUtil.isNotNull(specAttributeValues.getTypeId()), w -> { + List list = specAttributeTypesMapper.selectList(new LambdaQueryWrapper() + .select(QsSpecAttributeTypes::getTypeId)); + List ids = StreamUtils.toList(list, QsSpecAttributeTypes::getTypeId); + ids.add(specAttributeValues.getTypeId()); + w.in("a.type_id", ids); + }); + return lqw; + } + + /** + * 新增规格参数值 + */ + @Override + public Boolean insertByBo(QsSpecAttributeValuesBo bo) { + QsSpecAttributeValues add = BeanUtil.toBean(bo, QsSpecAttributeValues.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setValueId(add.getValueId()); + } + return flag; + } + + /** + * 修改规格参数值 + */ + @Override + public Boolean updateByBo(QsSpecAttributeValuesBo bo) { + QsSpecAttributeValues update = BeanUtil.toBean(bo, QsSpecAttributeValues.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(QsSpecAttributeValues entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除规格参数值 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/quotation-system/src/main/resources/mapper/business/QsSpecAttributeTypesMapper.xml b/quotation-system/src/main/resources/mapper/business/QsSpecAttributeTypesMapper.xml new file mode 100644 index 0000000..42513ab --- /dev/null +++ b/quotation-system/src/main/resources/mapper/business/QsSpecAttributeTypesMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/quotation-system/src/main/resources/mapper/business/QsSpecAttributeValuesMapper.xml b/quotation-system/src/main/resources/mapper/business/QsSpecAttributeValuesMapper.xml new file mode 100644 index 0000000..96bcf13 --- /dev/null +++ b/quotation-system/src/main/resources/mapper/business/QsSpecAttributeValuesMapper.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/script/sql/mysql/batchMenu.sql b/script/sql/mysql/batchMenu.sql new file mode 100644 index 0000000..e29dae8 --- /dev/null +++ b/script/sql/mysql/batchMenu.sql @@ -0,0 +1,19 @@ + -- 菜单 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1945779577351671809, '设计批次', '1896968401096663042', '1', 'batch', 'business/batch/index', 1, 0, 'C', '0', '0', 'business:batch:list', '#', 'admin', sysdate(), '', null, '设计批次菜单'); + +-- 按钮 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1945779577351671810, '设计批次查询', 1945779577351671809, '1', '#', '', 1, 0, 'F', '0', '0', 'business:batch:query', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1945779577351671811, '设计批次新增', 1945779577351671809, '2', '#', '', 1, 0, 'F', '0', '0', 'business:batch:add', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1945779577351671812, '设计批次修改', 1945779577351671809, '3', '#', '', 1, 0, 'F', '0', '0', 'business:batch:edit', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1945779577351671813, '设计批次删除', 1945779577351671809, '4', '#', '', 1, 0, 'F', '0', '0', 'business:batch:remove', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1945779577351671814, '设计批次导出', 1945779577351671809, '5', '#', '', 1, 0, 'F', '0', '0', 'business:batch:export', '#', 'admin', sysdate(), '', null, ''); diff --git a/script/sql/mysql/specAttributeTypesMenu.sql b/script/sql/mysql/specAttributeTypesMenu.sql new file mode 100644 index 0000000..a715e2f --- /dev/null +++ b/script/sql/mysql/specAttributeTypesMenu.sql @@ -0,0 +1,19 @@ +-- 菜单 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1946464000749457410, '规格类型', '1896968401096663042', '1', 'specAttributeTypes', 'business/specAttributeTypes/index', 1, 0, 'C', '0', '0', 'business:specAttributeTypes:list', '#', 'admin', sysdate(), '', null, '规格类型菜单'); + +-- 按钮 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1946464000749457411, '规格类型查询', 1946464000749457410, '1', '#', '', 1, 0, 'F', '0', '0', 'business:specAttributeTypes:query', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1946464000749457412, '规格类型新增', 1946464000749457410, '2', '#', '', 1, 0, 'F', '0', '0', 'business:specAttributeTypes:add', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1946464000749457413, '规格类型修改', 1946464000749457410, '3', '#', '', 1, 0, 'F', '0', '0', 'business:specAttributeTypes:edit', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1946464000749457414, '规格类型删除', 1946464000749457410, '4', '#', '', 1, 0, 'F', '0', '0', 'business:specAttributeTypes:remove', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1946464000749457415, '规格类型导出', 1946464000749457410, '5', '#', '', 1, 0, 'F', '0', '0', 'business:specAttributeTypes:export', '#', 'admin', sysdate(), '', null, ''); diff --git a/script/sql/mysql/specAttributeValuesMenu.sql b/script/sql/mysql/specAttributeValuesMenu.sql new file mode 100644 index 0000000..d65dad7 --- /dev/null +++ b/script/sql/mysql/specAttributeValuesMenu.sql @@ -0,0 +1,19 @@ +-- 菜单 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1946471974171697153, '规格参数值', '1896968401096663042', '1', 'specAttributeValues', 'business/specAttributeValues/index', 1, 0, 'C', '0', '0', 'business:specAttributeValues:list', '#', 'admin', sysdate(), '', null, '规格参数值菜单'); + +-- 按钮 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1946471974171697154, '规格参数值查询', 1946471974171697153, '1', '#', '', 1, 0, 'F', '0', '0', 'business:specAttributeValues:query', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1946471974171697155, '规格参数值新增', 1946471974171697153, '2', '#', '', 1, 0, 'F', '0', '0', 'business:specAttributeValues:add', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1946471974171697156, '规格参数值修改', 1946471974171697153, '3', '#', '', 1, 0, 'F', '0', '0', 'business:specAttributeValues:edit', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1946471974171697157, '规格参数值删除', 1946471974171697153, '4', '#', '', 1, 0, 'F', '0', '0', 'business:specAttributeValues:remove', '#', 'admin', sysdate(), '', null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values(1946471974171697158, '规格参数值导出', 1946471974171697153, '5', '#', '', 1, 0, 'F', '0', '0', 'business:specAttributeValues:export', '#', 'admin', sysdate(), '', null, '');