AI训练编程:仓库管理系统

我使用的是当前最火的AI豆包
以下是我输入的AI语句:
用spring boot为框架 java script,前端与后端分开,前端运用html,后端有controller ,services,mapper,pojo,生成一个仓储管理系统原型系统,WEB管理系统界面要求采用统一风格的模板,该系统支持多个仓库的设立,统一设立物资台账,物资台账需包含物资编码、物资名称、规格、材质、供应商、品牌、物资分类,用户可以自定义物资的物资分类需限制不同的物资名称、规格、材质的物资不能设立相同的物资编码。仓库人员可进行入库作业、出库作业业务。入库单、出库单的业务单据编码系统自动生成,不能手工录入,可以采用年月日+流水号的方式。系统可查询按物资编码的库存信息、按物资分类汇总的库存信息、入库单信息、出库单信息,用MySQL生成完成下列表字段的设计:
(1)仓库表(支持多个仓库,每个仓库具有唯一编码);
(2)物资台账明细表(除了需求描述的要求外,需要有台账编号(唯一标识,四位年两位月两位日+顺序号(四位)例如:202402210022),操作类别(入库或者出库)数量,计量单位,存放地点(仓库号)等基本信息);
(3)物资类别表:需要满足不同的物资名称、规格、材质的物资不能设立相同的物资编码;页面要求:管理员、仓库管理人员统一登录界面登录后,显示各自不同的菜单项。
(2)管理员功能页:管理员可以实现仓库的新增、删除、修改基本信息管理,可以实现对物资类别的新增、删除、修改基本信息管理;
(3)仓库管理人员:入库操作,出库操作,统计查询功能。(1)新增仓库:增加新的仓库信息;(2分)
(2)删除仓库:删除仓库基本信息时,必须验证没有相关物资存储在该仓库中,提示用户不允许删除。(2分)
(3)修改仓库:仓库编号唯一不允许修改,并且验证没有相关物资存储在该仓库中,否则不允许修改仓库信息。(2分)
(4)新增物资类别:需要验证物资分类编码唯一,不同的物资名称、规格、材质的物资不能设立相同的物资编码两个条件,满足才可添加;(2分)
(5)删除物资类别信息:删除物资类别基本信息时,验证物资台账明细表中是否存在该类物资,如果存在提示用户不允许删除。(2分)
(6)修改物资类别基本信息:物资类别编号唯一不允许修改,并且验证物资台账明细表中是否存在该类物资,如果存在不允许修改该物资类别信息。(2分)
(7)入库操作:每类物资进行入库操作时,需要单独生成一条台账明细记录,保证相同的物资存放到同一仓库中,新物资入库时,则需要仓库人员选择存放仓库。(4分)
(8)出库操作:仓库人员进行出库操作时,选择物资类别,自动显示该类物资的数量余额,如果输入出库数量大于库存余额,提示用户无法进行出库,要求修改出库数量,单独生成一条台账明细记录。(4分)
(9)统计查询:仓库人员可输入物资编码查询该类物资的库存信息,显示物资类别编码、库存余额、计量单位,存放仓库等基本信息,点击该类物资编码,可以查看该类物资的详细入库单信息和出库单信息。(5分)
我重新构建了一下项目要求和使用的构建方法,以便能适配我自己的变成习惯
下面是AI的回复构建框架
src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── warehouse
│ │ ├── WarehouseApplication.java
│ │ ├── controller
│ │ │ ├── AdminController.java
│ │ │ └── WarehouseController.java
│ │ ├── service
│ │ │ ├── AdminService.java
│ │ │ └── WarehouseService.java
│ │ ├── mapper
│ │ │ ├── WarehouseMapper.java
│ │ │ ├── MaterialCategoryMapper.java
│ │ │ └── MaterialLedgerMapper.java
│ │ └── pojo
│ │ ├── Warehouse.java
│ │ ├── MaterialCategory.java
│ │ └── MaterialLedger.java
│ └── resources
│ ├── application.properties
│ └── mapper
│ ├── WarehouseMapper.xml
│ ├── MaterialCategoryMapper.xml
│ └── MaterialLedgerMapper.xml
下面是控制ai生成符合要求的sql建表语句:
!
WarehouseApplication.java
java
package com.example.warehouse;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class WarehouseApplication {
public static void main(String[] args) {
SpringApplication.run(WarehouseApplication.class, args);
}
}
pojo 包下的实体类示例
java
// Warehouse.java
package com.example.warehouse.pojo;

