diff --git a/mallinkAdmin/src/main/resources/db/migration/V201904221915__UPDATE_CONTRACT.sql b/mallinkAdmin/src/main/resources/db/migration/V201904221915__UPDATE_CONTRACT.sql new file mode 100644 index 000000000..827a984c5 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201904221915__UPDATE_CONTRACT.sql @@ -0,0 +1,96 @@ +DELIMITER $$ +DROP PROCEDURE IF EXISTS `contract_update`$$ +CREATE PROCEDURE `contract_update`() +LANGUAGE SQL +NOT DETERMINISTIC +CONTAINS SQL +SQL SECURITY DEFINER +COMMENT '' +begin + #定义一个循环结束的标记 + declare done int default false; + #定义一个循环总条数 + declare total int; + #定义一个循环开始值 + declare i int; + #定义商铺相关字段 + declare _shop_id bigint(64); + declare _shop_number varchar(100); + declare _build_area varchar(100); + declare _operation_area varchar(100); + declare _floor varchar(100); + declare _img_url varchar(1024); + declare _addr varchar(100); + declare _type smallint(2); + declare _status smallint(2); + declare _manager varchar(100); + declare _manager_phone varchar(100); + declare _building varchar(100); + #租赁合同相关信息 + declare _rent_id bigint(64); + declare _rent_area varchar(100); + declare _adjust_ratio json; + declare _price decimal(10,2); + declare _deposit decimal(10,2); + + declare _adjust_ratio_new json; + declare _adjust_ratio_value decimal(10,2); + + + declare rent_cursor cursor for select id,shop_id from wx_rent_contract where rent_shop_type=1; + declare rent_total_cursor cursor for select count(*) total from wx_rent_contract where rent_shop_type=1; + declare continue handler for not found set done = true; + + set i=1; + open rent_cursor; + open rent_total_cursor; + fetch rent_cursor into _rent_id,_shop_id; + fetch rent_total_cursor into total; + repeat + if not done then + #查询商铺信息 + select s.shop_number,s.build_area,s.img_url,s.operation_area,s.status,b.building_name,f.floor_name, + s.manager,s.manager_phone,type,s.addr + into _shop_number,_build_area,_img_url,_operation_area,_status,_building,_floor,_manager,_manager_phone,_type,_addr + from wx_shop s left join wx_mall_building b on s.building=b.id left join wx_mall_floor f on s.floor=f.id + where s.id=_shop_id; + #查询合同信息 + select rent_area,adjust_ratio,truncate(price/100,2),truncate(deposit/100,2) into _rent_area,_adjust_ratio,_price,_deposit + from wx_rent_contract where id=_rent_id; + #解析年调整比例 + set @j=0; + set _adjust_ratio_new = json_array(); + while (select json_length(_adjust_ratio))>0 and @j<>(select json_length(_adjust_ratio)) do + set @ratio_index=concat("$[",@j,"]"); + select truncate(json_extract(_adjust_ratio,@ratio_index)/100,2) into _adjust_ratio_value; + select json_array_insert(_adjust_ratio_new,@ratio_index,_adjust_ratio_value) into _adjust_ratio_new; + set @j=@j+1; + end while; + #更新租赁合同信息 + update wx_rent_contract set rent_info=json_array(JSON_OBJECT('shopId',_shop_id,'id',_shop_id,'shopNumber',_shop_number, + 'price',_price,'deposit',_deposit,'adjustRatio',_adjust_ratio_new,'addr',_addr,'buildArea',_build_area,'imgUrl',_img_url, + 'operationArea',_operation_area,'building',_building,'floor',_floor,'manager',_manager,'managerPhone',_manager_phone, + 'type',_type,'status',_status,'rentArea',_rent_area)) + where id=_rent_id; + #更新物业信息 + update wx_property_contract set rent_info=json_array(JSON_OBJECT('shopId',_shop_id,'id',_shop_id,'shopNumber',_shop_number, + 'price',_price,'deposit',_deposit,'adjustRatio',_adjust_ratio_new,'addr',_addr,'buildArea',_build_area,'imgUrl',_img_url, + 'operationArea',_operation_area,'building',_building,'floor',_floor,'manager',_manager,'managerPhone',_manager_phone, + 'type',_type,'status',_status,'rentArea',_rent_area)) + where rent_contract_id=_rent_id; + fetch rent_cursor into _rent_id,_shop_id; + end if; + IF i<>total then + set done =false; + set i=i+1; + else + set done = true; + end if; + until done + end repeat; + close rent_cursor; + close rent_total_cursor; + +end $$ +DELIMITER ; +call contract_update(); \ No newline at end of file