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



推荐阅读
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
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社区 版权所有