DELIMITER $$

USE `local_hnyz`$$

DROP FUNCTION IF EXISTS `GET_ORDER_STATUS`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `GET_ORDER_STATUS`(orderId VARCHAR(64)) RETURNS TINYINT-- varchar(64) CHARSET utf8
BEGIN
DECLARE seal_status VARCHAR(1) DEFAULT '';
DECLARE seal_total INT DEFAULT 0;-- 印章总数
DECLARE statu_cj INT DEFAULT 0;-- 承接数
DECLARE statu_zz INT DEFAULT 0;-- 制作数
DECLARE statu_jf INT DEFAULT 0;-- 交付数
DECLARE done INT DEFAULT 0;
DECLARE order_cancel_status TINYINT DEFAULT 0;-- 订单撤销状态
-- declare _err int default 0;
DECLARE cur_order_seals CURSOR FOR SELECT ls.status FROM se_seal_order_seal sos INNER JOIN lv_seal ls ON(sos.SEAL_ID=ls.id AND sos.SEAL_ORDER_ID = orderId);
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
-- declare continue handler for not found set done=1;
-- declare continue handler for sqlexception,sqlwarning
SELECT COUNT(ssos.`ID`) AS total INTO seal_total FROM se_seal_order_seal ssos WHERE ssos.`SEAL_ORDER_ID`=orderId;
SELECT so.`CANCEL_STATUS` INTO order_cancel_status FROM se_seal_order so WHERE so.`ID`=orderId;

-- 订单状态we取消状态,直接返回为撤回
IF order_cancel_status=1 THEN
RETURN 4;
END IF;
-- 订单中印章数量为0,直接返回为承接中
IF seal_total=0 THEN
RETURN 1;
END IF;

OPEN cur_order_seals;
-- repeat
sealLoop: LOOP
FETCH cur_order_seals INTO seal_status;
IF done=1 THEN
LEAVE sealLoop;
END IF;
-- select seal_status;
IF done!=1 THEN
IF seal_status = '2' THEN
SET statu_cj = statu_cj+1;
END IF;
IF seal_status = '3' THEN
SET statu_zz = statu_zz+1;
END IF;
IF (seal_status='1' OR seal_status='4' OR seal_status='5' OR seal_status='6' OR seal_status='7') THEN
SET statu_jf = statu_jf+1;
END IF;
END IF;
-- set done=0
-- UNTIL done end repeat;
END LOOP sealLoop;
CLOSE cur_order_seals;

IF statu_jf=seal_total THEN
RETURN 3;
ELSEIF (statu_cj=seal_total OR ((statu_cj+statu_zz)=seal_total) OR (statu_zz=seal_total) OR ((statu_zz+statu_jf)=seal_total) OR (statu_zz!=0) OR ((statu_cj+statu_jf)=seal_total)) THEN
RETURN 2;
ELSE
RETURN 1;
END IF;

END$$

DELIMITER ;

最新文章

  1. [LeetCode] Intersection of Two Arrays 两个数组相交
  2. Ajax请求数据
  3. import com.sun.image.codec.jpeg.JPEGCodec不通过 找不到包(转载)
  4. iOS 全局断点崩溃
  5. SDN论坛看到BW的问题及相关解答
  6. hadoop与云技术、云计算混肴澄清
  7. java中局部变量和成员变量主要是他们作用域的区别
  8. bootstrap 手风琴效果
  9. Linux计划任务Crontab实例详解教程
  10. ListView的item选中效果
  11. ios App 加急审核
  12. Oracle数据库-建库、建表空间,建用户
  13. 用JSP做后台管理系统
  14. 使用curl获取网站的http的状态码
  15. 在服务 ObtainData 实现的协定列表中找不到协定名称 "IMetadataExchange"。将 ServiceMetadataBehavior 添加到配置文件或直接添加到 ServiceHost,以启用对该协定的支持。
  16. [bug]Syntax error, unrecognized expression: input#ctl00$ContentPlaceHolder1$Pager_input
  17. Git 文件状态的转换
  18. java.lang.Exception: Socket bind failed
  19. shiro授权
  20. jsp中一个标签两种方式绑定两个click事件导致未执行的问题

热门文章

  1. Django学习笔记〇四——数据库ORM的使用(有待修改)
  2. mysql四种事务隔离级别
  3. [NOI2019]弹跳(KD-Tree)
  4. JS-语句二
  5. 系统学习python第一天学习笔记
  6. 吴裕雄--天生自然 JAVASCRIPT开发学习:Array(数组) 对象
  7. ansible删除目录下所有内容
  8. day68-CSS-float浮动,clear清除浮动,overflow溢出
  9. 解决Maven项目报错Perhaps you are running on a JRE rather than a JDK?
  10. amazon中文文档