public class Warehouse {
private String warehouseId;
private String warehouseName;
private String location;

// Getters and Setters
public String getWarehouseId() {return warehouseId;
}public void setWarehouseId(String warehouseId) {this.warehouseId = warehouseId;
}public String getWarehouseName() {return warehouseName;
}public void setWarehouseName(String warehouseName) {this.warehouseName = warehouseName;
}public String getLocation() {return location;
}public void setLocation(String location) {this.location = location;
}

}

// MaterialCategory.java
package com.example.warehouse.pojo;

public class MaterialCategory {
private String categoryId;
private String materialName;
private String specification;
private String material;
private String supplier;
private String brand;

// Getters and Setters
public String getCategoryId() {return categoryId;
}public void setCategoryId(String categoryId) {this.categoryId = categoryId;
}public String getMaterialName() {return materialName;
}public void setMaterialName(String materialName) {this.materialName = materialName;
}public String getSpecification() {return specification;
}public void setSpecification(String specification) {this.specification = specification;
}public String getMaterial() {return material;
}public void setMaterial(String material) {this.material = material;
}public String getSupplier() {return supplier;
}public void setSupplier(String supplier) {this.supplier = supplier;
}public String getBrand() {return brand;
}public void setBrand(String brand) {this.brand = brand;
}

}

// MaterialLedger.java
package com.example.warehouse.pojo;

import java.math.BigDecimal;

public class MaterialLedger {
private String ledgerId;
private String materialCode;
private String operationType;
private BigDecimal quantity;
private String unit;
private String warehouseId;

// Getters and Setters
public String getLedgerId() {return ledgerId;
}public void setLedgerId(String ledgerId) {this.ledgerId = ledgerId;
}public String getMaterialCode() {return materialCode;
}public void setMaterialCode(String materialCode) {this.materialCode = materialCode;
}public String getOperationType() {return operationType;
}public void setOperationType(String operationType) {this.operationType = operationType;
}public BigDecimal getQuantity() {return quantity;
}public void setQuantity(BigDecimal quantity) {this.quantity = quantity;
}public String getUnit() {return unit;
}public void setUnit(String unit) {this.unit = unit;
}public String getWarehouseId() {return warehouseId;
}public void setWarehouseId(String warehouseId) {this.warehouseId = warehouseId;
}

}
mapper 包下的 Mapper 接口示例
java
// WarehouseMapper.java
package com.example.warehouse.mapper;

import com.example.warehouse.pojo.Warehouse;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface WarehouseMapper {
void addWarehouse(Warehouse warehouse);
void deleteWarehouse(String warehouseId);
void updateWarehouse(Warehouse warehouse);
Warehouse getWarehouseById(String warehouseId);
List getAllWarehouses();
}

// MaterialCategoryMapper.java
package com.example.warehouse.mapper;

import com.example.warehouse.pojo.MaterialCategory;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface MaterialCategoryMapper {
void addMaterialCategory(MaterialCategory category);
void deleteMaterialCategory(String categoryId);
void updateMaterialCategory(MaterialCategory category);
MaterialCategory getMaterialCategoryById(String categoryId);
List getAllMaterialCategories();
}

// MaterialLedgerMapper.java
package com.example.warehouse.mapper;

