From efdbff741855f2f9bf8e5849c3bcff595c247beb Mon Sep 17 00:00:00 2001 From: wangshuai <316612174@qq.com> Date: Fri, 14 Mar 2025 17:43:25 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/PurchaseOrderController.java | 65 +++++++ .../framework/config/SecurityConfig.java | 3 +- .../handle/AuthenticationEntryPointImpl.java | 7 + .../ruoyi/system/domain/PurchaseOrder.java | 163 ++++++++++++++++++ .../system/mapper/PurchaseOrderMapper.java | 16 ++ .../system/service/IPurchaseOrderService.java | 16 ++ .../impl/PurchaseOrderServiceImpl.java | 45 +++++ .../mapper/system/PurchaseOrderMapper.xml | 98 +++++++++++ sql/ai测试采购订单.sql | 27 +++ 9 files changed, 439 insertions(+), 1 deletion(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/PurchaseOrderController.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/PurchaseOrder.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/PurchaseOrderMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/IPurchaseOrderService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PurchaseOrderServiceImpl.java create mode 100644 ruoyi-system/src/main/resources/mapper/system/PurchaseOrderMapper.xml create mode 100644 sql/ai测试采购订单.sql diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/PurchaseOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/PurchaseOrderController.java new file mode 100644 index 0000000..1930e48 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/PurchaseOrderController.java @@ -0,0 +1,65 @@ +package com.ruoyi.web.controller.system; + +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.system.domain.PurchaseOrder; +import com.ruoyi.system.service.IPurchaseOrderService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +@RestController +@RequestMapping("/system/purchase") +public class PurchaseOrderController extends BaseController { + @Autowired + private IPurchaseOrderService purchaseOrderService; + +// @PreAuthorize("@ss.hasPermi('dhc:area:list')") + @GetMapping("/list") + public TableDataInfo list(PurchaseOrder purchaseOrder) { + startPage(); + List list = purchaseOrderService.selectPurchaseOrderList(purchaseOrder); + logger.info("查询采购订单列表结果===:{}", list.toString()); + + TableDataInfo tableDataInfo = getDataTable(list); + logger.info("getDataTable返回结果===:{}", tableDataInfo.toString()); + + return tableDataInfo; + } + + @Log(title = "采购订单", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public AjaxResult export(PurchaseOrder purchaseOrder) { + List list = purchaseOrderService.selectPurchaseOrderList(purchaseOrder); + ExcelUtil util = new ExcelUtil(PurchaseOrder.class); + return util.exportExcel(list, "采购订单数据"); + } + + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { + return AjaxResult.success(purchaseOrderService.selectPurchaseOrderById(id)); + } + + @Log(title = "采购订单", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody PurchaseOrder purchaseOrder) { + return toAjax(purchaseOrderService.insertPurchaseOrder(purchaseOrder)); + } + + @Log(title = "采购订单", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody PurchaseOrder purchaseOrder) { + return toAjax(purchaseOrderService.updatePurchaseOrder(purchaseOrder)); + } + + @Log(title = "采购订单", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { + return toAjax(purchaseOrderService.deletePurchaseOrderByIds(ids)); + } +} \ No newline at end of file diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java index 511842b..527ef23 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java @@ -111,7 +111,8 @@ public class SecurityConfig .authorizeHttpRequests((requests) -> { permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll()); // 对于登录login 注册register 验证码captchaImage 允许匿名访问 - requests.antMatchers("/login", "/register", "/captchaImage").permitAll() + requests.antMatchers("/login", "/register", "/captchaImage","/system/purchase/list").permitAll() +// requests.antMatchers("/login", "/register", "/captchaImage").permitAll() // 静态资源,可匿名访问 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/AuthenticationEntryPointImpl.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/AuthenticationEntryPointImpl.java index 93b7032..20b0c2a 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/AuthenticationEntryPointImpl.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/AuthenticationEntryPointImpl.java @@ -27,6 +27,13 @@ public class AuthenticationEntryPointImpl implements AuthenticationEntryPoint, S public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) throws IOException { + // 获取当前线程的调用堆栈信息 + StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); + for (StackTraceElement element : stackTrace) { + System.out.println(element.getClassName() + "." + element.getMethodName() + + "(" + element.getFileName() + ":" + element.getLineNumber() + ")"); + } + int code = HttpStatus.UNAUTHORIZED; String msg = StringUtils.format("请求访问:{},认证失败,无法访问系统资源", request.getRequestURI()); ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.error(code, msg))); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/PurchaseOrder.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/PurchaseOrder.java new file mode 100644 index 0000000..e85da89 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/PurchaseOrder.java @@ -0,0 +1,163 @@ +package com.ruoyi.system.domain; + +import java.math.BigDecimal; +import java.util.Date; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +public class PurchaseOrder extends BaseEntity { + private static final long serialVersionUID = 1L; + + @Excel(name = "主键ID") + private Long id; + + @Excel(name = "滚动计划号") + private String planNo; + + @Excel(name = "采购凭证号") + private String purchaseNo; + + @Excel(name = "供应商编码") + private String supplierCode; + + @Excel(name = "供应商名称") + private String supplierName; + + @Excel(name = "整机编码") + private String machineCode; + + @Excel(name = "内部型号") + private String internalModel; + + @Excel(name = "数量") + private Integer quantity; + + @Excel(name = "意向调整时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date adjustmentTime; + + @Excel(name = "未税单价") + private BigDecimal price; + + @Excel(name = "总金额") + private BigDecimal totalAmount; + + @Excel(name = "仓库编码") + private String warehouseCode; + + @Excel(name = "仓库名称") + private String warehouseName; + + private String delFlag; + + // getter和setter方法 + public Long getId() { + return id; + } + + public String getPlanNo() { + return planNo; + } + + public String getPurchaseNo() { + return purchaseNo; + } + + public String getSupplierCode() { + return supplierCode; + } + + public String getSupplierName() { + return supplierName; + } + + public String getMachineCode() { + return machineCode; + } + + public String getInternalModel() { + return internalModel; + } + + public Integer getQuantity() { + return quantity; + } + + public Date getAdjustmentTime() { + return adjustmentTime; + } + + public BigDecimal getPrice() { + return price; + } + + public BigDecimal getTotalAmount() { + return totalAmount; + } + + public String getWarehouseCode() { + return warehouseCode; + } + + public String getWarehouseName() { + return warehouseName; + } + + public String getDelFlag() { + return delFlag; + } + public void setId(Long id) { + this.id = id; + } + + public void setPlanNo(String planNo) { + this.planNo = planNo; + } + + public void setPurchaseNo(String purchaseNo) { + this.purchaseNo = purchaseNo; + } + + public void setSupplierCode(String supplierCode) { + this.supplierCode = supplierCode; + } + + public void setSupplierName(String supplierName) { + this.supplierName = supplierName; + } + + public void setMachineCode(String machineCode) { + this.machineCode = machineCode; + } + + public void setInternalModel(String internalModel) { + this.internalModel = internalModel; + } + + public void setQuantity(Integer quantity) { + this.quantity = quantity; + } + + public void setAdjustmentTime(Date adjustmentTime) { + this.adjustmentTime = adjustmentTime; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } + + public void setTotalAmount(BigDecimal totalAmount) { + this.totalAmount = totalAmount; + } + + public void setWarehouseCode(String warehouseCode) { + this.warehouseCode = warehouseCode; + } + + public void setWarehouseName(String warehouseName) { + this.warehouseName = warehouseName; + } + + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/PurchaseOrderMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/PurchaseOrderMapper.java new file mode 100644 index 0000000..c27f580 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/PurchaseOrderMapper.java @@ -0,0 +1,16 @@ +package com.ruoyi.system.mapper; + +import java.util.List; +import com.ruoyi.system.domain.PurchaseOrder; + +public interface PurchaseOrderMapper { + public PurchaseOrder selectPurchaseOrderById(Long id); + + public List selectPurchaseOrderList(PurchaseOrder purchaseOrder); + + public int insertPurchaseOrder(PurchaseOrder purchaseOrder); + + public int updatePurchaseOrder(PurchaseOrder purchaseOrder); + + public int deletePurchaseOrderByIds(Long[] ids); +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IPurchaseOrderService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IPurchaseOrderService.java new file mode 100644 index 0000000..53b7d56 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IPurchaseOrderService.java @@ -0,0 +1,16 @@ +package com.ruoyi.system.service; + +import java.util.List; +import com.ruoyi.system.domain.PurchaseOrder; + +public interface IPurchaseOrderService { + public PurchaseOrder selectPurchaseOrderById(Long id); + + public List selectPurchaseOrderList(PurchaseOrder purchaseOrder); + + public int insertPurchaseOrder(PurchaseOrder purchaseOrder); + + public int updatePurchaseOrder(PurchaseOrder purchaseOrder); + + public int deletePurchaseOrderByIds(Long[] ids); +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PurchaseOrderServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PurchaseOrderServiceImpl.java new file mode 100644 index 0000000..5c5fc97 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PurchaseOrderServiceImpl.java @@ -0,0 +1,45 @@ +package com.ruoyi.system.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.system.mapper.PurchaseOrderMapper; +import com.ruoyi.system.domain.PurchaseOrder; +import com.ruoyi.system.service.IPurchaseOrderService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Service +public class PurchaseOrderServiceImpl implements IPurchaseOrderService { + private static final Logger logger = LoggerFactory.getLogger(PurchaseOrderServiceImpl.class); + + @Override + public List selectPurchaseOrderList(PurchaseOrder purchaseOrder) { + List result = purchaseOrderMapper.selectPurchaseOrderList(purchaseOrder); + logger.info("查询采购订单列表结果:{}", result); + return result; + } + @Autowired + private PurchaseOrderMapper purchaseOrderMapper; + + @Override + public PurchaseOrder selectPurchaseOrderById(Long id) { + return purchaseOrderMapper.selectPurchaseOrderById(id); + } + + + @Override + public int insertPurchaseOrder(PurchaseOrder purchaseOrder) { + return purchaseOrderMapper.insertPurchaseOrder(purchaseOrder); + } + + @Override + public int updatePurchaseOrder(PurchaseOrder purchaseOrder) { + return purchaseOrderMapper.updatePurchaseOrder(purchaseOrder); + } + + @Override + public int deletePurchaseOrderByIds(Long[] ids) { + return purchaseOrderMapper.deletePurchaseOrderByIds(ids); + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/system/PurchaseOrderMapper.xml b/ruoyi-system/src/main/resources/mapper/system/PurchaseOrderMapper.xml new file mode 100644 index 0000000..ee45216 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/PurchaseOrderMapper.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, plan_no, purchase_no, supplier_code, supplier_name, machine_code, + internal_model, quantity, adjustment_time, price, total_amount, + warehouse_code, warehouse_name, create_by, create_time, update_by, + update_time, remark, del_flag + from purchase_order + + + + + + + + insert into purchase_order( + plan_no, purchase_no, supplier_code, supplier_name, machine_code, internal_model, + quantity, adjustment_time, price, total_amount, warehouse_code, warehouse_name, + create_by, create_time, remark, del_flag + ) values ( + #{planNo}, #{purchaseNo}, #{supplierCode}, #{supplierName}, #{machineCode}, #{internalModel}, + #{quantity}, #{adjustmentTime}, #{price}, #{totalAmount}, #{warehouseCode}, #{warehouseName}, + #{createBy}, sysdate(), #{remark}, '0' + ) + + + + update purchase_order + + plan_no = #{planNo}, + purchase_no = #{purchaseNo}, + supplier_code = #{supplierCode}, + supplier_name = #{supplierName}, + machine_code = #{machineCode}, + internal_model = #{internalModel}, + quantity = #{quantity}, + adjustment_time = #{adjustmentTime}, + price = #{price}, + total_amount = #{totalAmount}, + warehouse_code = #{warehouseCode}, + warehouse_name = #{warehouseName}, + update_by = #{updateBy}, + update_time = sysdate() + + where id = #{id} + + + + update purchase_order set del_flag = '2' where id in + + #{id} + + + \ No newline at end of file diff --git a/sql/ai测试采购订单.sql b/sql/ai测试采购订单.sql new file mode 100644 index 0000000..a819a3a --- /dev/null +++ b/sql/ai测试采购订单.sql @@ -0,0 +1,27 @@ +--DROP TABLE IF EXISTS purchase_order; +CREATE TABLE purchase_order +( + id bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + plan_no varchar(32) NOT NULL COMMENT '滚动计划号', + purchase_no varchar(32) NOT NULL COMMENT '采购凭证号', + supplier_code varchar(32) NOT NULL COMMENT '供应商编码', + supplier_name varchar(100) NOT NULL COMMENT '供应商名称', + machine_code varchar(32) NOT NULL COMMENT '整机编码', + internal_model varchar(50) NOT NULL COMMENT '内部型号', + quantity int NOT NULL DEFAULT '0' COMMENT '数量', + adjustment_time datetime DEFAULT NULL COMMENT '意向调整时间', + price decimal(10, 2) NOT NULL DEFAULT '0.00' COMMENT '未税单价', + total_amount decimal(10, 2) NOT NULL DEFAULT '0.00' COMMENT '总金额', + warehouse_code varchar(32) NOT NULL COMMENT '仓库编码', + warehouse_name varchar(100) NOT NULL COMMENT '仓库名称', + create_by varchar(64) DEFAULT '' COMMENT '创建者', + create_time datetime DEFAULT NULL COMMENT '创建时间', + update_by varchar(64) DEFAULT '' COMMENT '更新者', + update_time datetime DEFAULT NULL COMMENT '更新时间', + remark varchar(500) DEFAULT NULL COMMENT '备注', + del_flag char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)', + PRIMARY KEY (id), + UNIQUE KEY idx_purchase_no (purchase_no), + KEY idx_plan_no (plan_no), + KEY idx_supplier_code (supplier_code) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='采购订单表'; \ No newline at end of file