热门标签 | 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



推荐阅读
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 本实验主要探讨了二叉排序树(BST)的基本操作,包括创建、查找和删除节点。通过具体实例和代码实现,详细介绍了如何使用递归和非递归方法进行关键字查找,并展示了删除特定节点后的树结构变化。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • 本文详细探讨了VxWorks操作系统中双向链表和环形缓冲区的实现原理及使用方法,通过具体示例代码加深理解。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
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社区 版权所有