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