热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于ssm的进销存业务实现数据库

一、其实当我们在选择使用int的类型的时候,不论是int(3)还是int(11),它在数据库里面存储的都是4个字节的长度,在使用int(3)的时候如果你输入的是10,会默认给你存储

一、其实当我们在选择使用int的类型的时候,不论是int(3)还是int(11),它在数据库里面存储的都是4个字节的长度,在使用int(3)的时候如果你输入的是10,会默认给你存储位010,也就是说这个3代表的是默认的一个长度,当你不足3位时,会帮你补全,当你超过3位时,就没有任何的影响。 除了在存储的时候稍微有点区别外,在我们使用的时候是没有任何区别的。int(10)也可以代表        

2147483647这个    值int(11)也可以代表。要查看出不同效果记得在创建类型的时候加 zerofill这个值

表示用0填充,否则看不出效果的。我     们通常在创建数据库的时候都不会加入这个选项,所以可以 

说他们之间是没有区别的。

DELIMITER $$

USE `mypos2`$$

DROP PROCEDURE IF EXISTS `thjlcp_new`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `thjlcp_new`(syid INT)
BEGIN
IF syid>0 THEN
DELETE FROM syjlb WHERE syjlb.syid=syid;
ELSE
/*增加一条负销售*/
INSERT syjlb(syyid,gkid,sysj,zffs,ysje,ssje,yhje,xszt,zzid)
SELECT syyid,gkid,NOW(),zffs,-ysje,-ssje,-yhje,-1,zzid
FROM syjlb WHERE syjlb.syid=-syid;
SET @syid_new=@@identity;
/*修改销售状态以免多次退货*/
UPDATE syjlb SET xszt=@syid_new WHERE syjlb.syid=-syid;

/*在销售表里面插入负销售*/
INSERT INTO symxb(syid,hpid,xssl,dj,lsj) SELECT @syid_new,hpid,-xssl,dj,lsj
FROM symxb WHERE symxb.syid=-syid;

/*变更库存*/
DROP TABLE IF EXISTS lsb;
CREATE TEMPORARY TABLE lsb(hpid INT,xssl NUMERIC(18,3));
INSERT INTO lsb(hpid,xssl) SELECT hpid,SUM(xssl) FROM symxb WHERE symxb.syid=-syid GROUP BY hpid;
UPDATE hpkcb b1,lsb b2 SET b1.kcsl=b1.kcsl+b2.xssl WHERE b1.hpid=b2.hpid;

/*如果是会员,还原积分*/
SELECT gkid INTO @hyid FROM syjlb WHERE syjlb.syid=-syid;
SELECT ssje INTO @ssje FROM syjlb WHERE syjlb.syid=-syid;
IF @hyid>10000 THEN
UPDATE hyxxb SET knye=knye+@ssje,kyjf=kyjf-FLOOR(@ssje) WHERE hyxxb.hyid=@hyid;
END IF;
END IF;

END$$

DELIMITER ;

退货业务实现

CREATE DEFINER=`root`@`localhost` PROCEDURE `xsjlcp_new`(syyid int,hyid int,ysje DECIMAL(18,2),ssje DECIMAL(18,2),zffs TINYINT,xsmx VARCHAR(1000))
BEGIN
-- 与销售有关业务的维护

-- 1.Syjlb(收银记录表) insert syyid(售货员id) gkid(顾客id) ysje(应收金额) ssje(实收金额) zffs(支付方式)需要从用户界面传过来syyid gkid ysje ssje zffs
INSERT INTO syjlb(syyid,gkid,ysje,ssje,zffs) values(syyid,hyid,ysje,ssje,zffs);
SET @syid=@@identity;
DROP TABLE IF EXISTS lsb;
CREATE TEMPORARY TABLE lsb(hpid INT,xssl DECIMAL(18,3));
WHILE (xsmx<>'') DO
SET @k=POSITION(','IN xsmx);
SET @hpid=LEFT(xsmx,@k-1);
SET xsmx=SUBSTR(xsmx,@k+1);
SET @k=POSITION(','IN xsmx);
SET @xssl=LEFT(xsmx,@k-1);
INSERT INTO lsb VALUES(@hpid,@xssl);
SET xsmx=SUBSTR(xsmx,@k+1);
END WHILE;

-- 2.Symxb(收银明细表) insert syid(售货id) hpid(货品id) xssl(销售数量) dj(定价) lsj(零售价) 需要从用户界面传过来:hpid xssl
insert into symxb(syid,hpid,xssl,dj,lsj)
SELECT @syid,lsb.hpid,xssl,lsj,cxj from lsb,hpmcb where lsb.hpid=hpmcb.Hpid;

-- 3.hpkcb(货品库存表) update 依据hpid(货品id),xssl(销售数量)更新kcsl 需要从用户界面传过来:hpid xssl
DROP TABLE IF EXISTS lsb1;
CREATE TEMPORARY TABLE lsb1(hpid INT,xssl DECIMAL(18,3));
INSERT INTO lsb1 SELECT hpid,SUM(xssl) FROM lsb GROUP BY hpid;
UPDATE hpkcb b1,lsb1 b2 SET b1.kcsl=b1.kcsl-b2.xssl WHERE b1.hpid=b2.hpid;

-- 4.hyxxb(会员信息表) update 依据hyid(货品id),ssje(实收金额)更新knye(卡内余额),kyjf (可用积分)需要从用户界面传过来:hpid ssje
IF hyid>10000 THEN
UPDATE hyxxb SET knye=knye-ssje,kyjf=kyjf+FLOOR(ssje),scxfsj=NOW() WHERE `hyxxb`.`hyid`=hyid;
END IF;
END



推荐阅读
  • mysqldinitializeconsole失败_mysql03误删除了所有用户解决办法
    误删除了所有用户解决办法第一种方法(企业常用)1.将数据库down掉[rootdb03mysql]#etcinit.dmysqldstopShuttingdownMySQL..SU ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • springboot启动不了_Spring Boot + MyBatis 多模块搭建教程
    作者:枫本非凡来源:www.cnblogs.comorzlinp9717399.html一、前言1、创建父工程最近公司项目准备开始重构,框 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
author-avatar
Pingac
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有