CREATE TABLE `tb_proprice_his` (
|
`pro_id` bigint DEFAULT NULL COMMENT '小项id',
|
`old_price` varchar(255) DEFAULT NULL,
|
`new_price` varchar(255) DEFAULT NULL,
|
`time` datetime DEFAULT CURRENT_TIMESTAMP
|
);
|
|
|
CREATE TABLE `tb_project_price_history` (
|
`pro_id` bigint DEFAULT NULL COMMENT '小项id',
|
`old_price` varchar(255) DEFAULT NULL,
|
`new_price` varchar(255) DEFAULT NULL,
|
`time` datetime DEFAULT CURRENT_TIMESTAMP
|
) COMMENT='his同步价格历史记录表';
|
|
DROP PROCEDURE IF EXISTS `tb_check_hisproject`;
|
CREATE DEFINER=`root`@`%` PROCEDURE `tb_check_hisproject`()
|
BEGIN
|
# 子项临时表
|
DROP TEMPORARY TABLE IF EXISTS temp_tb_check_hisproject_proid;
|
# 大项临时表
|
DROP TEMPORARY TABLE IF EXISTS temp_tb_check_hisproject_parent_proid;
|
# 被停用的大项临时表
|
DROP TEMPORARY TABLE IF EXISTS temp_tb_check_hisproject_parent_updated;
|
|
CREATE TEMPORARY TABLE temp_tb_check_hisproject_proid(id BIGINT,p_id BIGINT);
|
CREATE TEMPORARY TABLE temp_tb_check_hisproject_parent_proid(id BIGINT);
|
CREATE TEMPORARY TABLE temp_tb_check_hisproject_parent_updated (id BIGINT);
|
|
# 提取项目表hisxmdm在his表不存在的小项
|
INSERT INTO temp_tb_check_hisproject_proid (id,p_id)
|
SELECT tp.pro_id,tp.pro_parent_id
|
FROM tj_project tp
|
WHERE tp.pro_status = 0
|
AND tp.pro_parent_id <> 0
|
AND tp.deleted = 0
|
AND tp.his_xmbm <> ''
|
AND tp.pro_parent_id = 1633660948860522504
|
AND NOT EXISTS (
|
SELECT 1
|
FROM ltkj_mxjfxmzd lm
|
WHERE lm.xmdm = tp.his_xmbm
|
);
|
|
# 根据提取的小项拿大项
|
INSERT INTO temp_tb_check_hisproject_parent_proid
|
SELECT p.p_id FROM temp_tb_check_hisproject_proid p GROUP BY p.p_id;
|
|
# 修改子项状态为停用
|
UPDATE tj_project t1 JOIN temp_tb_check_hisproject_proid t2 ON t1.pro_id = t2.id SET t1.pro_status = 1;
|
# 修改父项状态为停用
|
INSERT INTO temp_tb_check_hisproject_parent_updated (id)
|
SELECT p.pro_id
|
FROM tj_project p
|
JOIN temp_tb_check_hisproject_parent_proid t ON p.pro_id = t.id
|
WHERE NOT EXISTS (
|
SELECT 1
|
FROM tj_project AS child
|
WHERE child.pro_parent_id = p.pro_id
|
AND child.pro_status = 0
|
AND child.deleted = 0
|
AND child.his_xmbm <> ''
|
);
|
UPDATE tj_project p JOIN temp_tb_check_hisproject_parent_updated t ON p.pro_id = t.id SET p.pro_status = 1;
|
|
# 套餐、组合中移除未启用项目
|
DELETE FROM tj_package_project WHERE pro_id IN (SELECT id FROM temp_tb_check_hisproject_parent_updated);
|
DELETE FROM tj_grouping_pro WHERE pro_id IN (SELECT id FROM temp_tb_check_hisproject_parent_updated);
|
DELETE FROM tj_zhxmglpro WHERE pro_id IN (SELECT id FROM temp_tb_check_hisproject_parent_updated);
|
|
# 调用同步价格存储过程
|
CALL tb_hisprodj();
|
|
# 修改项目价格
|
-- UPDATE tj_project a
|
-- JOIN temp_tb_check_hisproject_parent_proid b ON a.pro_id = b.id
|
-- JOIN (
|
-- SELECT pro_parent_id, SUM(pro_price * sl) AS parentPrice
|
-- FROM tj_project
|
-- WHERE pro_parent_id != 0 and deleted=0 and pro_status=0
|
-- GROUP BY pro_parent_id
|
-- ) d ON a.pro_id = d.pro_parent_id
|
-- SET a.pro_price = d.parentPrice;
|
--
|
-- -- 4 同步套餐关联项目表价格
|
--
|
-- UPDATE tj_package_project a JOIN tj_project b ON a.pro_id=b.pro_id
|
--
|
-- SET a.price_now = b.pro_price * (a.limits/10),
|
-- a.price_ord = b.pro_price
|
-- WHERE a.pro_id= b.pro_id AND b.pro_id IN (select id from temp_tb_check_hisproject_parent_proid);
|
--
|
--
|
-- -- 5 同步套餐价格
|
-- UPDATE tj_package aa
|
-- JOIN (
|
-- SELECT
|
-- a.pac_id,
|
-- SUM( a.price_now ) pr,
|
-- sum(a.price_ord) olpr
|
-- FROM
|
-- tj_package_project a
|
-- GROUP BY
|
-- a.pac_id
|
-- ) bb
|
-- SET aa.price = bb.olpr ,
|
-- aa.new_price = bb.pr
|
-- WHERE
|
-- aa.pac_id = bb.pac_id;
|
--
|
-- -- 单位套餐明细项目
|
-- update tj_grouping_pro a
|
-- join tj_project b ON a.pro_id=b.pro_id
|
-- SET a.ys_price = b.pro_price * (a.limits/10),
|
-- a.pro_price = b.pro_price
|
-- WHERE a.pro_id= b.pro_id;
|
-- -- 单位套餐总价
|
-- UPDATE tj_dw_grouping aa
|
-- JOIN (
|
-- SELECT
|
-- a.grouping_id,
|
-- SUM( a.ys_price ) pr,
|
-- sum(a.pro_price) olpr
|
-- FROM
|
-- tj_grouping_pro a
|
-- GROUP BY
|
-- a.grouping_id
|
-- ) bb
|
-- SET aa.price = bb.olpr ,
|
-- aa.ys_price = bb.pr
|
-- WHERE
|
-- aa.id = bb.grouping_id;
|
--
|
-- DROP TEMPORARY TABLE IF EXISTS temp_tb_check_hisproject_proid;
|
-- DROP TEMPORARY TABLE IF EXISTS temp_tb_check_hisproject_parent_proid;
|
|
# 子项临时表
|
DROP TEMPORARY TABLE IF EXISTS temp_tb_check_hisproject_proid;
|
# 大项临时表
|
DROP TEMPORARY TABLE IF EXISTS temp_tb_check_hisproject_parent_proid;
|
# 被停用的大项临时表
|
DROP TEMPORARY TABLE IF EXISTS temp_tb_check_hisproject_parent_updated;
|
END
|
|
|
DROP PROCEDURE IF EXISTS `tb_hisprodj`;
|
CREATE DEFINER=`root`@`localhost` PROCEDURE `tb_hisprodj`()
|
BEGIN
|
|
-- 1 同步父项目对应子项的数量(项目数量和his中数量不一致的项目)
|
|
|
-- UPDATE tj_project a
|
-- LEFT JOIN tj_project b ON a.pro_id = b.pro_parent_id
|
-- LEFT JOIN ltkj_jfzhglmxjfxmzd c ON a.his_xmbm = c.zhxmdm AND c.xmdm=b.his_xmbm
|
-- LEFT JOIN ltkj_mxjfxmzd d ON c.xmdm = d.xmdm
|
-- SET b.sl=c.sl
|
-- WHERE
|
-- a.deleted = 0
|
-- AND b.deleted = 0
|
-- AND b.sl != c.sl
|
-- AND b.pro_name NOT LIKE '%费%' AND b.pro_name NOT LIKE '静脉采血';
|
|
-- 2 同步明细项目以及明细项目对应的父项目
|
|
DROP TEMPORARY TABLE IF EXISTS temp_tb_hisdj_parent_ids;
|
|
CREATE TEMPORARY TABLE temp_tb_hisdj_parent_ids (id BIGINT);
|
-- 查询his和体检单项价格不对应的所有大项id
|
INSERT INTO temp_tb_hisdj_parent_ids (id)
|
SELECT DISTINCT a.pro_parent_id
|
FROM tj_project a
|
JOIN ltkj_mxjfxmzd b ON a.his_xmbm = b.xmdm
|
WHERE a.deleted = 0 and a.pro_status=0 AND a.pro_parent_id != 0 AND a.pro_price <> b.xmdj ;
|
|
delete from tb_proprice_his;
|
-- 查询 所有子项目的价格及项目id
|
INSERT INTO tb_proprice_his(pro_id,old_price,new_price)
|
SELECT a.pro_id,a.pro_price,b.xmdj FROM tj_project a
|
JOIN ltkj_mxjfxmzd b ON a.his_xmbm = b.xmdm
|
join temp_tb_hisdj_parent_ids d on d.id = a.pro_parent_id
|
WHERE a.deleted = 0 and a.pro_status=0 AND a.pro_parent_id != 0 AND a.pro_price <> b.xmdj AND a.his_xmbm IS NOT NULL AND a.his_xmbm <> '';
|
|
UPDATE tj_project a
|
JOIN tb_proprice_his b ON a.pro_id = b.pro_id
|
SET a.pro_price = b.new_price,
|
a.hisdj = b.new_price
|
WHERE a.deleted = 0 and a.pro_status=0;
|
|
UPDATE tj_project a
|
JOIN temp_tb_hisdj_parent_ids b ON a.pro_id = b.id
|
JOIN (
|
SELECT pro_parent_id, SUM(pro_price * sl) AS parentPrice
|
FROM tj_project
|
WHERE pro_parent_id != 0 and deleted=0 and pro_status=0
|
GROUP BY pro_parent_id
|
) d ON a.pro_id = d.pro_parent_id
|
SET a.pro_price = d.parentPrice;
|
|
|
|
-- 4 同步套餐关联项目表价格
|
|
UPDATE tj_package_project a JOIN tj_project b ON a.pro_id=b.pro_id
|
|
SET a.price_now = b.pro_price * (a.limits/10),
|
a.price_ord = b.pro_price
|
WHERE a.pro_id= b.pro_id;
|
|
|
|
-- 5 同步套餐价格
|
UPDATE tj_package aa
|
JOIN (
|
SELECT
|
a.pac_id,
|
SUM( a.price_now ) pr,
|
sum(a.price_ord) olpr
|
FROM
|
tj_package_project a
|
GROUP BY
|
a.pac_id
|
) bb
|
SET aa.price = bb.olpr ,
|
aa.new_price = bb.pr
|
WHERE
|
aa.pac_id = bb.pac_id;
|
|
-- 单位套餐明细项目
|
update tj_grouping_pro a
|
join tj_project b ON a.pro_id=b.pro_id
|
SET a.ys_price = b.pro_price * (a.limits/10),
|
a.pro_price = b.pro_price
|
WHERE a.pro_id= b.pro_id;
|
-- 单位套餐总价
|
UPDATE tj_dw_grouping aa
|
JOIN (
|
SELECT
|
a.grouping_id,
|
SUM( a.ys_price ) pr,
|
sum(a.pro_price) olpr
|
FROM
|
tj_grouping_pro a
|
GROUP BY
|
a.grouping_id
|
) bb
|
SET aa.price = bb.olpr ,
|
aa.ys_price = bb.pr
|
WHERE
|
aa.id = bb.grouping_id;
|
|
DROP TEMPORARY TABLE IF EXISTS temp_tb_hisdj_parent_ids;
|
|
insert into tb_project_price_history
|
select * from tb_proprice_his;
|
|
|
END
|
|
|
# 将套餐 组合 单位套餐中 所有胸腹连透项目替换为胸部正位片
|
UPDATE tj_package_project SET pro_id = 1740177341251154261,price_now = 40,limits = 10,price_ord = 40 WHERE pro_id = 1633660948860522504;
|
UPDATE tj_grouping_pro a
|
JOIN (
|
SELECT id FROM tj_grouping_pro WHERE pro_id = 1633660948860522504
|
) b ON a.id = b.id
|
SET a.pro_id = 1740177341251154261,
|
a.pro_name = '胸部正位片',
|
a.pro_py_name = 'xbzwp',
|
a.pro_price = 40,
|
a.limits = 10,
|
a.ys_price = 40;
|
call tb_check_hisproject();
|