import com.example.warehouse.pojo.MaterialLedger;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface MaterialLedgerMapper {
void addMaterialLedger(MaterialLedger ledger);
List getLedgerByMaterialCode(String materialCode);
}
service 包下的 Service 接口及实现示例
java
// AdminService.java
package com.example.warehouse.service;

import com.example.warehouse.pojo.Warehouse;
import com.example.warehouse.pojo.MaterialCategory;

import java.util.List;

public interface AdminService {
void addWarehouse(Warehouse warehouse);
void deleteWarehouse(String warehouseId);
void updateWarehouse(Warehouse warehouse);
Warehouse getWarehouseById(String warehouseId);
List getAllWarehouses();

void addMaterialCategory(MaterialCategory category);
void deleteMaterialCategory(String categoryId);
void updateMaterialCategory(MaterialCategory category);
MaterialCategory getMaterialCategoryById(String categoryId);
List<MaterialCategory> getAllMaterialCategories();

}

// AdminServiceImpl.java
package com.example.warehouse.service.impl;

import com.example.warehouse.mapper.WarehouseMapper;
import com.example.warehouse.mapper.MaterialCategoryMapper;
import com.example.warehouse.pojo.Warehouse;
import com.example.warehouse.pojo.MaterialCategory;
import com.example.warehouse.service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class AdminServiceImpl implements AdminService {

@Autowired
private WarehouseMapper warehouseMapper;@Autowired
private MaterialCategoryMapper materialCategoryMapper;@Override
public void addWarehouse(Warehouse warehouse) {warehouseMapper.addWarehouse(warehouse);
}@Override
public void deleteWarehouse(String warehouseId) {// 验证没有相关物资存储在该仓库中// 这里需要添加相应的验证逻辑warehouseMapper.deleteWarehouse(warehouseId);
}@Override
public void updateWarehouse(Warehouse warehouse) {// 验证没有相关物资存储在该仓库中// 这里需要添加相应的验证逻辑warehouseMapper.updateWarehouse(warehouse);
}@Override
public Warehouse getWarehouseById(String warehouseId) {return warehouseMapper.getWarehouseById(warehouseId);
}@Override
public List<Warehouse> getAllWarehouses() {return warehouseMapper.getAllWarehouses();
}@Override
public void addMaterialCategory(MaterialCategory category) {// 验证物资分类编码唯一,不同的物资名称、规格、材质的物资不能设立相同的物资编码// 这里需要添加相应的验证逻辑materialCategoryMapper.addMaterialCategory(category);
}@Override
public void deleteMaterialCategory(String categoryId) {// 验证物资台账明细表中是否存在该类物资// 这里需要添加相应的验证逻辑materialCategoryMapper.deleteMaterialCategory(categoryId);
}@Override
public void updateMaterialCategory(MaterialCategory category) {// 验证物资台账明细表中是否存在该类物资// 这里需要添加相应的验证逻辑materialCategoryMapper.updateMaterialCategory(category);
}@Override
public MaterialCategory getMaterialCategoryById(String categoryId) {return materialCategoryMapper.getMaterialCategoryById(categoryId);
}@Override
public List<MaterialCategory> getAllMaterialCategories() {return materialCategoryMapper.getAllMaterialCategories();
}

}

// WarehouseService.java
package com.example.warehouse.service;

import com.example.warehouse.pojo.MaterialLedger;

import java.math.BigDecimal;
import java.util.List;

public interface WarehouseService {
void inboundOperation(String materialCode, BigDecimal quantity, String warehouseId);
void outboundOperation(String materialCode, BigDecimal quantity, String warehouseId);
List getInventoryByMaterialCode(String materialCode);
}

// WarehouseServiceImpl.java
package com.example.warehouse.service.impl;

import com.example.warehouse.mapper.MaterialLedgerMapper;
import com.example.warehouse.pojo.MaterialLedger;
import com.example.warehouse.service.WarehouseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.List;

