Browse Source

产品管理

dev
xiaoyu 1 month ago
parent
commit
3c0af44e80
  1. 71
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/gss/DhcProductInfoController.java
  2. 49
      ruoyi-system/src/main/java/com/ruoyi/gss/domain/DhcProductInfo.java
  3. 51
      ruoyi-system/src/main/java/com/ruoyi/gss/domain/DhcProductVersion.java
  4. 16
      ruoyi-system/src/main/java/com/ruoyi/gss/mapper/DhcProductInfoMapper.java
  5. 16
      ruoyi-system/src/main/java/com/ruoyi/gss/service/IDhcProductInfoService.java
  6. 39
      ruoyi-system/src/main/java/com/ruoyi/gss/service/impl/DhcProductInfoServiceImpl.java
  7. 116
      ruoyi-system/src/main/resources/mapper/gss/DhcProductInfoMapper.xml
  8. 70
      sql/gss/产品表.sql

71
ruoyi-admin/src/main/java/com/ruoyi/web/controller/gss/DhcProductInfoController.java

@ -0,0 +1,71 @@ @@ -0,0 +1,71 @@
package com.ruoyi.web.controller.gss;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.gss.domain.DhcProductInfo;
import com.ruoyi.gss.service.IDhcProductInfoService;
@RestController
@RequestMapping("/gss/product")
public class DhcProductInfoController extends BaseController {
@Autowired
private IDhcProductInfoService dhcProductInfoService;
/**
* 查询产品列表
*
* @param dhcProductInfo 产品信息查询对象
* @return 分页数据集合
*/
@PreAuthorize("@ss.hasPermi('gss:product:list')")
@GetMapping("/list")
public TableDataInfo list(DhcProductInfo dhcProductInfo) {
startPage();
List<DhcProductInfo> list = dhcProductInfoService.selectDhcProductInfoList(dhcProductInfo);
return getDataTable(list);
}
@PreAuthorize("@ss.hasPermi('gss:product:export')")
@Log(title = "产品管理", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult export(DhcProductInfo dhcProductInfo) {
List<DhcProductInfo> list = dhcProductInfoService.selectDhcProductInfoList(dhcProductInfo);
ExcelUtil<DhcProductInfo> util = new ExcelUtil<DhcProductInfo>(DhcProductInfo.class);
return util.exportExcel(list, "产品数据");
}
@PreAuthorize("@ss.hasPermi('gss:product:query')")
@GetMapping(value = "/{productId}")
public AjaxResult getInfo(@PathVariable("productId") Long productId) {
return success(dhcProductInfoService.selectDhcProductInfoById(productId));
}
@PreAuthorize("@ss.hasPermi('gss:product:add')")
@Log(title = "产品管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody DhcProductInfo dhcProductInfo) {
return toAjax(dhcProductInfoService.insertDhcProductInfo(dhcProductInfo));
}
@PreAuthorize("@ss.hasPermi('gss:product:edit')")
@Log(title = "产品管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody DhcProductInfo dhcProductInfo) {
return toAjax(dhcProductInfoService.updateDhcProductInfo(dhcProductInfo));
}
@PreAuthorize("@ss.hasPermi('gss:product:remove')")
@Log(title = "产品管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{productIds}")
public AjaxResult remove(@PathVariable Long[] productIds) {
return toAjax(dhcProductInfoService.deleteDhcProductInfoByIds(productIds));
}
}

49
ruoyi-system/src/main/java/com/ruoyi/gss/domain/DhcProductInfo.java

@ -0,0 +1,49 @@ @@ -0,0 +1,49 @@
package com.ruoyi.gss.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
public class DhcProductInfo extends BaseEntity {
private static final long serialVersionUID = 1L;
@Excel(name = "产品ID")
private Long productId;
@Excel(name = "产品名称")
private String productName;
@Excel(name = "产品编码")
private String productCode;
@Excel(name = "所属大类编码")
private String categoryLarge;
@Excel(name = "所属中类编码")
private String categoryMiddle;
@Excel(name = "所属小类编码")
private String categorySmall;
@Excel(name = "产品状态", readConverterExp = "0=草稿,1=在售,2=下市,3=冻结")
private String productStatus;
@Excel(name = "品牌名称")
private String brandName;
@Excel(name = "品牌编码")
private String brandCode;
@Excel(name = "内外销标识", readConverterExp = "0=内销,1=外销,2=内外销")
private String salesType;
@Excel(name = "产品描述")
private String description;
private String extProperties;
private String delFlag;
// getter/setter方法省略...
}

51
ruoyi-system/src/main/java/com/ruoyi/gss/domain/DhcProductVersion.java

@ -0,0 +1,51 @@ @@ -0,0 +1,51 @@
package com.ruoyi.gss.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.math.BigDecimal;
import java.util.Date;
public class DhcProductVersion extends BaseEntity {
private static final long serialVersionUID = 1L;
private Long versionId;
private Long productId;
@Excel(name = "版本号")
private String versionNo;
@Excel(name = "版本状态", readConverterExp = "0=启用,1=停用")
private String versionStatus;
@Excel(name = "变更说明")
private String changeDesc;
@Excel(name = "毛重(kg)")
private BigDecimal grossWeight;
@Excel(name = "外包装尺寸-长(mm)")
private BigDecimal packageLength;
@Excel(name = "外包装尺寸-宽(mm)")
private BigDecimal packageWidth;
@Excel(name = "外包装尺寸-高(mm)")
private BigDecimal packageHeight;
@Excel(name = "IR时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date irDatetime;
@Excel(name = "DR时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date drDatetime;
@Excel(name = "生产版本")
private String productionVersion;
@Excel(name = "销售型号")
private String salesModel;
private String delFlag;
// getter/setter方法省略...
}

16
ruoyi-system/src/main/java/com/ruoyi/gss/mapper/DhcProductInfoMapper.java

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
package com.ruoyi.gss.mapper;
import com.ruoyi.gss.domain.DhcProductInfo;
import java.util.List;
public interface DhcProductInfoMapper {
public DhcProductInfo selectDhcProductInfoById(Long productId);
public List<DhcProductInfo> selectDhcProductInfoList(DhcProductInfo dhcProductInfo);
public int insertDhcProductInfo(DhcProductInfo dhcProductInfo);
public int updateDhcProductInfo(DhcProductInfo dhcProductInfo);
public int deleteDhcProductInfoByIds(Long[] productIds);
}

16
ruoyi-system/src/main/java/com/ruoyi/gss/service/IDhcProductInfoService.java

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
package com.ruoyi.gss.service;
import java.util.List;
import com.ruoyi.gss.domain.DhcProductInfo;
public interface IDhcProductInfoService {
public DhcProductInfo selectDhcProductInfoById(Long productId);
public List<DhcProductInfo> selectDhcProductInfoList(DhcProductInfo dhcProductInfo);
public int insertDhcProductInfo(DhcProductInfo dhcProductInfo);
public int updateDhcProductInfo(DhcProductInfo dhcProductInfo);
public int deleteDhcProductInfoByIds(Long[] productIds);
}

39
ruoyi-system/src/main/java/com/ruoyi/gss/service/impl/DhcProductInfoServiceImpl.java

@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
package com.ruoyi.gss.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.gss.mapper.DhcProductInfoMapper;
import com.ruoyi.gss.domain.DhcProductInfo;
import com.ruoyi.gss.service.IDhcProductInfoService;
@Service
public class DhcProductInfoServiceImpl implements IDhcProductInfoService {
@Autowired
private DhcProductInfoMapper dhcProductInfoMapper;
@Override
public DhcProductInfo selectDhcProductInfoById(Long productId) {
return dhcProductInfoMapper.selectDhcProductInfoById(productId);
}
@Override
public List<DhcProductInfo> selectDhcProductInfoList(DhcProductInfo dhcProductInfo) {
return dhcProductInfoMapper.selectDhcProductInfoList(dhcProductInfo);
}
@Override
public int insertDhcProductInfo(DhcProductInfo dhcProductInfo) {
return dhcProductInfoMapper.insertDhcProductInfo(dhcProductInfo);
}
@Override
public int updateDhcProductInfo(DhcProductInfo dhcProductInfo) {
return dhcProductInfoMapper.updateDhcProductInfo(dhcProductInfo);
}
@Override
public int deleteDhcProductInfoByIds(Long[] productIds) {
return dhcProductInfoMapper.deleteDhcProductInfoByIds(productIds);
}
}

116
ruoyi-system/src/main/resources/mapper/gss/DhcProductInfoMapper.xml

@ -0,0 +1,116 @@ @@ -0,0 +1,116 @@
<?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="com.ruoyi.gss.mapper.DhcProductInfoMapper">
<resultMap type="DhcProductInfo" id="DhcProductInfoResult">
<id property="productId" column="product_id" />
<result property="productName" column="product_name" />
<result property="productCode" column="product_code" />
<result property="categoryLarge" column="category_large" />
<result property="categoryMiddle" column="category_middle" />
<result property="categorySmall" column="category_small" />
<result property="productStatus" column="product_status" />
<result property="brandName" column="brand_name" />
<result property="brandCode" column="brand_code" />
<result property="salesType" column="sales_type" />
<result property="description" column="description" />
<result property="extProperties" column="ext_properties" />
<result property="delFlag" column="del_flag" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectDhcProductInfoVo">
select product_id, product_name, product_code, category_large, category_middle, category_small,
product_status, brand_name, brand_code, sales_type, description, ext_properties, del_flag,
create_by, create_time, update_by, update_time
from dhc_product_info
</sql>
<select id="selectDhcProductInfoList" parameterType="DhcProductInfo" resultMap="DhcProductInfoResult">
<include refid="selectDhcProductInfoVo"/>
<where>
<if test="productName != null and productName != ''"> and product_name like concat('%', #{productName}, '%')</if>
<if test="productCode != null and productCode != ''"> and product_code = #{productCode}</if>
<if test="categoryLarge != null and categoryLarge != ''"> and category_large = #{categoryLarge}</if>
<if test="categoryMiddle != null and categoryMiddle != ''"> and category_middle = #{categoryMiddle}</if>
<if test="categorySmall != null and categorySmall != ''"> and category_small = #{categorySmall}</if>
<if test="productStatus != null and productStatus != ''"> and product_status = #{productStatus}</if>
<if test="brandName != null and brandName != ''"> and brand_name like concat('%', #{brandName}, '%')</if>
<if test="brandCode != null and brandCode != ''"> and brand_code = #{brandCode}</if>
<if test="salesType != null and salesType != ''"> and sales_type = #{salesType}</if>
</where>
</select>
<select id="selectDhcProductInfoById" parameterType="Long" resultMap="DhcProductInfoResult">
<include refid="selectDhcProductInfoVo"/>
where product_id = #{productId}
</select>
<insert id="insertDhcProductInfo" parameterType="DhcProductInfo" useGeneratedKeys="true" keyProperty="productId">
insert into dhc_product_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="productName != null">product_name,</if>
<if test="productCode != null">product_code,</if>
<if test="categoryLarge != null">category_large,</if>
<if test="categoryMiddle != null">category_middle,</if>
<if test="categorySmall != null">category_small,</if>
<if test="productStatus != null">product_status,</if>
<if test="brandName != null">brand_name,</if>
<if test="brandCode != null">brand_code,</if>
<if test="salesType != null">sales_type,</if>
<if test="description != null">description,</if>
<if test="extProperties != null">ext_properties,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="productName != null">#{productName},</if>
<if test="productCode != null">#{productCode},</if>
<if test="categoryLarge != null">#{categoryLarge},</if>
<if test="categoryMiddle != null">#{categoryMiddle},</if>
<if test="categorySmall != null">#{categorySmall},</if>
<if test="productStatus != null">#{productStatus},</if>
<if test="brandName != null">#{brandName},</if>
<if test="brandCode != null">#{brandCode},</if>
<if test="salesType != null">#{salesType},</if>
<if test="description != null">#{description},</if>
<if test="extProperties != null">#{extProperties},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateDhcProductInfo" parameterType="DhcProductInfo">
update dhc_product_info
<trim prefix="SET" suffixOverrides=",">
<if test="productName != null">product_name = #{productName},</if>
<if test="productCode != null">product_code = #{productCode},</if>
<if test="categoryLarge != null">category_large = #{categoryLarge},</if>
<if test="categoryMiddle != null">category_middle = #{categoryMiddle},</if>
<if test="categorySmall != null">category_small = #{categorySmall},</if>
<if test="productStatus != null">product_status = #{productStatus},</if>
<if test="brandName != null">brand_name = #{brandName},</if>
<if test="brandCode != null">brand_code = #{brandCode},</if>
<if test="salesType != null">sales_type = #{salesType},</if>
<if test="description != null">description = #{description},</if>
<if test="extProperties != null">ext_properties = #{extProperties},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where product_id = #{productId}
</update>
<delete id="deleteDhcProductInfoByIds" parameterType="String">
update dhc_product_info set del_flag = '1' where product_id in
<foreach item="productId" collection="array" open="(" separator="," close=")">
#{productId}
</foreach>
</delete>
</mapper>

70
sql/gss/产品表.sql

@ -0,0 +1,70 @@ @@ -0,0 +1,70 @@
CREATE TABLE `dhc_product_info` (
`product_id` bigint NOT NULL AUTO_INCREMENT COMMENT '产品ID',
`product_name` varchar(100) COLLATE utf8mb4_general_ci NOT NULL COMMENT '产品名称',
`product_code` varchar(32) COLLATE utf8mb4_general_ci NOT NULL COMMENT '产品编码',
`category_large` varchar(10) COLLATE utf8mb4_general_ci NOT NULL COMMENT '所属大类编码',
`category_middle` varchar(10) COLLATE utf8mb4_general_ci NOT NULL COMMENT '所属中类编码',
`category_small` varchar(10) COLLATE utf8mb4_general_ci NOT NULL COMMENT '所属小类编码',
`product_status` char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '产品状态(0草稿 1在售 2下市 3冻结)',
`brand_name` varchar(64) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '品牌名称',
`brand_code` varchar(32) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '品牌编码',
`sales_type` char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '内外销标识(0内销 1外销 2内外销)',
`description` varchar(500) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '产品描述',
`ext_properties` json DEFAULT NULL COMMENT '扩展属性(JSON格式)',
`del_flag` char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`create_by` varchar(64) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`product_id`),
UNIQUE KEY `idx_product_code` (`product_code`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='产品信息表';
CREATE TABLE `dhc_product_version` (
`version_id` bigint NOT NULL AUTO_INCREMENT COMMENT '版本ID',
`product_id` bigint NOT NULL COMMENT '产品ID',
`version_no` varchar(32) COLLATE utf8mb4_general_ci NOT NULL COMMENT '版本号',
`version_status` char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '版本状态(0启用 1停用)',
`change_desc` varchar(500) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '变更说明',
`gross_weight` decimal(16,4) DEFAULT '0.0000' COMMENT '毛重(kg)',
`package_length` decimal(16,4) DEFAULT '0.0000' COMMENT '外包装尺寸-长(mm)',
`package_width` decimal(16,4) DEFAULT '0.0000' COMMENT '外包装尺寸-宽(mm)',
`package_height` decimal(16,4) DEFAULT '0.0000' COMMENT '外包装尺寸-高(mm)',
`ir_datetime` datetime DEFAULT NULL COMMENT 'IR时间',
`dr_datetime` datetime DEFAULT NULL COMMENT 'DR时间',
`production_version` varchar(32) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '生产版本',
`sales_model` varchar(32) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '销售型号',
`del_flag` char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
`create_by` varchar(64) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`version_id`),
UNIQUE KEY `idx_product_version` (`product_id`,`version_no`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='产品版本表';
---------------------------------------------------------------------------------------------------------
-- 菜单 SQL
insert into sys_menu (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('产品管理', '3', '1', 'product', 'gss/product/index', 1, 0, 'C', '0', '0', 'gss:product:list', 'product', 'admin', sysdate(), '', null, '产品管理菜单');
-- 按钮父菜单ID
SELECT @parentId := LAST_INSERT_ID();
-- 按钮 SQL
insert into sys_menu (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('产品查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', 'gss:product:query', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (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('产品新增', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', 'gss:product:add', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (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('产品修改', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', 'gss:product:edit', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (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('产品删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', 'gss:product:remove', '#', 'admin', sysdate(), '', null, '');
insert into sys_menu (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('产品导出', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', 'gss:product:export', '#', 'admin', sysdate(), '', null, '');
Loading…
Cancel
Save