From c98d861d94f596c4423b418f7c935acd612c9b60 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期三, 03 十二月 2025 17:35:53 +0800
Subject: [PATCH] 产品明细增删改

---
 src/main/java/com/ruoyi/procurementrecord/service/IProductDetailsService.java         |   17 ++
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProductDetailsServiceImpl.java |   63 +++++++
 src/main/java/com/ruoyi/procurementrecord/controller/ProductDetailsController.java    |   45 +++++
 src/main/java/com/ruoyi/procurementrecord/pojo/ProductDetails.java                    |   57 +++++++
 pom.xml                                                                               |    6 
 src/main/java/com/ruoyi/procurementrecord/mapper/ProductDetailsMapper.java            |    9 +
 src/main/resources/application.yml                                                    |    2 
 src/main/resources/application-sqd.yml                                                |  226 ++++++++++++++++++++++++++++
 8 files changed, 424 insertions(+), 1 deletions(-)

diff --git a/pom.xml b/pom.xml
index 17973d1..88a0f6b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -295,6 +295,12 @@
             <version>4.0.3</version>
         </dependency>
 
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.8.11</version>
+        </dependency>
+
     </dependencies>
 
 	<build>
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProductDetailsController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProductDetailsController.java
new file mode 100644
index 0000000..3560a3e
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProductDetailsController.java
@@ -0,0 +1,45 @@
+package com.ruoyi.procurementrecord.controller;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.procurementrecord.pojo.ProductDetails;
+import com.ruoyi.procurementrecord.pojo.ReturnManagement;
+import com.ruoyi.procurementrecord.service.IProductDetailsService;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/productDetails")
+public class ProductDetailsController {
+
+    private final IProductDetailsService productDetailsService;
+
+    @GetMapping("/list")
+    @ApiOperation("浜у搧鏌ヨ")
+    public AjaxResult listPage(Page<ProductDetails> page, ProductDetails productDetails) {
+        IPage<ProductDetails> result = productDetailsService.listPage(page, productDetails);
+        return AjaxResult.success(result);
+    }
+
+    @PostMapping("/addOrUpdate")
+    @ApiOperation("浜у搧鏂板鍜屾洿鏂�")
+    public AjaxResult addOrUpdate(@RequestBody ProductDetails productDetails) {
+        boolean b = productDetailsService.addOrUpdate(productDetails);
+        return AjaxResult.success(b);
+    }
+
+
+    @DeleteMapping("/deleteByIds")
+    @ApiOperation("浜у搧鍒犻櫎")
+    public AjaxResult deleteByIds(@RequestParam List<Long> ids) {
+        boolean b = productDetailsService.deleteByIds(ids);
+        return AjaxResult.success(b);
+    }
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/ProductDetailsMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/ProductDetailsMapper.java
new file mode 100644
index 0000000..6e46e94
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/ProductDetailsMapper.java
@@ -0,0 +1,9 @@
+package com.ruoyi.procurementrecord.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.procurementrecord.pojo.ProductDetails;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ProductDetailsMapper extends BaseMapper<ProductDetails> {
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ProductDetails.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ProductDetails.java
new file mode 100644
index 0000000..345a65d
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ProductDetails.java
@@ -0,0 +1,57 @@
+package com.ruoyi.procurementrecord.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableName;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("product_details")
+@ApiModel(description="浜у搧鏄庣粏琛�")
+public class ProductDetails {
+
+    @ApiModelProperty(value="鑷涓婚敭ID")
+    private Integer id;
+    @ApiModelProperty(value="浜у搧鍚嶇О")
+    private String productName;
+    @ApiModelProperty(value="鍗曚环锛堝厓锛�")
+    private BigDecimal unitPrice;
+    @ApiModelProperty(value="浜у搧楂樺害锛坈m锛�")
+    private BigDecimal productHeightCm;
+    @ApiModelProperty(value="鏁伴噺锛堜欢锛�")
+    private Integer quantityPiece;
+    @ApiModelProperty(value="鏁伴噺锛堢洅锛�")
+    private Integer quantityBox;
+    @ApiModelProperty(value="绾哥瑙勬牸锛坈m锛夛紝鏍煎紡绀轰緥锛�30*20*15")
+    private String cartonSpecCm;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty(value = "淇敼鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+    @ApiModelProperty(value = "绉熸埛ID")
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/IProductDetailsService.java b/src/main/java/com/ruoyi/procurementrecord/service/IProductDetailsService.java
new file mode 100644
index 0000000..2941e46
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/service/IProductDetailsService.java
@@ -0,0 +1,17 @@
+package com.ruoyi.procurementrecord.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.procurementrecord.pojo.ProductDetails;
+import com.ruoyi.procurementrecord.pojo.ReturnManagement;
+
+import java.util.List;
+
+public interface IProductDetailsService extends IService<ProductDetails> {
+    IPage<ProductDetails> listPage(Page<ProductDetails> page, ProductDetails productDetails);
+
+    boolean addOrUpdate(ProductDetails productDetails);
+
+    boolean deleteByIds(List<Long> ids);
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProductDetailsServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProductDetailsServiceImpl.java
new file mode 100644
index 0000000..9a9b8b1
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProductDetailsServiceImpl.java
@@ -0,0 +1,63 @@
+package com.ruoyi.procurementrecord.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.procurementrecord.mapper.ProductDetailsMapper;
+import com.ruoyi.procurementrecord.pojo.ProductDetails;
+import com.ruoyi.procurementrecord.service.IProductDetailsService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@AllArgsConstructor
+@Transactional(rollbackFor = Exception.class)
+public class ProductDetailsServiceImpl extends ServiceImpl<ProductDetailsMapper, ProductDetails> implements IProductDetailsService {
+
+    private final ProductDetailsMapper productDetailsMapper;
+
+    @Override
+    public IPage<ProductDetails> listPage(Page<ProductDetails> page, ProductDetails productDetails) {
+        QueryWrapper<ProductDetails> queryWrapper = new QueryWrapper<>();
+
+        if (productDetails != null) {
+            Map<String, Object> paramMap = BeanUtil.beanToMap(productDetails, false, true);
+            queryWrapper.allEq(paramMap);
+        }
+
+        return productDetailsMapper.selectPage(page, queryWrapper);
+    }
+
+    @Override
+    public boolean addOrUpdate(ProductDetails productDetails) {
+        if (productDetails == null) return false;
+
+        LocalDateTime now = LocalDateTime.now();
+        boolean isUpdate = productDetails.getId() != null;
+
+        if (!isUpdate) {
+            // 鏂板
+            productDetails.setCreateTime(now);
+            return productDetailsMapper.insert(productDetails) > 0;
+        } else {
+            // 鏇存柊
+            if (productDetailsMapper.selectById(productDetails.getId()) == null) {
+                return false;
+            }
+            productDetails.setUpdateTime(now);
+            return productDetailsMapper.updateById(productDetails) > 0;
+        }
+    }
+
+    @Override
+    public boolean deleteByIds(List<Long> ids) {
+        return productDetailsMapper.deleteBatchIds(ids) > 0;
+    }
+}
diff --git a/src/main/resources/application-sqd.yml b/src/main/resources/application-sqd.yml
new file mode 100644
index 0000000..cba56dc
--- /dev/null
+++ b/src/main/resources/application-sqd.yml
@@ -0,0 +1,226 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+  # 鍚嶇О
+  name: RuoYi
+  # 鐗堟湰
+  version: 3.8.9
+  # 鐗堟潈骞翠唤
+  copyrightYear: 2025
+  # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+  profile: /javaWork/product-inventory-management/file
+
+  # 鑾峰彇ip鍦板潃寮�鍏�
+  addressEnabled: false
+  # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+  captchaType: math
+
+  user:
+    password:
+      maxRetryCount: 0  # 鏈�澶ч敊璇鏁帮紝璁句负0琛ㄧず涓嶉攣瀹氾紙榛樿鏄�5锛�
+      lockTime: 10      # 閿佸畾鏃堕棿锛堝垎閽燂級锛岃嫢涓婇潰璁句负0锛岃繖閲屾棤闇�鏀�
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+  # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+  port: 8888
+  servlet:
+    # 搴旂敤鐨勮闂矾寰�
+    context-path: /
+  tomcat:
+    # tomcat鐨刄RI缂栫爜
+    uri-encoding: UTF-8
+    # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+    accept-count: 1000
+    threads:
+      # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+      max: 800
+      # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+      min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+  level:
+    com.ruoyi: warn
+    org.springframework: warn
+
+minio:
+  endpoint: http://114.132.189.42/
+  port: 7019
+  secure: false
+  accessKey: admin
+  secretKey: 12345678
+  preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+  default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+  password:
+    # 瀵嗙爜鏈�澶ч敊璇鏁�
+    maxRetryCount: 5
+    # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+    lockTime: 10
+
+# Spring閰嶇疆
+spring:
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.cj.jdbc.Driver
+    druid:
+      # 涓诲簱鏁版嵁婧�
+      master:
+        url: jdbc:mysql://114.132.189.42:9099/product-inventory-management-sqd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        username: root
+        password: xd@123456..
+      # 浠庡簱鏁版嵁婧�
+      slave:
+        # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+        enabled: false
+        url:
+        username:
+        password:
+      # 鍒濆杩炴帴鏁�
+      initialSize: 5
+      # 鏈�灏忚繛鎺ユ睜鏁伴噺
+      minIdle: 10
+      # 鏈�澶ц繛鎺ユ睜鏁伴噺
+      maxActive: 20
+      # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+      maxWait: 60000
+      # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+      connectTimeout: 30000
+      # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+      socketTimeout: 60000
+      # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+      timeBetweenEvictionRunsMillis: 60000
+      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+      minEvictableIdleTimeMillis: 300000
+      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+      maxEvictableIdleTimeMillis: 900000
+      # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+      validationQuery: SELECT 1 FROM DUAL
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      webStatFilter:
+        enabled: true
+      statViewServlet:
+        enabled: true
+        # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+        allow:
+        url-pattern: /druid/*
+        # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+        login-username: ruoyi
+        login-password: 123456
+      filter:
+        stat:
+          enabled: true
+          # 鎱QL璁板綍
+          log-slow-sql: true
+          slow-sql-millis: 1000
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true
+  # 璧勬簮淇℃伅
+  messages:
+    # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+    basename: i18n/messages
+  # 鏂囦欢涓婁紶
+  servlet:
+    multipart:
+      # 鍗曚釜鏂囦欢澶у皬
+      max-file-size: 1GB
+      # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+      max-request-size: 2GB
+  # 鏈嶅姟妯″潡
+  devtools:
+    restart:
+      # 鐑儴缃插紑鍏�
+      enabled: false
+  # redis 閰嶇疆
+  redis:
+    # 鍦板潃
+#    host: 114.0.0.1
+    host: 127.0.0.1
+    # 绔彛锛岄粯璁や负6379
+    port: 6379
+    # 鏁版嵁搴撶储寮�
+    database: 0
+    # 瀵嗙爜
+#    password: root2022!
+    password: 123456
+
+    # 杩炴帴瓒呮椂鏃堕棿
+    timeout: 10s
+    lettuce:
+      pool:
+        # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+        min-idle: 0
+        # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+        max-idle: 8
+        # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+        max-active: 8
+        # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+        max-wait: -1ms
+
+# token閰嶇疆
+token:
+  # 浠ょ墝鑷畾涔夋爣璇�
+  header: Authorization
+  # 浠ょ墝瀵嗛挜
+  secret: abcdefghijklmnopqrstuvwxyz
+  # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+  expireTime: 450
+  
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+  # 鎼滅储鎸囧畾鍖呭埆鍚�   鏍规嵁鑷繁鐨勯」鐩潵
+  typeAliasesPackage: com.ruoyi.**.pojo
+  # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+  mapperLocations: classpath*:mapper/**/*Mapper.xml
+  # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+  configLocation: classpath:mybatis/mybatis-config.xml
+  global-config:
+    enable-sql-runner: true
+    db-config:
+      id-type: auto
+  
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+  helperDialect: mysql
+  supportMethodsArguments: true
+  params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+  # 鏄惁寮�鍚痵wagger
+  enabled: true
+  # 璇锋眰鍓嶇紑
+  pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+  # 杩囨护寮�鍏�
+  enabled: true
+  # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+  excludes: /system/notice
+  # 鍖归厤閾炬帴
+  urlPatterns: /system/*,/monitor/*,/tool/*
+  
+# 浠g爜鐢熸垚
+gen:
+  # 浣滆��
+  author: ruoyi
+  # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+  packageName: com.ruoyi.project.system
+  # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+  autoRemovePre: false
+  # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+  tablePrefix: sys_
+  # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+  allowOverwrite: false
+
+file:
+  temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+#  temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+  upload-dir: /javaWork/product-inventory-management/file/prod/uploads
+#  upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index c79d967..446134b 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,4 +1,4 @@
 # Spring閰嶇疆
 spring:
   profiles:
-    active: dev
+    active: sqd

--
Gitblit v1.9.3