@Service
public class WarehouseServiceImpl implements WarehouseService {

@Autowired
private MaterialLedgerMapper materialLedgerMapper;@Override
public void inboundOperation(String materialCode, BigDecimal quantity, String warehouseId) {// 生成台账明细记录MaterialLedger ledger = new MaterialLedger();// 生成唯一的 ledgerIdledger.setMaterialCode(materialCode);ledger.setOperationType("入库");ledger.setQuantity(quantity);ledger.setWarehouseId(warehouseId);// 设置计量单位等其他信息materialLedgerMapper.addMaterialLedger(ledger);
}@Override
public void outboundOperation(String materialCode, BigDecimal quantity, String warehouseId) {// 验证出库数量是否大于库存余额List<MaterialLedger> ledgers = materialLedgerMapper.getLedgerByMaterialCode(materialCode);BigDecimal balance = BigDecimal.ZERO;for (MaterialLedger ledger : ledgers) {if ("入库".equals(ledger.getOperationType())) {balance = balance.add(ledger.getQuantity());} else {balance = balance.subtract(ledger.getQuantity());}}if (quantity.compareTo(balance) > 0) {throw new RuntimeException("出库数量大于库存余额,无法进行出库");}// 生成台账明细记录MaterialLedger ledger = new MaterialLedger();// 生成唯一的 ledgerIdledger.setMaterialCode(materialCode);ledger.setOperationType("出库");ledger.setQuantity(quantity);ledger.setWarehouseId(warehouseId);// 设置计量单位等其他信息materialLedgerMapper.addMaterialLedger(ledger);
}@Override
public List<MaterialLedger> getInventoryByMaterialCode(String materialCode) {return materialLedgerMapper.getLedgerByMaterialCode(materialCode);
}

}
controller 包下的 Controller 示例
java
// AdminController.java
package com.example.warehouse.controller;

import com.example.warehouse.pojo.Warehouse;
import com.example.warehouse.pojo.MaterialCategory;
import com.example.warehouse.service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/admin")
public class AdminController {

@Autowired
private AdminService adminService;@PostMapping("/warehouse")
public void addWarehouse(@RequestBody Warehouse warehouse) {adminService.addWarehouse(warehouse);
}@DeleteMapping("/warehouse/{warehouseId}")
public void deleteWarehouse(@PathVariable String warehouseId) {adminService.deleteWarehouse(warehouseId);
}@PutMapping("/warehouse")
public void updateWarehouse(@RequestBody Warehouse warehouse) {adminService.updateWarehouse(warehouse);
}@GetMapping("/warehouse/{warehouseId}")
public Warehouse getWarehouseById(@PathVariable String warehouseId) {return adminService.getWarehouseById(warehouseId);
}@GetMapping("/warehouses")
public List<Warehouse> getAllWarehouses() {return adminService.getAllWarehouses();
}@PostMapping("/material-category")
public void addMaterialCategory(@RequestBody MaterialCategory category) {adminService.addMaterialCategory(category);
}@DeleteMapping("/material-category/{categoryId}")
public void deleteMaterialCategory(@PathVariable String categoryId) {adminService.deleteMaterialCategory(categoryId);
}@PutMapping("/material-category")
public void updateMaterialCategory(@RequestBody MaterialCategory category) {adminService.updateMaterialCategory(category);
}@GetMapping("/material-category/{categoryId}")
public MaterialCategory getMaterialCategoryById(@PathVariable String categoryId) {return adminService.getMaterialCategoryById(categoryId);
}@GetMapping("/material-categories")
public List<MaterialCategory> getAllMaterialCategories() {return adminService.getAllMaterialCategories();
}

}
经过一段时间的调试后效果如下:


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/894148.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我也不知取啥名

nginx-rewrite功能重定向:也叫url重定向,也叫url改写 未来需求:网站由http(80)---->https(443)http://www.baidu.com---->https://www.baidu.com根据用户客户端类型进行跳转如果用户客户端为ios、iPhone、Android,则访问m.www.baidu.com 否则:访问www.baidu.com新老…

