DELIMITER $$web
USE `ld_wpfmgl_sys`$$sql
DROP PROCEDURE IF EXISTS `code_query`$$編碼
CREATE DEFINER=`root`@`%` PROCEDURE `code_query`(IN `$opfrom` INT, IN `$username` VARCHAR(50), IN `$password` VARCHAR(50), IN `$pagesize` INT, IN `$pageindex` INT, IN `$enterpriseID` INT, IN `$productSeriesID` INT, IN `$productID` INT, IN `$productStandard` VARCHAR(50), IN `$taskID` INT, IN `$code` VARCHAR(50))
COMMENT '3.35 編碼查詢 web'
BEGIN
/*********************參數定義區域(begin)*************************/
/*定義接收外部參數變量*/
DECLARE $_opfrom INT; # 命令請求來源
DECLARE $_username VARCHAR(50); # 用戶名
DECLARE $_password VARCHAR(50); # 密碼日誌
DECLARE $_pagesize INT DEFAULT 0; # 頁碼數
DECLARE $_pageindex INT DEFAULT 0; # 當前頁數
DECLARE $_enterpriseID INT DEFAULT 0; # 企業ID
DECLARE $_productSeriesID INT DEFAULT 0; # 產品系列ID
DECLARE $_productID INT DEFAULT 0; # 產品ID
DECLARE $_productStandard VARCHAR(50) ; # 產品規格
DECLARE $_taskID INT ; # 任務名稱
DECLARE $_code VARCHAR(50) ; # 碼值
/*內部使用變量*/
DECLARE $totalPages INT DEFAULT 0; # 返回用戶總數
DECLARE $sqltext VARCHAR(2000); # 拼接sql串
DECLARE $f_code_id INT DEFAULT 0 ; # 父碼ID
DECLARE $biaoshi INT DEFAULT 0; # 標識記號
DECLARE $t_id INT DEFAULT 0; # 任務id
/*錯誤代碼及描述
*/
DECLARE $_error INT DEFAULT 0;
#declare continue handler for sqlexception set $_error=1;
/*接收外部參數*/
SET $_opfrom =IFNULL($opfrom,0);
SET $_username=IFNULL($username,'');
SET $_password=IFNULL($PASSWORD,'');
SET $_pagesize=IFNULL($pagesize,0);
SET $_pageindex=IFNULL($pageindex,0);code
SET $_enterpriseID = IFNULL($enterpriseID ,0);
SET $_productSeriesID = IFNULL($productSeriesID,0);
SET $_productID = IFNULL($productID ,0);
SET $_productStandard = IFNULL($productStandard,'');
SET $_taskID = IFNULL($taskID ,0);
SET $_code = IFNULL($CODE ,'');
/*********************參數定義區域(end)***************************/
/*********************業務邏輯處理區域(begin)*********************/
#事務開始
SET $sqltext = 'select s.id as taskNO,bu.c_name as enterpriseName,ps.serie_name as proSeries,p.product_name as proName, p.product_spec as proStandard,pr.name as packRatio_name,pr.ratio as packRatio, s.batchNO as batchNO,s.subBatchNO as subBatchNO,s.workshop as workshop,s.proline as proline,s.team as team,s.proBeginDate,s.proEndDate,s.product_date as produceDate,s.expired_date as exprieDate, s.code_count as codeCount,(SELECT COUNT(1) FROM ld_bus_code_produced cp where cp.task_id = s.id ) as codeUsed,s.createBy as opName, s.state as status';
SET $sqltext = CONCAT($sqltext,' from ld_bus_task s join ld_bus_business bu on s.business_id=bu.id
join ld_bus_product_series ps on s.product_series_id=ps.id
join ld_bus_product p on s.product_id=p.id
join ld_bus_pack_ratio pr on s.ratio_id=pr.id where s.isvalid=1 ');
#1判斷任務ID是否爲空
IF($_taskID !=0)THEN
SET $sqltext=CONCAT($sqltext,' and s.id =',$_taskID);
#2判斷碼值是否爲空
ELSEIF($_code!='')THEN
#獲取碼值所屬任務
SELECT task_id FROM ld_bus_code_produced WHERE CODE =$_code
INTO $t_id;
SET $sqltext=CONCAT($sqltext,' and s.id =',$t_id);
#set $sqltext=concat($sqltext,' and cp.code= \'',$_code,'\'');
#3判斷產品規格是否爲空
ELSEIF($_productStandard!='')THEN
SET $sqltext=CONCAT($sqltext,' and p.product_spec= \'',$_productStandard,'\''); 事務
ELSE
SET $biaoshi = 1;
END IF;#1
產品
#任務號,編碼,產品規格都爲空時才判斷企業信息
IF($biaoshi=1)THEN
#判斷企業是否爲空
IF($_enterpriseID !=0)THEN
SET $sqltext=CONCAT($sqltext,' and s.business_id = ',$_enterpriseID);
END IF;
#判斷產品系列是否爲空
IF($_productSeriesID!=0)THEN
SET $sqltext=CONCAT($sqltext,' and s.product_series_id= ',$_productSeriesID);
END IF;
#判斷產品是否爲空
IF($_productID!=0)THEN
SET $sqltext=CONCAT($sqltext,' and s.product_id= ',$_productID);
END IF;it
END IF;
#set $sqltext = concat($sqltext,' where cp.isValid = 1 group by cp.task_id ');io
# 輸出拼接sql語句返回的總數
SET @querycount = CONCAT('select count(1) as totalPages from (',$sqltext,')a');
PREPARE querycount FROM @querycount;
EXECUTE querycount;
# 拼接分頁語句
SET $sqltext = CONCAT($sqltext,' order by s.createDate desc limit ',$_pageindex,',',$_pagesize); 變量
#輸出拼接的sql語句
SET @querysql = $sqltext;
PREPARE stmt FROM @querysql;
EXECUTE stmt;
/*********************業務邏輯處理區域(end)***********************/
/*********************事務報錯處理區域(begin)*********************/
#2 報錯處理
IF($_error=1) THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
/*********************事務報錯處理區域(end)***********************/
/*********************操做日誌記錄區域(begin)*********************/
INSERT INTO ld_sys_use_log(username,optname,optfrom,optdesc,errorCode)
VALUES($_username,'code_query',$_opfrom,'3.35 編碼查詢 web',$_error);
/*********************操做日誌記錄區域(end)***********************/
/*********************返回區域(begin)*****************************/
SELECT $_error AS errorCode;
/*********************返回區域(end)*******************************/
END$$
DELIMITER ;