diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/gss/DhcProductInfoController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/gss/DhcProductInfoController.java new file mode 100644 index 0000000..acf2c1b --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/gss/DhcProductInfoController.java @@ -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 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 list = dhcProductInfoService.selectDhcProductInfoList(dhcProductInfo); + ExcelUtil util = new ExcelUtil(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)); + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/gss/domain/DhcProductInfo.java b/ruoyi-system/src/main/java/com/ruoyi/gss/domain/DhcProductInfo.java new file mode 100644 index 0000000..58ed291 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/gss/domain/DhcProductInfo.java @@ -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方法省略... +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/gss/domain/DhcProductVersion.java b/ruoyi-system/src/main/java/com/ruoyi/gss/domain/DhcProductVersion.java new file mode 100644 index 0000000..c311402 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/gss/domain/DhcProductVersion.java @@ -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方法省略... +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/gss/mapper/DhcProductInfoMapper.java b/ruoyi-system/src/main/java/com/ruoyi/gss/mapper/DhcProductInfoMapper.java new file mode 100644 index 0000000..0826a80 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/gss/mapper/DhcProductInfoMapper.java @@ -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 selectDhcProductInfoList(DhcProductInfo dhcProductInfo); + + public int insertDhcProductInfo(DhcProductInfo dhcProductInfo); + + public int updateDhcProductInfo(DhcProductInfo dhcProductInfo); + + public int deleteDhcProductInfoByIds(Long[] productIds); +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/gss/service/IDhcProductInfoService.java b/ruoyi-system/src/main/java/com/ruoyi/gss/service/IDhcProductInfoService.java new file mode 100644 index 0000000..9c5b81a --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/gss/service/IDhcProductInfoService.java @@ -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 selectDhcProductInfoList(DhcProductInfo dhcProductInfo); + + public int insertDhcProductInfo(DhcProductInfo dhcProductInfo); + + public int updateDhcProductInfo(DhcProductInfo dhcProductInfo); + + public int deleteDhcProductInfoByIds(Long[] productIds); +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/gss/service/impl/DhcProductInfoServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/gss/service/impl/DhcProductInfoServiceImpl.java new file mode 100644 index 0000000..b3c2ad3 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/gss/service/impl/DhcProductInfoServiceImpl.java @@ -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 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); + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/gss/DhcProductInfoMapper.xml b/ruoyi-system/src/main/resources/mapper/gss/DhcProductInfoMapper.xml new file mode 100644 index 0000000..a34f04d --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/gss/DhcProductInfoMapper.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + insert into dhc_product_info + + product_name, + product_code, + category_large, + category_middle, + category_small, + product_status, + brand_name, + brand_code, + sales_type, + description, + ext_properties, + create_by, + create_time, + update_by, + update_time, + + + #{productName}, + #{productCode}, + #{categoryLarge}, + #{categoryMiddle}, + #{categorySmall}, + #{productStatus}, + #{brandName}, + #{brandCode}, + #{salesType}, + #{description}, + #{extProperties}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update dhc_product_info + + product_name = #{productName}, + product_code = #{productCode}, + category_large = #{categoryLarge}, + category_middle = #{categoryMiddle}, + category_small = #{categorySmall}, + product_status = #{productStatus}, + brand_name = #{brandName}, + brand_code = #{brandCode}, + sales_type = #{salesType}, + description = #{description}, + ext_properties = #{extProperties}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where product_id = #{productId} + + + + update dhc_product_info set del_flag = '1' where product_id in + + #{productId} + + + \ No newline at end of file diff --git a/sql/gss/产品表.sql b/sql/gss/产品表.sql index e69de29..ad364ab 100644 --- a/sql/gss/产品表.sql +++ b/sql/gss/产品表.sql @@ -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, ''); \ No newline at end of file