为什么SINS机械编排中,姿态更新在速度更新和位置更新之后

无论是严恭敏老师的开源程序PSINS,还是牛小骥老师组开源的KF-GINS,在进行SINS机械编排时都是先更新速度和位置,再更新姿态,这是为什么呢? 可以从姿态、速度和位置更新的具体公式中看出其中缘由:进行姿态更新时需要通过平均位置和平均速度计算n系相对于i系的平均角速率(计…

python接口自动化系列(16):导入自动化测试框架并运行

本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074 部署练习项目 可以本机上虚拟机部署,也可以云服务器部署 https://www.cnblogs.com/uncleyong/p/17165143.htmlpython环境 本机安装python https://www.cnblogs.com/uncleyong/p/10778792.htmlallure-co…

python接口自动化系列(16):导入后,本地跑自动化测试框架

本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074 部署练习项目 可以本机上虚拟机部署,也可以云服务器部署 https://www.cnblogs.com/uncleyong/p/17165143.htmlpython环境 本机安装python https://www.cnblogs.com/uncleyong/p/10778792.htmlallure-co…

简单利用deepseek部署一个简单的增删改查系统

这是我首先呢,将我的需求以及框架搭建的内容告诉AI 一个基于Springboot利用Mybatis框架进行开发的小系统整体的后端工程界面如下:其次是登录界面: 对于仓库管理员和管理员二者登录之后进入不同的功能页面可以进行编辑、删除、查找的功能在对AI进行训练过程中,也是需要对他进…

并行高性能计算2并行化规划

2 并行化规划并行项目的规划步骤 版本控制和团队开发工作流程 了解性能容量和限制 制定程序并行化计划开发并行应用程序或使现有应用程序并行运行,一开始可能会感觉具有挑战性。初涉并行化的开发人员往往不知道从何入手,也不知道可能会遇到什么陷阱。本章重点介绍开发并行应用…

C6678学习笔记(2)启动模式配置

拨码开关和跳线接法 跳线接法 参考文献:TMDXEVM6678L_Technical_Reference_Manual_2V00.pdf(在附赠的光盘中) 需要注意的是网上搜的参考手册有部分是第一版的,PCB布局是有些差异的,例如LED灯的位置,以光盘中的使用手册为准。跳线是用来选择串口的,如图的这种接法选择的是…

D.S基本操作及存储结构总结

线性表 基本操作(12个)//线性表的基本操作 12个//构造一个空的线性表L void InitList(SqList &L);//销毁线性表L void DestroyList(SqList &L);//将线性表L重置为空表 void ClearList(SqList &L);////表判空:空 返回TRUE(1) 非空返回FALSE(0) Status ListEmpty(SqL…

day:14 环境的搭建

一、环境的介绍 (1)测试环境分类; a、开发环境 ,开发 b、测试环境 ,(也叫sit环境 ,uat环境) 测试人员 c、线上环境(也叫生成环境) 运营 (2)测试环境作用: a、用于功能测试 b、寻找bug c、编写测试用例等 (3)环境的结构: lampj=linux+apache+mysql+java 二、搭…

day:14 环境面试题

多有米项目相关面试题 1、请简述多有米环境的搭建、用到了哪些工具和流程介绍 Jdk 1.8以上 服务器 ( tomcat ,apache) 代码包 ( root前端,manage后端) 数据库 mysql 虚拟机 centos 数据包 简单流程:安装jdk---安装服务器---将代码包部署到服务器中…

任务1

实验任务1 源代码 task1_1.c1 //打印一个字符小人2 3 #include <stdio.h>4 int main()5 {6 printf(" O \n");7 printf("<H>\n");8 printf("I I\n");9 printf(" O \n"); 10 printf("<H>\n&…